/****************************************************************************\ * * * 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. * * * \****************************************************************************/ /* * Commands To Do With Objects * * 1.00 AGC Original Version * 1.01 AGC Updated to 5.06 * 1.02 AGC 5.07 user named bit flags added */ #include "System.h" Module "Object Commands"; Version "1.02"; Author "----*(A)"; /* Changed From ShowObject for 8 char significance */ void Cmd_ObjectShow(i) ITEM *i; { int ct=0; ITEM *a; OBJECT *o; if(!ArchWizard(i)) { SendItem(i,"Try EXAMINE.\n"); return; } a=FindSomething(i,O_PARENT(i)); if(a==NULL) { SendItem(i,"I don't know what that is.\n"); return; } o=ObjectOf(a); if(o==NULL) { SendItem(i,"%s is not an object.\n",CNameOf(a)); return; } SendItem(i,"Object Name : %s\n",CNameOf(a)); 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); 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"); } void Cmd_SetOFlag(i) ITEM *i; { int c=0; ITEM *a; OBJECT *o; if(!ArchWizard(i)) { SendItem(i,"No can do....\n"); return; } a=FindSomething(i,O_PARENT(i)); if(a==NULL) { SendItem(i,"I don't know what that is.\n"); return; } o=ObjectOf(a); if(o==NULL) { SendItem(i,"%s is not an object.\n",CNameOf(a)); return; } SkipPrep(); while(GetParsedWord()) { if(!strlen(WordBuffer)) { SendItem(i,"What flag though ?\n"); return; } if(*WordBuffer=='-') { c=FindOBit(WordBuffer+1); if(c==-1) { SendItem(i,"Unknown flag %s.\n",WordBuffer+1); return; } o->ob_Flags&=~(1<<c); } else { c=FindOBit(WordBuffer); if(c==-1) { SendItem(i,"Unknown flag %s.\n",WordBuffer); return; } o->ob_Flags|=(1<<c); } } } void Cmd_SetDesc(i) ITEM *i; { int siz; int n; ITEM *a; OBJECT *o; char *BigBuffer; FILE *f; if(!ArchWizard(i)) { SendItem(i,"No!\n"); return; } a=FindSomething(i,O_PARENT(i)); if(a==NULL) { SendItem(i,"I don't know what that is.\n"); return; } o=ObjectOf(a); if(o==NULL) { SendItem(i,"%s is not an object.\n",CNameOf(a)); return; } SkipPrep(); n=GetNumber(); if(n==-1) { SendItem(i,"Which description number.\n"); return; } if((n<0)||(n>3)) { SendItem(i,"Description out of range.\n"); return; } GetAll(); if(!strlen(WordBuffer)) { SendEdit(i,"SetDesc #%d %s %d %s",ItemNumber(LevelOf(i),a), CNameOf(a),(int)n,TextOf(o->ob_Text[n])); return; } if(*WordBuffer=='*') { f=fopen(WordBuffer+1,"r"); if(f==NULL) { SendItem(i,"Sorry - can't open the file.\n"); return; } BigBuffer=malloc(2048); if(BigBuffer==NULL) { SendItem(i,"Not enough memory.\n"); return; } if((siz=fread(BigBuffer,1,2048,f))==2048) { fclose(f); free(BigBuffer); SendItem(i,"Entry too large.\n"); return; } fclose(f); if(BigBuffer[siz-1]=='\n') BigBuffer[siz-1]=0; BigBuffer[siz]=0; /* Convert data to C string */ BigBuffer[2047]=0; /* protection */ FreeText(o->ob_Text[n]); o->ob_Text[n]=AllocText(BigBuffer); free(BigBuffer); } else { FreeText(o->ob_Text[n]); o->ob_Text[n]=AllocText(WordBuffer); } } void Cmd_SetOSize(i) ITEM *i; { int n; ITEM *a; OBJECT *o; if(!ArchWizard(i)) { SendItem(i,"No!\n"); return; } a=FindSomething(i,O_PARENT(i)); if(a==NULL) { SendItem(i,"I don't know what that is.\n"); return; } o=ObjectOf(a); if(o==NULL) { SendItem(i,"%s is not an object.\n",CNameOf(a)); return; } SkipPrep(); n=GetNumber(); if(n==-1) { SendItem(i,"Bad Size Value.\n"); return; } o->ob_Size=n; } void Cmd_SetOWeight(i) ITEM *i; { int n; ITEM *a; OBJECT *o; if(!ArchWizard(i)) { SendItem(i,"No!\n"); return; } a=FindSomething(i,O_PARENT(i)); if(a==NULL) { SendItem(i,"I don't know what that is.\n"); return; } o=ObjectOf(a); if(o==NULL) { SendItem(i,"%s is not an object.\n",CNameOf(a)); return; } SkipPrep(); n=GetNumber(); if(n==-1) { SendItem(i,"Bad Weight Value.\n"); return; } o->ob_Weight=n; } void Cmd_SetActor(i) ITEM *i; { ITEM *a; int n; if(!ArchWizard(i)) { SendItem(i,"Pardon ?\n"); return; } a=FindSomething(i,O_PARENT(i)); if(a==NULL) { SendItem(i,"I don't know what that is.\n"); return; } SkipPrep(); if(GetParsedWord()==NULL) { SendItem(i,"Which table ?\n"); return; } if(isdigit(*WordBuffer)) sscanf(WordBuffer,"%d",&n); else n=FindTableByName(WordBuffer); if(n==-1) { SendItem(i,"No Such Table.\n"); return; } a->it_ActorTable=n; } void Cmd_SetAction(i) ITEM *i; { ITEM *a; int n; if(!ArchWizard(i)) { SendItem(i,"Pardon ?\n"); return; } a=FindSomething(i,O_PARENT(i)); if(a==NULL) { SendItem(i,"I don't know what that is.\n"); return; } SkipPrep(); if(GetParsedWord()==NULL) { SendItem(i,"Which table ?\n"); return; } if(isdigit(*WordBuffer)) sscanf(WordBuffer,"%d",&n); else n=FindTableByName(WordBuffer); if(n==-1) { SendItem(i,"No Such Table.\n"); return; } a->it_ActionTable=n; }