Files
Bubberstation/code/modules/buildmode/submodes/delete.dm
tattle d81eaae90c Build Mode Preview + better help text (#76095)
## About The Pull Request
Gives `Adv Build Mode` and `Fill` an item preview, and puts the help
text for build mode modes into an examine block.


https://github.com/tgstation/tgstation/assets/66640614/6751c721-6ddd-4761-8311-fb002ea905ac


![image](https://github.com/tgstation/tgstation/assets/66640614/3f6fe986-1767-4639-94d3-523f1039c947)


![image](https://github.com/tgstation/tgstation/assets/66640614/a7eae938-a575-46bd-b00e-865f04e0de20)


## Why It's Good For The Game
It's good to see what you're doing. 

## Changelog
🆑 Tattle
admin: build mode help text is in an examine block
admin: adv build mode and fill now have item previews
/🆑

---------

Co-authored-by: tattle <article.disaster@gmail.com>
Co-authored-by: san7890 <the@san7890.com>
2023-06-23 20:04:18 -06:00

61 lines
2.1 KiB
Plaintext

/datum/buildmode_mode/delete
key = "delete"
/datum/buildmode_mode/delete/show_help(client/builder)
to_chat(builder, span_purple(examine_block(
"[span_bold("Delete an object")] -> Left Mouse Button on obj/turf/mob\n\
[span_bold("Delete all objects of a type")] -> Right Mouse Button on obj/turf/mob"))
)
/datum/buildmode_mode/delete/handle_click(client/c, params, object)
var/list/modifiers = params2list(params)
if(LAZYACCESS(modifiers, LEFT_CLICK))
if(isturf(object))
var/turf/T = object
T.ScrapeAway(flags = CHANGETURF_INHERIT_AIR)
else if(isatom(object))
qdel(object)
if(LAZYACCESS(modifiers, RIGHT_CLICK))
if(check_rights(R_DEBUG|R_SERVER)) //Prevents buildmoded non-admins from breaking everything.
if(isturf(object))
return
var/atom/deleting = object
var/action_type = tgui_alert(usr,"Strict type ([deleting.type]) or type and all subtypes?",,list("Strict type","Type and subtypes","Cancel"))
if(action_type == "Cancel" || !action_type)
return
if(tgui_alert(usr,"Are you really sure you want to delete all instances of type [deleting.type]?",,list("Yes","No")) != "Yes")
return
if(tgui_alert(usr,"Second confirmation required. Delete?",,list("Yes","No")) != "Yes")
return
var/O_type = deleting.type
switch(action_type)
if("Strict type")
var/i = 0
for(var/atom/Obj in world)
if(Obj.type == O_type)
i++
qdel(Obj)
CHECK_TICK
if(!i)
to_chat(usr, "No instances of this type exist")
return
log_admin("[key_name(usr)] deleted all instances of type [O_type] ([i] instances deleted) ")
message_admins(span_notice("[key_name(usr)] deleted all instances of type [O_type] ([i] instances deleted) "))
if("Type and subtypes")
var/i = 0
for(var/Obj in world)
if(istype(Obj,O_type))
i++
qdel(Obj)
CHECK_TICK
if(!i)
to_chat(usr, "No instances of this type exist")
return
log_admin("[key_name(usr)] deleted all instances of type or subtype of [O_type] ([i] instances deleted) ")
message_admins(span_notice("[key_name(usr)] deleted all instances of type or subtype of [O_type] ([i] instances deleted) "))