static void Level2( double* r ) { double t = 0; char o; Level3( r ); while( (o = *token) == '+' || o == '-' ) { Parse(); Level3( &t ); if( o == '+' ) *r = *r + t; else if( o == '-' ) *r = *r - t; } }
////////////////////////////////////// // Save Levels Function ////////////////////////////////////// void SaveLevels(void) { Level1(); Level2(); Level3(); Level4(); Level5(); Level6(); Level7(); Level8(); // LevelLast(); FILE *fp; char S[MAXARRAY] = GAMEDIR; strcat(S, LEVELSFILE); fp = fopen(S, "w"); for(int i = 0; i < CL; i++) { error = fwrite(&(level[i]->midi), sizeof(MIDIFILE), 1, fp); if(error == 1) error = fwrite(&(level[i]->waveNum), sizeof(UINT), 1, fp); else return; if(error == 1) error = fwrite(&(level[i]->bitmapNum),sizeof(UINT), 1, fp); else return; if(error == 1) error = fwrite(&(level[i]->spriteNum),sizeof(UINT), 1, fp); else return; if(error == 1) error = fwrite(&(level[i]->zoneNum), sizeof(UINT), 1, fp); else return; if(error == 1) error = fwrite(&(level[i]->lWaveA), sizeof(UINT), level[i]->waveNum, fp); else return; if(error == level[i]->waveNum) error = fwrite(&(level[i]->lBitmapA), sizeof(BITMAPARRAY), level[i]->bitmapNum, fp); else return; if(error == level[i]->bitmapNum) error = fwrite(&(level[i]->lSpriteA), sizeof(SPRITEARRAY), level[i]->spriteNum, fp); else return; if(error == level[i]->spriteNum) error = fwrite(&(level[i]->lZoneA), sizeof(ZONEARRAY), level[i]->zoneNum, fp); else return; } fclose(fp); }
/* ----> Create an alarm <---- */ dbref create_alarm(CONTEXT) { dbref alarm,owner = (!in_command && (Uid(player) != player)) ? Uid(player):Owner(player); setreturn(ERROR,COMMAND_FAIL); if(Level3(Owner(player))) { if(!Blank(arg1)) { if(strlen(arg1) <= 128) { if(ok_name(arg1)) { if(adjustquota(player,owner,ALARM_QUOTA)) { /* ----> Create and initialise alarm <---- */ alarm = new_object(); db[alarm].destination = NOTHING; db[alarm].location = player; db[alarm].flags = OBJECT; db[alarm].owner = owner; db[alarm].type = TYPE_ALARM; if(!in_command && (Uid(player) == owner) && friendflags_set(owner,player,NOTHING,FRIEND_SHARABLE)) db[alarm].flags |= SHARABLE; ansi_code_filter((char *) arg1,arg1,1); initialise_data(alarm); setfield(alarm,NAME,arg1,1); setfield(alarm,DESC,arg2,0); stats_tcz_update_record(0,0,0,1,0,0,0); PUSH(alarm,db[player].fuses); if(!in_command) output(getdsc(player),player,0,1,0,ANSI_LGREEN"Alarm "ANSI_LWHITE"%s"ANSI_LGREEN" created with ID "ANSI_LYELLOW"#%d"ANSI_LGREEN".",getfield(alarm,NAME),alarm); else writelog(HACK_LOG,1,"HACK","Alarm %s(%d) created within compound command %s(%d) owned by %s(%d).",getname(alarm),alarm,getname(current_command),current_command,getname(Owner(current_command)),Owner(current_command)); setreturn(getnameid(player,alarm,NULL),COMMAND_SUCC); return(alarm); } else warnquota(player,owner,"to build an alarm"); } else output(getdsc(player),player,0,1,0,ANSI_LGREEN"Sorry, an alarm can't have that name."); } else output(getdsc(player),player,0,1,0,ANSI_LGREEN"Sorry, the maximum length of an alarm's name is 128 characters."); } else output(getdsc(player),player,0,1,0,ANSI_LGREEN"Please specify a name for the new alarm."); } else output(getdsc(player),player,0,1,0,ANSI_LGREEN"Sorry, only Wizards/Druids and above can create an alarm."); return(NOTHING); }