[CODE] Grouping Balance

From: Sam Ives (xym@CABLESPEED.COM)
Date: 03/15/03


This will prevent High levels power leveling newbies to an extent
Just change your group gain to the following below.
This will divide the expierince of a mob up to the total level
of the group then give the total exp of the monster back to the
group members based on their levels.

void group_gain(struct char_data *ch, struct char_data *victim)
{
  int tot_members, base, tlev=0;
  struct char_data *k;
  struct follow_type *f;

  if (!(k = ch->master))
    k = ch;

  if (AFF_FLAGGED(k, AFF_GROUP) && (IN_ROOM(k) == IN_ROOM(ch))) {
    tot_members = 1;
    /*Sets The Level For The Master*/
 tlev += GET_LEVEL(k);
  }
  else
    tot_members = 0;

  for (f = k->followers; f; f = f->next)
   if (AFF_FLAGGED(f->follower, AFF_GROUP) && IN_ROOM(f->follower)
== IN_ROOM(ch)) {
  /*Sets The Levels For The Follwers*/
       tlev += GET_LEVEL(f->follower);
    tot_members++;
   }



  if (tot_members >= 1)
    base = (GET_EXP(victim) / tlev) ;
  else
    base = GET_EXP(victim);

  if (AFF_FLAGGED(k, AFF_GROUP) && IN_ROOM(k) == IN_ROOM(ch))
    perform_group_gain(k, base * GET_LEVEL(k), victim);

  for (f = k->followers; f; f = f->next)
    if (AFF_FLAGGED(f->follower, AFF_GROUP) && IN_ROOM(f->follower) ==
IN_ROOM(ch))
      perform_group_gain(f->follower, base * GET_LEVEL(f->follower),
victim);
}

--
   +---------------------------------------------------------------+
   | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
   | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
   | Newbie List:  http://groups.yahoo.com/group/circle-newbies/   |
   +---------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 06/26/03 PDT