Login
User Name:

Password:



Register
Forgot your password?
Vote for Us!
Bug in disarm( )
Nov 12, 2017, 6:54 pm
By GatewaySysop
Bug in will_fall( )
Oct 23, 2017, 1:35 am
By GatewaySysop
Bug in do_zap( ), do_brandish( )
Oct 18, 2017, 1:52 pm
By GatewaySysop
Bug in get_exp_worth( )
Oct 10, 2017, 1:26 am
By GatewaySysop
Bug in do_drag( )
Oct 8, 2017, 12:40 am
By GatewaySysop
LOP Heroes Edition
Author: Vladaar
Submitted by: Vladaar
Heroes sound extras
Author: Vladaar
Submitted by: Vladaar
6Dragons 4.3
Author: Vladaar
Submitted by: Vladaar
Memwatch
Author: Johan Lindh
Submitted by: Vladaar
Beastmaster 6D sound files
Author: Vladaar
Submitted by: Vladaar
Users Online
CommonCrawl, Yandex

Members: 0
Guests: 2
Stats
Files
Topics
Posts
Members
Newest Member
476
3,704
19,231
608
LAntorcha
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,639
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 >>