bool cCurTown::set_quickfire(short x, short y, bool b){ if(x > record()->max_dim() || y > record()->max_dim()) return false; if(b){ // If certain things are on space, there's no room for quickfire. ter_num_t ter = record()->terrain(x,y); if(univ.scenario.ter_types[ter].blockage == eTerObstruct::BLOCK_SIGHT) return false; // TODO: Isn't it a little odd that BLOCK_MOVE_AND_SHOOT isn't included here? if(univ.scenario.ter_types[ter].blockage == eTerObstruct::BLOCK_MOVE_AND_SIGHT) return false; if(is_antimagic(x,y) && get_ran(1,0,1) == 0) return false; if(is_force_barr(x,y) || is_fire_barr(x,y)) return false; quickfire_present = true; set_force_wall(x,y,false); set_fire_wall(x,y,false); set_antimagic(x,y,false); set_scloud(x,y,false); set_ice_wall(x,y,false); set_blade_wall(x,y,false); set_sleep_cloud(x,y,false); set_web(x,y,false); set_crate(x,y,false); set_barrel(x,y,false); set_force_barr(x,y,false); set_fire_barr(x,y,false); fields[x][y] |= FIELD_QUICKFIRE; } else fields[x][y] &= ~FIELD_QUICKFIRE; return true; }
int parse_line(FILE *f, char *line,int *row, http_conf *g) { char *split; char *name; int err; name = split = strchr(line, '='); if(split == NULL) return 2;//配置文件错误 while(!is_char(*name)) name++; if(strncmp(line, "port", 4) == 0){ split ++; g->port = atoi(split); if(g->port <= 0 || g->port > 65535)return 3;//port不正确 } else if(strncmp(line, "web", 3) == 0) { if((err = set_web(f, g, row))) return err; g->web_count ++; } else if(strncmp(line, "mimetype", 8) == 0){ if((err = set_mimetype(f, g, row))) return err;; } else { return 4;//不能识别的配置节点 } return 0; }
faculty::faculty(string new_name, string new_image, string new_email, BD new_birthday, unsigned int new_id, member_type new_type, string new_web) { set_name(new_name); set_image(new_image); set_email(new_email); set_birthday(new_birthday); set_id(new_id); set_type(new_type); set_web(new_web); }
bool cCurTown::set_force_wall(short x, short y, bool b){ if(x > record()->max_dim() || y > record()->max_dim()) return false; if(b){ // If certain things are on space, there's no room for field. if(is_impassable(x,y)) return false; if(is_antimagic(x,y) || is_blade_wall(x,y) || is_quickfire(x,y)) return false; if(is_crate(x,y) || is_barrel(x,y) || is_fire_barr(x,y) || is_force_barr(x,y)) return false; set_web(x,y,false); set_fire_wall(x,y,false); fields[x][y] |= WALL_FORCE; } else fields[x][y] &= ~WALL_FORCE; return true; }
bool cCurTown::set_force_barr(short x, short y, bool b){ if(x > record()->max_dim() || y > record()->max_dim()) return false; if(b){ // If certain things are on the space, there's no room for a barrier. if(is_fire_barr(x,y) || is_barrel(x,y) || is_quickfire(x,y) || is_crate(x,y)) return false; if(is_antimagic(x,y) && get_ran(1,0,2) < 2) return false; // Cancel out fields set_web(x,y,false); set_force_wall(x,y,false); set_fire_wall(x,y,false); set_antimagic(x,y,false); set_scloud(x,y,false); set_ice_wall(x,y,false); set_blade_wall(x,y,false); set_sleep_cloud(x,y,false); fields[x][y] |= BARRIER_FORCE; } else fields[x][y] &= ~BARRIER_FORCE; return true; }
void faculty::initialize() { member::initialize(); set_web(""); }
void cCurTown::place_preset_fields() { // Initialize barriers, etc. Note non-sfx gets forgotten if this is a town recently visited. for(int i = 0; i < 64; i++) for(int j = 0; j < 64; j++) { fields[i][j] = 0; } for(size_t i = 0; i < record()->preset_fields.size(); i++) { switch(record()->preset_fields[i].type){ case OBJECT_BLOCK: univ.town.set_block(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true); break; case SPECIAL_SPOT: set_spot(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true); break; case FIELD_WEB: set_web(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true); break; case OBJECT_CRATE: set_crate(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true); break; case OBJECT_BARREL: set_barrel(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true); break; case BARRIER_FIRE: set_fire_barr(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true); break; case BARRIER_FORCE: set_force_barr(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true); break; case BARRIER_CAGE: set_force_cage(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true); break; case FIELD_QUICKFIRE: set_quickfire(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true); break; case SFX_SMALL_BLOOD: set_sm_blood(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true); break; case SFX_MEDIUM_BLOOD: set_med_blood(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true); break; case SFX_LARGE_BLOOD: set_lg_blood(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true); break; case SFX_SMALL_SLIME: set_sm_slime(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true); break; case SFX_LARGE_SLIME: set_lg_slime(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true); break; case SFX_ASH: set_ash(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true); break; case SFX_BONES: set_bones(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true); break; case SFX_RUBBLE: set_rubble(record()->preset_fields[i].loc.x,record()->preset_fields[i].loc.y,true); break; // The rest can't be preset, but enumerate them in case a new field is added. case FIELD_DISPEL: case FIELD_SMASH: case SPECIAL_EXPLORED: case CLOUD_SLEEP: case CLOUD_STINK: case FIELD_ANTIMAGIC: case WALL_BLADES: case WALL_FIRE: case WALL_FORCE: case WALL_ICE: break; } } }