/****************************************************************************\ * * * C R E A T O R O F L E G E N D S * * (AberMud Version 5) * * * * The Creator Of Legends System is (C) Copyright 1989 Alan Cox, All Rights * * Reserved. * * * \****************************************************************************/ #include "System.h" /* * 1.00 AGC Created File * 1.01 AGC Updated to cover userflag2 * 1.02 AGC ANSIfication */ Module "Utility Commands"; Version "1.02"; Author "Alan Cox"; void Cmd_DoorPair(ITEM *i) { char doorname[560]; int ad,no; ITEM *door1,*door2,*from,*to; GENEXIT *g1,*g2; short dirn; if(!ArchWizard(i)) { SendItem(i,"Que ?\n"); return; } if(GetThing(&ad,&no)==-1) { SendItem(i,"There are unidentified words in your item.\n"); return; } from=FindSomething(i,O_PARENT(i)); if(!from) { SendItem(i,"I don't know where you want the exit to go from.\n"); return; } dirn=GetVerb(); if((dirn<99)||(dirn>110)) { SendItem(i,"I don't recognise that direction.\n"); return; } to=FindSomething(i,O_PARENT(i)); if(!to) { SendItem(i,"I don't know where you want the exit to go to.\n"); return; } if(ad==-1) sprintf(doorname,"the %s",FindWText(no,WD_NOUN)); else sprintf(doorname,"the %s %s",FindWText(ad,WD_ADJ), FindWText(no,WD_NOUN)); door1=CreateItem(doorname,ad,no); door2=CreateItem(doorname,ad,no); MakeObject(door1); MakeObject(door2); ObjectOf(door1)->ob_Flags=OB_FLANNEL; ObjectOf(door2)->ob_Flags=OB_FLANNEL; Place(door1,from); Place(door2,to); AddChain(door1,door2); AddChain(door2,door1); door1->it_ActionTable=2; door2->it_ActionTable=2; FreeText(ObjectOf(door1)->ob_Text[0]); FreeText(ObjectOf(door1)->ob_Text[1]); FreeText(ObjectOf(door2)->ob_Text[0]); FreeText(ObjectOf(door2)->ob_Text[1]); ObjectOf(door1)->ob_Text[0]=AllocText("The door is open. "); ObjectOf(door1)->ob_Text[1]=AllocText("The door is closed. "); ObjectOf(door2)->ob_Text[0]=AllocText("The door is open. "); ObjectOf(door2)->ob_Text[1]=AllocText("The door is closed. "); g1=(GENEXIT *)FindSub(from,KEY_GENEXIT); if(!g1) { if(MakeGenExit(from)) { SendItem(i,"Couldn't create GENEXIT subinfo.\n"); return; } g1=(GENEXIT *)FindSub(from,KEY_GENEXIT); } g2=(GENEXIT *)FindSub(to,KEY_GENEXIT); if(!g2) { if(MakeGenExit(to)) { SendItem(i,"Couldn't create GENEXIT subinfo.\n"); return; } g2=(GENEXIT *)FindSub(to,KEY_GENEXIT); } if(g1->ge_Dest[dirn-100]) UnlockItem(g1->ge_Dest[dirn-100]); if(g2->ge_Dest[BackExit(dirn-100)]) UnlockItem(g2->ge_Dest[BackExit(dirn-100)]); LockItem(door1); LockItem(door2); g1->ge_Dest[dirn-100]=door2; g2->ge_Dest[BackExit(dirn-100)]=door1; SendItem(i,"Exits created.\n"); } /* * Printer Commands */ void Cmd_ShowAllObjects(ITEM *i) { register int ct; register OBJECT *o; register ITEM *b=ItemList; while(b) { if((o=ObjectOf(b))!=NULL) { ShowItemData(i,b); SendItem(i,"Text(0): %s\n",TextOf(o->ob_Text[0])); SendItem(i,"Text(1): %s\n",TextOf(o->ob_Text[1])); SendItem(i,"Text(2): %s\n",TextOf(o->ob_Text[2])); SendItem(i,"Text(3): %s\n",TextOf(o->ob_Text[3])); SendItem(i,"Size : %d Weight : %d\n", o->ob_Size,o->ob_Weight); ct=0; while(ct<16) { if(o->ob_Flags&(1<<ct)) SendItem(i,"%s ",OBitName(ct)); else if(strcmp(OBitName(ct),"{unset}")) SendItem(i,"-%s ",OBitName(ct)); ct++; } SendItem(i,"\n\n-------------------------\n"); } b=b->it_MasterNext; } } void Cmd_ShowAllPlayers(ITEM *i) { register int ct; register PLAYER *o; register ITEM *b=ItemList; while(b) { if((o=PlayerOf(b))!=NULL) { ShowItemData(i,b); SendItem(i,"UserKey : %d ",o->pl_UserKey); SendItem(i,"Size : %d ",o->pl_Size); SendItem(i,"Weight : %d \n",o->pl_Weight); SendItem(i,"Strength: %d ",o->pl_Strength); SendItem(i,"Level : %d ",o->pl_Level); SendItem(i,"Score : %d\n",o->pl_Score); ct=0; while(ct<16) { if(o->pl_Flags&(1<<ct)) SendItem(i,"%s ",PBitName(ct)); else if(strcmp(PBitName(ct),"{unset}")) SendItem(i,"-%s ",PBitName(ct)); ct++; } SendItem(i,"\n\n-------------------------\n"); } b=b->it_MasterNext; } } void Cmd_ShowAllRooms(ITEM *i) { register int ct; register ROOM *r; register ITEM *b=ItemList; while(b) { if((r=RoomOf(b))!=NULL) { ShowItemData(i,b); SendItem(i,"Short Text: %s\n",TextOf(r->rm_Short)); SendItem(i,"Long Text :\n%s\n",TextOf(r->rm_Long)); ct=0; while(ct<16) { if(r->rm_Flags&(1<<ct)) SendItem(i,"%s ",RBitName(ct)); else if(strcmp(RBitName(ct),"{unset}")) SendItem(i,"-%s ",RBitName(ct)); ct++; } SendItem(i,"\n\n"); Cmd_Exits(i,b); /* Show exits */ SendItem(i,"\n\n-------------------------\n"); } b=b->it_MasterNext; } } int ShowItemData(ITEM *i, ITEM *b) { register SUB *s; SendItem(i,"Item: #%d %s\n",ItemNumber(LevelOf(i),b),CNameOf(b)); if(O_PARENT(b)) SendItem(i,"Parent: #%d %s\n",ItemNumber(LevelOf(i),O_PARENT(b)), CNameOf(O_PARENT(b))); else SendItem(i,"Parent: None\n"); if(O_CHILDREN(b)) SendItem(i,"First Child: %s\n",CNameOf(O_CHILDREN(b))); else SendItem(i,"First Child: None\n"); if(O_NEXT(b)) SendItem(i,"Next Chained: %s\n",CNameOf(O_NEXT(b))); else SendItem(i,"Next Chained: None\n"); SendItem(i,"Adjective : %3d Noun: %3d Actor: %3d Action: %3d State: %3d\n", (int)b->it_Adjective,(int)b->it_Noun,(int)b->it_ActorTable, (int)b->it_ActionTable,(int)b->it_State); SendItem(i,"Perception: %3d Lock: %3d Classes: %x\n", (int)b->it_Perception,(int)b->it_Users,(int)b->it_Class); s=b->it_Properties; while(s) { switch(s->pr_Key) { case KEY_ROOM:SendItem(i,"Room"); break; case KEY_OBJECT:SendItem(i,"Object"); break; case KEY_PLAYER:SendItem(i,"Player"); break; case KEY_GENEXIT:SendItem(i,"GenExit"); break; case KEY_MSGEXIT:SendItem(i,"MsgExit"); break; case KEY_CONDEXIT:SendItem(i,"CondExit"); break; case KEY_CONTAINER:SendItem(i,"Container"); break; case KEY_CHAIN:SendItem(i,"Chain -> #%d %s", ItemNumber(LevelOf(i), ((CHAIN *)(s))->ch_Chained), CNameOf(((CHAIN *)(s))->ch_Chained)); break; case KEY_USERFLAG:SendItem(i,"UserFlag"); break; case KEY_BACKTRACK:SendItem(i,"BackTrack"); break; case KEY_SNOOP:SendItem(i,"Snoop"); break; case KEY_SNOOPBACK: SendItem(i,"SnoopBack"); break; case KEY_ROPE: SendItem(i,"Rope"); break; case KEY_DUPED: SendItem(i,"Dup of %s", CNameOf(((DUP *)(s))->du_Master)); break; case KEY_TIECHAIN: SendItem(i,"Tied"); break; case KEY_INHERIT: SendItem(i,"Inerit from #%d %s", ItemNumber(LevelOf(i), ((INHERIT *)(s))->in_Master), CNameOf(((INHERIT *)(s))->in_Master)); break; case KEY_INOUTHERE: SendItem(i,"InOutHere"); break; case KEY_USERTEXT: SendItem(i,"UserText"); break; case KEY_USERFLAG2: SendItem(i,"UserFlag2"); break; default: SendItem(i,"Unknown (%d)",s->pr_Key); } SendItem(i,"\n"); s=s->pr_Next; } return(0); }