// Function from file: buildmode.dm public bool ClickOn(Ent_Static user = null, string _params = null, Base_Data _object = null) { bool _default = false; ByTable pa = null; int right_click = 0; int left_click = 0; int alt_click = 0; int ctrl_click = 0; Base_Data T = null; Base_Data T2 = null; Base_Data T3 = null; Base_Data T4 = null; Obj_Structure_Window_Reinforced WIN = null; Obj_Structure_Window_Reinforced WIN2 = null; Obj_Structure_Window_Reinforced WIN3 = null; Obj_Structure_Window_Reinforced WIN4 = null; Obj_Structure_Window_Reinforced WIN5 = null; dynamic T5 = null; dynamic A = null; dynamic G = null; dynamic T6 = null; pa = String13.ParseUrlParams(_params); right_click = pa.Find("right"); left_click = pa.Find("left"); alt_click = pa.Find("alt"); ctrl_click = pa.Find("ctrl"); _default = true; switch ((int)(this.mode)) { case 1: if (_object is Tile && left_click != 0 && !(alt_click != 0) && !(ctrl_click != 0)) { T = _object; if (_object is Tile_Space) { ((Tile)T).ChangeTurf(typeof(Tile_Simulated_Floor_Plasteel)); } else if (_object is Tile_Simulated_Floor) { ((Tile)T).ChangeTurf(typeof(Tile_Simulated_Wall)); } else if (_object is Tile_Simulated_Wall) { ((Tile)T).ChangeTurf(typeof(Tile_Simulated_Wall_RWall)); } GlobalFuncs.log_admin("Build Mode: " + GlobalFuncs.key_name(user) + " built " + T + " at (" + ((dynamic)T).x + "," + ((dynamic)T).y + "," + ((dynamic)T).z + ")"); return(_default); } else if (right_click != 0) { GlobalFuncs.log_admin("Build Mode: " + GlobalFuncs.key_name(user) + " deleted " + _object + " at (" + ((dynamic)_object).x + "," + ((dynamic)_object).y + "," + ((dynamic)_object).z + ")"); if (_object is Tile_Simulated_Wall) { T2 = _object; ((Tile)T2).ChangeTurf(typeof(Tile_Simulated_Floor_Plasteel)); } else if (_object is Tile_Simulated_Floor) { T3 = _object; ((Tile)T3).ChangeTurf(typeof(Tile_Space)); } else if (_object is Tile_Simulated_Wall_RWall) { T4 = _object; ((Tile)T4).ChangeTurf(typeof(Tile_Simulated_Wall)); } else if (_object is Obj) { GlobalFuncs.qdel(_object); } return(_default); } else if (_object is Tile && alt_click != 0 && left_click != 0) { GlobalFuncs.log_admin("Build Mode: " + GlobalFuncs.key_name(user) + " built an airlock at (" + ((dynamic)_object).x + "," + ((dynamic)_object).y + "," + ((dynamic)_object).z + ")"); new Obj_Machinery_Door_Airlock(GlobalFuncs.get_turf(_object)); } else if (_object is Tile && ctrl_click != 0 && left_click != 0) { switch ((int?)(this.build_dir)) { case 1: WIN = new Obj_Structure_Window_Reinforced(GlobalFuncs.get_turf(_object)); WIN.dir = ((int)(GlobalVars.NORTH)); break; case 2: WIN2 = new Obj_Structure_Window_Reinforced(GlobalFuncs.get_turf(_object)); WIN2.dir = ((int)(GlobalVars.SOUTH)); break; case 4: WIN3 = new Obj_Structure_Window_Reinforced(GlobalFuncs.get_turf(_object)); WIN3.dir = ((int)(GlobalVars.EAST)); break; case 8: WIN4 = new Obj_Structure_Window_Reinforced(GlobalFuncs.get_turf(_object)); WIN4.dir = ((int)(GlobalVars.WEST)); break; case 9: WIN5 = new Obj_Structure_Window_Reinforced(GlobalFuncs.get_turf(_object)); WIN5.dir = ((int)(GlobalVars.NORTHWEST)); break; } GlobalFuncs.log_admin("Build Mode: " + GlobalFuncs.key_name(user) + " built a window at (" + ((dynamic)_object).x + "," + ((dynamic)_object).y + "," + ((dynamic)_object).z + ")"); } break; case 2: if (left_click != 0) { if (Lang13.Bool(this.objholder.IsSubclassOf(typeof(Tile)))) { T5 = GlobalFuncs.get_turf(_object); GlobalFuncs.log_admin("Build Mode: " + GlobalFuncs.key_name(user) + " modified " + T5 + " (" + T5.x + "," + T5.y + "," + T5.z + ") to " + this.objholder); ((Tile)T5).ChangeTurf(this.objholder); } else { A = Lang13.Call(this.objholder, GlobalFuncs.get_turf(_object)); A.dir = this.build_dir; GlobalFuncs.log_admin("Build Mode: " + GlobalFuncs.key_name(user) + " modified " + A + "'s (" + A.x + "," + A.y + "," + A.z + ") dir to " + this.build_dir); } } else if (right_click != 0) { if (_object is Obj) { GlobalFuncs.log_admin("Build Mode: " + GlobalFuncs.key_name(user) + " deleted " + _object + " at (" + ((dynamic)_object).x + "," + ((dynamic)_object).y + "," + ((dynamic)_object).z + ")"); GlobalFuncs.qdel(_object); } } break; case 3: if (left_click != 0) { if (_object.vars.Find(this.varholder) != 0) { GlobalFuncs.log_admin("Build Mode: " + GlobalFuncs.key_name(user) + " modified " + ((dynamic)_object).name + "'s " + this.varholder + " to " + this.valueholder); _object.vars[this.varholder] = this.valueholder; } else { ((dynamic)user).WriteMsg("<span class='warning'>" + Lang13.Initial(_object, "name") + " does not have a var called '" + this.varholder + "'</span>"); } } if (right_click != 0) { if (_object.vars.Find(this.varholder) != 0) { GlobalFuncs.log_admin("Build Mode: " + GlobalFuncs.key_name(user) + " modified " + ((dynamic)_object).name + "'s " + this.varholder + " to " + this.valueholder); _object.vars[this.varholder] = Lang13.Initial(_object, this.varholder); } else { ((dynamic)user).WriteMsg("<span class='warning'>" + Lang13.Initial(_object, "name") + " does not have a var called '" + this.varholder + "'</span>"); } } break; case 4: if (left_click != 0) { if (_object is Tile) { return(_default); } this.throw_atom = _object; } if (right_click != 0) { if (this.throw_atom != null) { ((Ent_Dynamic)this.throw_atom).throw_at(_object, 10, 1, user); GlobalFuncs.log_admin("Build Mode: " + GlobalFuncs.key_name(user) + " threw " + this.throw_atom + " at " + _object + " (" + ((dynamic)_object).x + "," + ((dynamic)_object).y + "," + ((dynamic)_object).z + ")"); } } break; case 5: if (!Lang13.Bool(this.cornerA)) { this.cornerA = GlobalFuncs.get_turf(_object); return(_default); } if (Lang13.Bool(this.cornerA) && !Lang13.Bool(this.cornerB)) { this.cornerB = GlobalFuncs.get_turf(_object); } if (left_click != 0) { if (Lang13.Bool(this.cornerA) && Lang13.Bool(this.cornerB)) { if (!Lang13.Bool(this.generator_path)) { ((dynamic)user).WriteMsg("<span class='warning'>Select generator type first.</span>"); } G = Lang13.Call(this.generator_path); ((MapGenerator)G).defineRegion(this.cornerA, this.cornerB, true); ((MapGenerator)G).generate(); this.cornerA = null; this.cornerB = null; return(_default); } } this.cornerA = null; this.cornerB = null; break; case 6: if (left_click != 0) { T6 = GlobalFuncs.get_turf(_object); if (this.stored != null) { GlobalFuncs.DuplicateObject(this.stored, true, null, T6); } } else if (right_click != 0) { if (_object is Ent_Dynamic) { this.stored = _object; } } break; } return(_default); }
// Function from file: glass.dm public bool construct_window(dynamic user = null) { string title = null; ByTable directions = null; int i = 0; Obj_Structure_Window win = null; dynamic dir_to_set = null; dynamic direction = null; bool found = false; Obj_Structure_Window WT = null; Obj_Structure_Window_Reinforced W = null; Obj_Structure_Window_Reinforced_Fulltile W2 = null; Obj_Structure_WindoorAssembly WA = null; Obj_Machinery_Door_Window W3 = null; Obj_Structure_WindoorAssembly WD = null; if (!Lang13.Bool(user) || !(this != null)) { return(false); } if (!(user.loc is Tile)) { return(false); } if (!((Mob)user).IsAdvancedToolUser()) { user.WriteMsg("<span class='warning'>You don't have the dexterity to do this!</span>"); return(false); } title = "Sheet Reinf. Glass"; title += new Txt(" (").item(this.get_amount()).str(" sheet").s().str(" left)").ToString(); dynamic _g = Interface13.Input(title, "Would you like full tile glass a one direction glass pane or a windoor?", null, null, new ByTable(new object [] { "One Direction", "Full Window", "Windoor", "Cancel" }), InputType.Any); // Was a switch-case, sorry for the mess. if (_g == "One Direction") { if (!(this != null)) { return(true); } if (this.loc != user) { return(true); } directions = new ByTable(GlobalVars.cardinal); i = 0; foreach (dynamic _a in Lang13.Enumerate(user.loc, typeof(Obj_Structure_Window))) { win = _a; i++; if (i >= 4) { user.WriteMsg("<span class='danger'>There are too many windows in this location.</span>"); return(true); } directions.Remove(win.dir); if (!GlobalVars.cardinal.Contains(win.ini_dir)) { user.WriteMsg("<span class='danger'>Can't let you do that.</span>"); return(true); } } dir_to_set = 2; foreach (dynamic _c in Lang13.Enumerate(new ByTable(new object [] { user.dir, Num13.Rotate(user.dir, 90), Num13.Rotate(user.dir, 180), Num13.Rotate(user.dir, 270) }))) { direction = _c; found = false; foreach (dynamic _b in Lang13.Enumerate(user.loc, typeof(Obj_Structure_Window))) { WT = _b; if (WT.dir == direction) { found = true; } } if (!found) { dir_to_set = direction; break; } } W = null; W = new Obj_Structure_Window_Reinforced(user.loc, true); W.state = 0; W.dir = Convert.ToInt32(dir_to_set); W.ini_dir = W.dir; W.anchored = 0; W.add_fingerprint(user); this.use(1); } else if (_g == "Full Window") { if (!(this != null)) { return(true); } if (this.loc != user) { return(true); } if ((this.get_amount() ?? 0) < 2) { user.WriteMsg("<span class='warning'>You need more glass to do that!</span>"); return(true); } if (Lang13.Bool(Lang13.FindIn(typeof(Obj_Structure_Window), user.loc))) { user.WriteMsg("<span class='warning'>There is a window in the way!</span>"); return(true); } W2 = null; W2 = new Obj_Structure_Window_Reinforced_Fulltile(user.loc, true); W2.state = 0; W2.anchored = 0; W2.add_fingerprint(user); this.use(2); } else if (_g == "Windoor") { if (!(this != null) || this.loc != user || !(user.loc is Tile)) { return(true); } foreach (dynamic _d in Lang13.Enumerate(user.loc, typeof(Obj_Structure_WindoorAssembly))) { WA = _d; if (WA.dir == Convert.ToInt32(user.dir)) { user.WriteMsg("<span class='warning'>There is already a windoor assembly in that location!</span>"); return(true); } } foreach (dynamic _e in Lang13.Enumerate(user.loc, typeof(Obj_Machinery_Door_Window))) { W3 = _e; if (W3.dir == Convert.ToInt32(user.dir)) { user.WriteMsg("<span class='warning'>There is already a windoor in that location!</span>"); return(true); } } if ((this.get_amount() ?? 0) < 5) { user.WriteMsg("<span class='warning'>You need more glass to do that!</span>"); return(true); } WD = new Obj_Structure_WindoorAssembly(user.loc); WD.state = "01"; WD.anchored = 0; WD.add_fingerprint(user); this.use(5); dynamic _f = user.dir; // Was a switch-case, sorry for the mess. if (_f == 2) { WD.dir = ((int)(GlobalVars.SOUTH)); WD.ini_dir = GlobalVars.SOUTH; } else if (_f == 4) { WD.dir = ((int)(GlobalVars.EAST)); WD.ini_dir = GlobalVars.EAST; } else if (_f == 8) { WD.dir = ((int)(GlobalVars.WEST)); WD.ini_dir = GlobalVars.WEST; } else { WD.dir = ((int)(GlobalVars.NORTH)); WD.ini_dir = GlobalVars.NORTH; } } else { return(true); } return(false); }