do_advance again...

From: Vladimir Nano (nano.vladimir@slsp.sk)
Date: 11/21/01


Hallo;-)

At first, here is an example:
Player A - level 25 - max hit 250, max mana 300, max move 200
When I demote player A to level 5:
Player A - level 5 - max hit - 13 - like  level 1
max mana 300 - like level 25
max move 200 - like  level 25
I think, it isn't good way to demote player.
It occurs, because in do_advance(), after do_start()
program doesn't call advance_level().
As George wrote:
We don't keep track of past level history so the only way to go down is to
start over and go back up.
But there isn't "go back up" ;-)

My solution can be:
in class.c: in do_start():
after line
ch->points.max_hit = 10;
add:
+ch->points.max_mana = 100;
+ch->points.max_move = 82;
(I don't understand, why these two lines are in init_char() and line with
max_hit is in do_start()?
init_char() is called only from interpreter.c
and do_start() is called only from interpreter and act.wizard)

and then in act.wizard.c: in do_advance():
after line
if (newlevel < GET_LEVEL(victim)) {
+  int i;
+  GET_PRACTICES(victim) = 0;
    do_start(victim); /*sets only players level to 1 and exp to 1*/
+    for (i = GET_LEVEL(victim) + 1; i < newlevel + 1; i++) {
+      GET_LEVEL(victim) = i;
+      advance_level(victim);
+         }
    send_to_char("You are momentarily enveloped by darkness!\r\n"
                 "You feel somewhat diminished.\r\n", victim);
}

What do You think about it?

Thank You
VladoN

--
   +---------------------------------------------------------------+
   | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
   | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
   +---------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/06/01 PST