Login
User Name:

Password:



Register
Forgot your password?
Vote for Us!
parse description bug
Dec 15, 2017, 10:08 pm
By Remcon
Couple bugs
Dec 12, 2017, 5:42 pm
By Remcon
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
LOP 1.45
Author: Remcon
Submitted by: Remcon
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
Users Online
CommonCrawl, Google, DotBot, Yahoo!, Majestic-12

Members: 0
Guests: 10
Stats
Files
Topics
Posts
Members
Newest Member
477
3,706
19,240
608
LAntorcha
Today's Birthdays
There are no member birthdays today.
Related Links
» SmaugMuds.org » Codebases » SWR FUSS » Ifchecks ovnum<place> and oty...
Forum Rules | Mark all | Recent Posts

Ifchecks ovnum<place> and otype<place> not recognizing multiple objects
< Newer Topic :: Older Topic >

Pages:<< prev 1 next >>
Post is unread #1 Feb 4, 2006, 6:00 pm   Last edited Feb 4, 2006, 6:03 pm by Caius
Go to the top of the page
Go to the bottom of the page

Caius
Magician
GroupMembers
Posts132
JoinedJan 29, 2006

Say you want to have a mob giving a reward for bringing him a certain number of an object. You'd make a mobprog like so:
>act_prog 'gives you'
if ovnumcarry(60) >= 5
'Thanks.
endif

The idea is that the mob will react when he has five or more of object vnum 60 (blaster rifle under stock limbo.are). However this ifcheck doesn't count the objects properly, so the above prog doesn't work.

Here's how I fixed this:

Open mud_prog.c
Search for "ovnumcarry".

Locate this code:
for ( pObj = mob->first_carrying; pObj; pObj = pObj->next_content )
          if ( can_see_obj(mob, pObj) && pObj->pIndexData->vnum == vnum )
              lhsvl++;
 


Change it to:
for ( pObj = mob->first_carrying; pObj; pObj = pObj->next_content )
      {
          separate_obj( pObj );
          if ( can_see_obj(mob, pObj) && pObj->pIndexData->vnum == vnum )
              lhsvl++;
      }


Do the same for all these ifchecks: OvnumHere, OvnumRoom, OvnumCarry, OvnumWear, OvnumInv, OtypeHere, OtypeRoom, OtypeCarry, OtypeWear, OtypeInv.

OvnumHere and OtypeHere needs separate_obj( pObj ) in both their for(;;;) loops.

I have not checked these ifchecks in the other FUSS packages, but I suspect the same problems are there.
       
Post is unread #2 Feb 4, 2006, 6:05 pm
Go to the top of the page
Go to the bottom of the page

Samson
Black Hand
GroupAdministrators
Posts3,639
JoinedJan 1, 2002

Or you could have changed lhsvl++; to lhsvl += pObj->count;
       
Pages:<< prev 1 next >>