Login
User Name:

Password:



Register
Forgot your password?
Vote for Us!
AFKMud 2.2.2
Mar 3, 2019 5:35 pm
By Samson
Development
Nov 28, 2018 12:10 pm
By Keirath
First Immortal
Oct 12, 2018 2:02 pm
By GatewaySysop
Bug in do_climb( )
Jun 5, 2018 7:31 pm
By joeyfogas
question on overland code
May 31, 2018 12:03 pm
By joeyfogas
SmaugFUSS 1.9.3
Author: Various
Submitted by: Samson
AFKMud 2.2.2
Author: AFKMud Team
Submitted by: Samson
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
Users Online
CommonCrawl, Bing, Sogou, Yandex

Members: 0
Guests: 15
Stats
Files
Topics
Posts
Members
Newest Member
483
3,743
19,401
655
RodrickMci
Today's Birthdays
There are no member birthdays today.
Related Links
» SmaugMuds » 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 8:00 pm   Last edited Feb 4, 2006 8: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 8:05 pm
Go to the top of the page
Go to the bottom of the page

Samson
Black Hand
GroupAdministrators
Posts3,647
JoinedJan 1, 2002

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