Login
User Name:

Password:



Register
Forgot your password?
Vote for Us!
tintin++ ogg sound player script for linux
Author: Robert Smith
Submitted by: Vladaar
6Dragons ogg Soundpack
Author: Vladaar
Submitted by: Vladaar
6Dragons 4.4
Author: Vladaar
Submitted by: Vladaar
LoP 1.46
Author: Remcon
Submitted by: Remcon
LOP 1.45
Author: Remcon
Submitted by: Remcon
Users Online
CommonCrawl, Yandex, Bing

Members: 0
Guests: 10
Stats
Files
Topics
Posts
Members
Newest Member
481
3,739
19,386
622
ignatius
Today's Birthdays
There are no member birthdays today.
Related Links
» SmaugMuds.org » Bugfix Lists » AFKMud Bugfix List » [Bug] Item weight calculation...
Forum Rules | Mark all | Recent Posts

[Bug] Item weight calculation does not work right with containers
< Newer Topic :: Older Topic > AFKMud 2.01

Pages:<< prev 1 next >>
Post is unread #1 Oct 14, 2007, 10:08 am
Go to the top of the page
Go to the bottom of the page

Samson
Black Hand
GroupAdministrators
Posts3,643
JoinedJan 1, 2002

Bug: Item weight calculation does not work right with containers
Danger: Low - May prevent players from pulling items out of their bags
Discovered in: AFKMud 2.01
Found by: Zeno
Fixed by: Remcon

---

act_obj.cpp, get_obj

Locate:
   if( ch->carry_weight + weight > ch->can_carry_w(  ) )
   {
      act( AT_PLAIN, "$d: you can't carry that much weight.", ch, NULL, obj->name, TO_CHAR );
      return;
   }


Change to:
   /* Money weight shouldn't count */
   if( obj->item_type != ITEM_MONEY )
   {
      if( obj->in_obj )
      {
         obj_data *tobj = obj->in_obj;
         int inobj = 1;
         bool checkweight = false;

         /* need to make it check weight if its in a magic container */
         if( tobj->item_type == ITEM_CONTAINER && tobj->extra_flags.test( ITEM_MAGIC ) )
            checkweight = true;

         while( tobj->in_obj )
         {
            tobj = tobj->in_obj;
            ++inobj;

            /* need to make it check weight if its in a magic container */
            if( tobj->item_type == ITEM_CONTAINER && tobj->extra_flags.test( ITEM_MAGIC ) )
               checkweight = true;
         }

         /* need to check weight if not carried by ch or in a magic container. */
         if( !tobj->carried_by || tobj->carried_by != ch || checkweight )
         {
            if( ( ch->carry_weight + weight ) > ch->can_carry_w( ) )
            {
               act( AT_PLAIN, "$d: you can't carry that much weight.", ch, NULL, obj->name, TO_CHAR );
               return;
            }
         }
      }
      else if( ( ch->carry_weight + weight ) > ch->can_carry_w( ) )
      {
         act( AT_PLAIN, "$d: you can't carry that much weight.", ch, NULL, obj->name, TO_CHAR );
         return;
      }
   }


Smaug's default system would count weight against you if you were already carrying the item in a non-magical container, even if you are already under the maximum weight limit. This fix will only affect weight if an item is pulled from a magical container, or off the ground as usual.
       
Pages:<< prev 1 next >>