Re: [crossfire] Character names, was Re: Changing connection texts

2010-01-14 Thread Nicolas Weeger
   Yep - that is my next step or work.

   The only complication in all of this is player name uniqueness.  If we go
 by the idea of storing player files as lower case names, so there can only
 be one 'Mark' player on a server, regardless of capitalization (mark, mArk,
 etc), ideally you want to convert all existing player files to be all lower
 case.

Seems ok by me - any storage mechanism is ok as long as it works :)



   The problems we run into is that tends not to be done/not clear what
 'some time' is.  6 months?  3 years?

Add near your checking code:
if (current_date() = may 2010) {
LOG(llevError, obsolete code detected!\n);
exit(5);
}

Issue solved :)


   But there are really 2 cases of legacy supported needed - legacy support
 for login without the account support (for old clients), and player file
 naming.

No account support shouldn't be too hard to compensate.
Clients can reply to arbitrary queries, IIRC - so just emulate accounts 
through that.


   The second one, as I note above, can be eliminated with some scripts. 
 The first one probably needs some support - maybe 6 months after we release
 a client that supports it?

If it's on the trunk branch, I'd suggest to remove it after some days only. 
Trunk is supposed to be unstable.


Or, another option I'd prefer, we forget 1.x, declare current trunk 2.0, and 
then start fixing stuff.


Nicolas
-- 
http://nicolas.weeger.org [Mon p'tit coin du web]


signature.asc
Description: This is a digitally signed message part.
___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: [crossfire] Conventions for exits in town

2010-01-14 Thread Nicolas Weeger
   I think as much as anything else, the meaning of the exit (based on
 appearance) should be consistent.

Yes, indeed.

   For example, stairs no matter where they are, should require an explicit
 apply to use them

   Oak doors could always be auto apply, etc.  Buildings are always explicit
 apply, and so on.

I'd say explicit apply for all things you'd expect to use/apply in real life: 
doors, stairs, ladders, boats, ...
On the other hands, things like teleporters, shop mats, whirlwind exits aren't 
expected to need to be applied, IMO.


   So as a player, if I see an oakdoor, I know what it will (or won't do) no
 matter where I am.

   Beyond that, having more consistency based on location sounds good.  It
 may just mean updating all the maps to have the appropriate exit for their
 location.

Yes, some massive update :)


Nicolas
-- 
http://nicolas.weeger.org [Mon p'tit coin du web]


signature.asc
Description: This is a digitally signed message part.
___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: [crossfire] TODO list

2010-01-14 Thread Dany Talbot
move to Qt/C++, to not reinvent the wheel all the time; and massively
clean the code

such as this:
(naive draft)
(the object superstructure need to be separated into a base 'object'
class - and then you'd have God : Object inheriting from it and adding
stuff specific to God that are in the former object superstructure in
the C code. Also I didn't check the code to rework the function
parameters - that is why it is called a naive draft).


#include iostream
#include global
#include living
#include object
#include spells
#include sounds
// TODO: other includes

/* TODO:
move

 * Compares 2 strings.
 * @param s1
 * @param s2
 * strings to compare.
 * @return
 * 1 if s1 and s2 are the same - either both NULL, or strcmp( ) == 0.

static int same_string(const char *s1, const char *s2) {
if (s1 == NULL)
return s2 == NULL;
else
return s2 != NULL  strcmp(s1, s2) == 0;
}

to an utility function/class
*/

class God : Object
{
 public:
// default constructor
Gods();

// default destructor
~Gods();

// operator overload '=='

// operator overload '='

// accesors

// modifiers

Archetype *determine_holy_arch(const Object *god, std::string type);
const God *find_god(std::string name);
const std::string determine_god(Object *op);
int become_follower(Object *op, const Object *new_god);
int tailor_god_spell(Object *spellop, Object *caster);
void pray_at_altar(Object *pl, Object *altar, Object *skill);

private:
const std::string get_god_for_race(std::string race);
int _follower_has_similar_item(Object *op, Object *item);
int _follower_level_to_enchantments(int level, int difficulty);
int _god_enchants_weapon(Object *op, const Object *god, Object
*tr, Object *skill);
int _god_examines_item(const Object *god, Object *item);
int _god_examines_priest(Object *op, const Object *god);
int _god_gives_present(Object *op, const Object *god, Treasure *tr);
int _god_removes_curse(Object *op, int remove_damnation);
int _improve_weapon_magic(Object *op, Object *tr, Object *weapon,
Object *skill);
int _lookup_god_by_name(std::string name);
int _worship_forbids_use(Object *op, Object *exp_obj, uint32 flag,
const std::string string);
void _follower_remove_given_items(Object *pl, Object *op, const
Object *god);
void _god_intervention(Object *op, const Object *god, Object *skill);
void _remove_special_prayers(Object *op, const Object *god);
void _stop_using_item(Object *op, int type, int number);
void _update_priest_flag(const Object *god, Object *exp_ob, uint32 flag);
};



