[crossfire] Player creation bug

Mark Wedel mwedel at sonic.net
Wed Feb 23 00:38:05 CST 2011

On 02/22/11 01:10 AM, Tolga Dalman wrote:
> Hash: SHA1
> (resending to the list)
> On 22.02.2011 07:55, Mark Wedel wrote:
>>> On 02/13/11 03:47 AM, Tolga Dalman wrote:
>>>>> - - create new character: fire hatchling/monk
>>>>> - - maximize str, dex and con
>>>>> - - set remaining stats so that they are 1 in total
>>>>> - - distribute the remaining points to pow
>>>>> This will fail, because the stats are checked after applying the
>>>>> race (but not the class). The attached patch fixes this issue.
>>>   I'm not quite sure if I understand the problem or not.
>>>   I tried to do that, and got a message saying stat to low.  That is
>>> correct behavior IMO.
> Why is that correct ? Having total stats with at least 1 point should
> not yield an error! The attached patch removes the first (and thus
> redundant) stat check.

  Ok - I understand the problem better now - I thought you were keeping the stat 
values (the values the player sets) to minimum, but you are talking final result.

  So the way it currently works is broken - you are correct in that as long as 
the end result is valid, it should let you create the character.

  However, looking at this more, it appears that the checking of stat bounds for 
the class is completely broken right now.  The plus side is that most class 
bonuses/penalties are minor, so a character does not get away with much.

  But with the change you have, since the check is only done after applying the 
class, it completely breaks it for the race also.

  I think the fix for that later problem is that allowed_class() should check 
op->contr->orig_stats values - fix_object() will never put a stat value (below 
min) in op->stats, and fix_object() is called as part of giving initial items.

  But I need to look at the more - allowed_class() is also used by legacy 
character creation, and I'm not sure if changing that would have some other 
unintended consequence.

>>>>> 4. disallow negative unspent stat points. This should be a simple
>>>>> check in the
>>>>>      '+' buttons.
>>>   And conversely, on point #4, that compounds the issue.  Eg, I select
>>> troll, it updates the stats to minimum values - now I have negative stat
>>> points.  So now it goes and decreases the high stats to make things
>>> legal.  If I go back to human, then those stat values are really nothing
>>> close to what I had put in before.
>>>   I'm not 100% sure what is the best way here - each one has its pros and
>>> cons.  My initial implementation of that was to make it very easy to
>>> experiment with different combos, which means it does allow illegal
>>> values when playing around.
> While it is great for a developer not to have automatic attribute
> adjustments, for a user it does not make any sense.

  But even new users, they might want to play around with different races and 
classes.  But as said, I'm not of any strong opinion on that - maybe a 
compromise might be a button like 'fix attributes' which does put them in valid 

>>>>> 5. "Choose starting map" should be replaced by the actual drop-down
>>>>> menu with
>>>>>      "Scorn" as default value.
>>>   I had issues fitting the description in.  I had also thought that maybe
>>> at some point, that even gets extended with an image of some sort
>>> representing the map choice.
> I understand. Why not add another button for detail information on the
> particular choice ?

  I'm not sure how many people would actually read it.  But I also do expect 
that as time passes, there will be more than 1 window for character creation - 
if/when the new skill system is done, will likely need to have some way to let 
characters set up their skills, etc.

More information about the crossfire mailing list