diff --git a/code/modules/admin/admin_verb_lists_vr.dm b/code/modules/admin/admin_verb_lists_vr.dm index 20f6460b4e..6bb4ee1b4b 100644 --- a/code/modules/admin/admin_verb_lists_vr.dm +++ b/code/modules/admin/admin_verb_lists_vr.dm @@ -189,7 +189,8 @@ var/list/admin_verbs_spawn = list( /client/proc/spawn_chemdisp_cartridge, /client/proc/map_template_load, /client/proc/map_template_upload, - /client/proc/map_template_load_on_new_z + /client/proc/map_template_load_on_new_z, + /client/proc/eventkit_open_mob_spawner //VOREStation Add ) var/list/admin_verbs_server = list( diff --git a/code/modules/eventkit/gm_interfaces/mob_spawner.dm b/code/modules/eventkit/gm_interfaces/mob_spawner.dm index 181d5abba6..8b0eac1054 100644 --- a/code/modules/eventkit/gm_interfaces/mob_spawner.dm +++ b/code/modules/eventkit/gm_interfaces/mob_spawner.dm @@ -1,132 +1,132 @@ -/datum/eventkit/mob_spawner - // The path of the mob to be spawned - var/path - - // Defines if the location of the spawned mob should be bound of the users position - var/loc_lock = FALSE - -/datum/eventkit/mob_spawner/New() - . = ..() - -/datum/eventkit/mob_spawner/tgui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "MobSpawner", "EventKit - Mob Spawner") - ui.set_autoupdate(FALSE) - ui.open() - -/datum/eventkit/mob_spawner/Destroy() - . = ..() - -/datum/eventkit/mob_spawner/tgui_state(mob/user) - return GLOB.tgui_admin_state - -/datum/eventkit/mob_spawner/tgui_static_data(mob/user) - var/list/data = list() - - data["mob_paths"] = typesof(/mob); - - data["initial_x"] = usr.x; - data["initial_y"] = usr.y; - data["initial_z"] = usr.z; - - return data - -/datum/eventkit/mob_spawner/tgui_data(mob/user) - var/list/data = list() - - data["loc_lock"] = loc_lock; - if(loc_lock) - data["loc_x"] = usr.x; - data["loc_y"] = usr.y; - data["loc_z"] = usr.z; - - data["path"] = path; - - var/mob/M = new path(); - if(M) - data["default_path_name"] = M.name; - data["default_desc"] = M.desc; - data["default_flavor_text"] = M.flavor_text; - qdel(M); - - return data - -/datum/eventkit/mob_spawner/tgui_act(action, list/params) - . = ..() - if(.) - return - if(!check_rights_for(usr.client, R_SPAWN)) - return - switch(action) - if("select_path") - path = params["path"] - return TRUE - if("loc_lock") - loc_lock = !loc_lock - return TRUE - if("start_spawn") - var/confirm = tgui_alert(usr, "Are you sure that you want to start spawning your custom mobs?", "Confirmation", list("Yes", "Cancel")) - - if(confirm != "Yes") - return FALSE - - var/amount = params["amount"] - var/name = params["name"] - var/x = params["x"] - var/y = params["y"] - var/z = params["z"] - - var/turf/T = locate(x, y, z) - if(!T) - to_chat(usr, "Those coordinates are outside the boundaries of the map.") - return FALSE - - for(var/i = 0, i < amount, i++) - if(ispath(path,/turf)) - var/turf/TU = get_turf(locate(x, y, z)) - TU.ChangeTurf(path) - else - var/mob/M = new path(usr.loc) - - M.name = sanitize(name) - M.desc = sanitize(params["desc"]) - M.flavor_text = sanitize(params["flavor_text"]) - - /* - WIP: Radius around selected coords - - var/list/turf/destTurfs - for(var/turf/RT in orange(T, params["r"])) - destTurfs += RT - - var/turf/targetTurf = rand(0,length(destTurfs)) - */ - - var/size_mul = params["size_multiplier"] - if(isnum(size_mul)) - M.size_multiplier = size_mul - M.update_icon() - else - to_chat(usr, "Size Multiplier not applied: ([size_mul]) is not a valid input.") - - M.forceMove(T) - - log_and_message_admins("spawned [path] ([name]) at ([x],[y],[z]) [amount] times.") - - return TRUE - -/datum/eventkit/mob_spawner/tgui_close(mob/user) - . = ..() - qdel(src) - -/client/verb/eventkit_open_mob_spawner() - set category = "EventKit" - set name = "Open Mob Spawner" - set desc = "Opens an advanced version of the mob spawner." - - if(!check_rights(R_SPAWN)) - return - - var/datum/eventkit/mob_spawner/spawner = new() - spawner.tgui_interact(usr) +/datum/eventkit/mob_spawner + // The path of the mob to be spawned + var/path + + // Defines if the location of the spawned mob should be bound of the users position + var/loc_lock = FALSE + +/datum/eventkit/mob_spawner/New() + . = ..() + +/datum/eventkit/mob_spawner/tgui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "MobSpawner", "EventKit - Mob Spawner") + ui.set_autoupdate(FALSE) + ui.open() + +/datum/eventkit/mob_spawner/Destroy() + . = ..() + +/datum/eventkit/mob_spawner/tgui_state(mob/user) + return GLOB.tgui_admin_state + +/datum/eventkit/mob_spawner/tgui_static_data(mob/user) + var/list/data = list() + + data["mob_paths"] = typesof(/mob); + + data["initial_x"] = usr.x; + data["initial_y"] = usr.y; + data["initial_z"] = usr.z; + + return data + +/datum/eventkit/mob_spawner/tgui_data(mob/user) + var/list/data = list() + + data["loc_lock"] = loc_lock; + if(loc_lock) + data["loc_x"] = usr.x; + data["loc_y"] = usr.y; + data["loc_z"] = usr.z; + + data["path"] = path; + + var/mob/M = new path(); + if(M) + data["default_path_name"] = M.name; + data["default_desc"] = M.desc; + data["default_flavor_text"] = M.flavor_text; + qdel(M); + + return data + +/datum/eventkit/mob_spawner/tgui_act(action, list/params) + . = ..() + if(.) + return + if(!check_rights_for(usr.client, R_SPAWN)) + return + switch(action) + if("select_path") + path = params["path"] + return TRUE + if("loc_lock") + loc_lock = !loc_lock + return TRUE + if("start_spawn") + var/confirm = tgui_alert(usr, "Are you sure that you want to start spawning your custom mobs?", "Confirmation", list("Yes", "Cancel")) + + if(confirm != "Yes") + return FALSE + + var/amount = params["amount"] + var/name = params["name"] + var/x = params["x"] + var/y = params["y"] + var/z = params["z"] + + var/turf/T = locate(x, y, z) + if(!T) + to_chat(usr, "Those coordinates are outside the boundaries of the map.") + return FALSE + + for(var/i = 0, i < amount, i++) + if(ispath(path,/turf)) + var/turf/TU = get_turf(locate(x, y, z)) + TU.ChangeTurf(path) + else + var/mob/M = new path(usr.loc) + + M.name = sanitize(name) + M.desc = sanitize(params["desc"]) + M.flavor_text = sanitize(params["flavor_text"]) + + /* + WIP: Radius around selected coords + + var/list/turf/destTurfs + for(var/turf/RT in orange(T, params["r"])) + destTurfs += RT + + var/turf/targetTurf = rand(0,length(destTurfs)) + */ + + var/size_mul = params["size_multiplier"] + if(isnum(size_mul)) + M.size_multiplier = size_mul + M.update_icon() + else + to_chat(usr, "Size Multiplier not applied: ([size_mul]) is not a valid input.") + + M.forceMove(T) + + log_and_message_admins("spawned [path] ([name]) at ([x],[y],[z]) [amount] times.") + + return TRUE + +/datum/eventkit/mob_spawner/tgui_close(mob/user) + . = ..() + qdel(src) + +/client/proc/eventkit_open_mob_spawner() + set category = "EventKit" + set name = "Open Mob Spawner" + set desc = "Opens an advanced version of the mob spawner." + + if(!check_rights(R_SPAWN)) + return + + var/datum/eventkit/mob_spawner/spawner = new() + spawner.tgui_interact(usr)