On Thu, Jan 14, 2010 at 5:26 PM, Nicolas Weeger
nicolas.wee...@laposte.net wrote:
 Hello.

 Considering the low feedback/participation on the list, I'm totally changing
 how I work :)


 I've put my plans for the future at
 http://wiki.metalforge.net/doku.php/user:ryo:todo and I intend to do them,
 except maybe the Various ones.

 If you have questions, feel free to ask me (this list or privately), but else
 I'll just implement as I see fit and discuss after if needed :)



 Nicolas
 --
 http://nicolas.weeger.org [Mon p'tit coin du web]

 ___
 crossfire mailing list
 crossfire@metalforge.org
 http://mailman.metalforge.org/mailman/listinfo/crossfire





-- 
Dany Talbot, Quebec, Canada [ crystal...@gmail.com ]
Per aspera ad astra

___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: [crossfire] TODO list

2010-01-14 Thread Mark Wedel
Dany Talbot wrote:
 move to Qt/C++, to not reinvent the wheel all the time; and massively
 clean the code

  I know someone sort of looked into doing crossfire in C++ several years back. 
  Their opinion was it was probably easier to start writing the code from 
scratch vs trying to convert the existing code.  I haven't looked at it enough 
to say for sure, but I could certainly see it may be easier to start from 
scratch but keep in archetype/map/player/protocol compatible.  On the same 
basis, one could use that to clean up lots of bits of code that are their for 
compatibility reasons or because that is the way things should work - one could 
actually define how those things should work.

  But I suspect the stuff under Various is low priority - for the most part it 
cleans things up for developers, but doesn't really change the experience for 
players.

  As for other points - pretty much agree with them all.  One question/comment 
however about:

reduce food supply, like divide by 10 the current values?, to give more 
interest 
to food - right now it’s useless

  Most RPG's don't really concern themselves with the player needing to feed 
themselves.  And in fact food as a rapidly decrease attribute is I'm sure 
something that dates back to early versions of crossfire, which were much more 
gauntlet based than an RPG.

  I wonder if part of reducing that food supply, of the food attribute should 
just be removed, and the sole purpose of food is to give various benefits, like 
some of the special foods do right now (give some healing, resistances, etc, 
for 
some time).  Most normal food could be removed, except for dungeon dressing and 
perhaps some quests.

  Dying as starvation because you can't find food has to be one of the suckiest 
ways to die.  And having to carry around huge quantities of food because you 
are 
going into a deep dungeon is also somewhat annoying (more annoying is realizing 
you are about out of food, have to abandon the dungeon, go back, get some more, 
etc).

  I guess my question would be whether food as a core stat really adds much to 
the game or is as much a headache as anything else.


___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire


Re: [crossfire] Conventions for exits in town

2010-01-14 Thread Mark Wedel
Nicolas Weeger wrote:

   For example, stairs no matter where they are, should require an explicit
 apply to use them

   Oak doors could always be auto apply, etc.  Buildings are always explicit
 apply, and so on.
 
 I'd say explicit apply for all things you'd expect to use/apply in real life: 
 doors, stairs, ladders, boats, ...
 On the other hands, things like teleporters, shop mats, whirlwind exits 
 aren't 
 expected to need to be applied, IMO.

  And some things may be explicit just based on what they are.  Things like 
pits 
you don't have much choice of - if there is a pit under you, you are falling.

  A question might be whether are exits, whether auto apply or not, should in 
general be visible.  If you need to apply it, that is clearly the case, but for 
auto apply, it is more a question - on some maps, (front gate to scorn being 
one 
example) the exits are invisible and applied automatically.  There are also 
some 
houses same way - you can't see the exits - you just happen to step on the 
right 
space and are back home.

  I'm sort of the opinion that all exits (unless meant to be hidden, like pit 
traps) should be visible.  The reason for this is that exits are a game 
mechanism - its nice to know what will cause you to move from one place to the 
next.  In real life (I know, always a bad example), when I leave my house and 
walk to the curb, I don't suddenly warp from one map to another as I get to the 
curb - it is a continuous flow.  But in crossfire, you do suddenly get popped 
from one map to another, and that can be somewhat jarring.

 
 
   So as a player, if I see an oakdoor, I know what it will (or won't do) no
 matter where I am.

   Beyond that, having more consistency based on location sounds good.  It
 may just mean updating all the maps to have the appropriate exit for their
 location.
 
 Yes, some massive update :)

  First step would be to make the archetypes consistent, which may now mean 
there are some duplicate archetypes.  And writing scripts to find exits on maps 
which are changing the move_on would be easy enough.

  The hard part would be examining all of those to see if changing them to 
default (based on that exit) is reasonable - there could be some cases on why 
it 
was done some way, and changing it another way sort of break things.

  The other time consuming part is the standardization of exits (making all 
town 
exits oak doors).  But I imagine something like 'sed s/invisible exit/oakdoor/' 
would take care of that pretty easily.


___
crossfire mailing list
crossfire@metalforge.org
http://mailman.metalforge.org/mailman/listinfo/crossfire