
Pages:<< prev 1 next >>



Fledgling

GroupMembers
Posts16
JoinedApr 8, 2009
I know this is probably simple but for some reason I'm having the worst of luck getting it to work.
Basically Mob A randomly checks the room for a random MOB lets say Mob B and then checks to see if Mob B is wearing item with vnum xxx and if so Mob A attacks Mob B
Oh and Mob B can either be a NPC or PC...
Is this possible?
Basically Mob A randomly checks the room for a random MOB lets say Mob B and then checks to see if Mob B is wearing item with vnum xxx and if so Mob A attacks Mob B
Oh and Mob B can either be a NPC or PC...
Is this possible?



Sorcerer

GroupMembers
Posts723
JoinedMar 5, 2005
You should probably specify if you're looking for this to be done via code or OLC.



Magician

GroupMembers
Posts169
JoinedNov 29, 2005
> speech_prog bobo if mobinroom(101) >= 1 mpecho Mob Here! if ovnumhere(100) >= 1 mpecho Object Here! else mpecho No object! endif else mpecho No mob! endif
Edit as you please. Note that you can't detect an object another player has using a program like this. It can:
... room - in the room the mobile is in
... wear - worn by the mobile as equipment
... inv - in the mobile's inventory
... carry - worn or in inventory
... here - all of the above
That program will detect the object if the actor(the mob the program is on) is holding the object, not another mob. At the moment, I can't think if there is another way to do what you want, but if not, it wouldn't be hard to add in.



Magician

GroupMembers
Posts196
JoinedNov 25, 2007
I don't think I'd use a speech prog... there's no indication the PC is going to say anything to trigger it.
I'd be inclined to use a greet prog (if Mob A is stationary) or an entry prog (if Mob A is a wanderer). Another possibility is a rand prog and have Mob A teleport to the PC.
Is there any reason you want it to trigger on NPC's? My opinion but I find creating fights between mobs that no one will see kind of unnecessary.
I'd be inclined to use a greet prog (if Mob A is stationary) or an entry prog (if Mob A is a wanderer). Another possibility is a rand prog and have Mob A teleport to the PC.
Is there any reason you want it to trigger on NPC's? My opinion but I find creating fights between mobs that no one will see kind of unnecessary.



Fledgling

GroupMembers
Posts16
JoinedApr 8, 2009
Well I was converting the hood.are from Rom 2.4 area format over and was wondering if I could do the gang actions via olc instead of hardcoding them as specials... I opted to hardcoding the patrolmans code..



Sorcerer

GroupMembers
Posts902
JoinedJan 29, 2007
It's pretty difficult to create truly dynamic and interesting behavior in mudprog; oftentimes coding up a spec_fun routine is the easier option. The downside is of course that to modify it, you have to recompile and re/hotboot the game.


Fledgling

GroupMembers
Posts16
JoinedApr 8, 2009
For those of you who were wondering what the spec_patrolman code conversion might be (this worked):
#define OBJ_VNUM_WHISTLE 18516 #define MOB_VNUM_PATROLMAN 18206 bool spec_patrolman(CHAR_DATA *ch) { CHAR_DATA *vch,*victim = NULL; OBJ_DATA *obj; char *message; int count = 0; if (!IS_AWAKE(ch) || ch->in_room == NULL || IS_AFFECTED(ch,AFF_CHARM) || ch->fighting != NULL) return FALSE; /* look for a fight in the room */ // for( victim = ch->in_room->first_person; victim; victim = v_next ) // example /* for (vch = ch->in_room->people; vch != NULL; vch = vch->next_in_room) // old */ for(vch = ch->in_room->first_person; vch; vch = vch->next_in_room) { if (vch == ch) continue; if (vch->fighting != NULL) /* break it up! */ { victim = vch; /* // old if (number_range(0,count) == 0) victim = (vch->level > vch->fighting->level) ? vch : vch->fighting; */ count++; } } if (victim == NULL || (IS_NPC(victim) && victim->spec_fun == ch->spec_fun)) return FALSE; if ( ((obj = get_eq_char(ch,WEAR_NECK_1)) != NULL && obj->pIndexData->vnum == OBJ_VNUM_WHISTLE) || ((obj = get_eq_char(ch,WEAR_NECK_2)) != NULL && obj->pIndexData->vnum == OBJ_VNUM_WHISTLE) ) { /* // OLD! act("You blow down hard on $p.",ch,obj,NULL,TO_CHAR); act("$n blows on $p, ***WHEEEEEEEEEEEET***",ch,obj,NULL,TO_ROOM); */ act( AT_ACTION, "You blow down hard on your whistle.", ch, NULL, victim, TO_VICT ); act( AT_ACTION, "$n blows on $s whistle, ***PHE-WHEEEEEEEEEEEET***", ch, NULL, victim, TO_NOTVICT ); for ( vch = first_char; vch != NULL; vch = vch->next ) { if ( vch->in_room == NULL ) continue; if (vch->in_room != ch->in_room && vch->in_room->area == ch->in_room->area) send_to_char( "You hear a shrill whistling sound.\n\r", vch ); } } switch (number_range(0,6)) { default: message = NULL; break; case 0: message = "$n yells 'All roit! All roit! break it up!'"; break; case 1: message = "$n says 'Society's to blame, but what's a bloke to do?'"; break; case 2: message = "$n mumbles 'bloody kids will be the death of us all.'"; break; case 3: message = "$n shouts 'Stop that! Stop that!' and attacks."; break; case 4: message = "$n pulls out his billy and goes to work."; break; case 5: message = "$n sighs in resignation and proceeds to break up the fight."; break; case 6: message = "$n says 'Settle down, you hooligans!'"; break; } if (message != NULL) act( AT_SAY, message, ch, NULL, NULL, TO_ROOM ); /* act(message,ch,NULL,NULL,TO_ALL); // OLD */ multi_hit(ch,victim,TYPE_UNDEFINED); return TRUE; }



Magician

GroupMembers
Posts169
JoinedNov 29, 2005
Hanaisse said:
I don't think I'd use a speech prog... there's no indication the PC is going to say anything to trigger it.
I'd be inclined to use a greet prog (if Mob A is stationary) or an entry prog (if Mob A is a wanderer). Another possibility is a rand prog and have Mob A teleport to the PC.
Is there any reason you want it to trigger on NPC's? My opinion but I find creating fights between mobs that no one will see kind of unnecessary.
A speech prog is easier to trigger when you're testing it. It can be so easily converted into an allgreet prog that I don't see the point in your post.
Pages:<< prev 1 next >>