diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/verbs/modifyvariables.dm index b602d141ddc..308489beabe 100644 --- a/code/modules/admin/verbs/modifyvariables.dm +++ b/code/modules/admin/verbs/modifyvariables.dm @@ -33,10 +33,10 @@ var/list/VVckey_edit = list("key", "ckey") var/class = "text" if(src.holder && src.holder.marked_datum) class = input("What kind of variable?","Variable Type") as null|anything in list("text", - "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default","marked datum ([holder.marked_datum.type])") + "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default", "new atom", "new datum", "marked datum ([holder.marked_datum.type])") else class = input("What kind of variable?","Variable Type") as null|anything in list("text", - "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default") + "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default", "new atom", "new datum") if(!class) return @@ -72,6 +72,14 @@ var/list/VVckey_edit = list("key", "ckey") if("marked datum") var_value = holder.marked_datum + if("new atom") + var/type = input("Enter type:","Type") as null|anything in typesof(/obj,/mob,/area,/turf) + var_value = new type() + + if("new datum") + var/type = input("Enter type:","Type") as null|anything in (typesof(/datum)-typesof(/obj,/mob,/area,/turf)) + var_value = new type() + if(!var_value) return if(istext(var_value)) @@ -90,10 +98,10 @@ var/list/VVckey_edit = list("key", "ckey") var/class = "text" if(src.holder && src.holder.marked_datum) class = input("What kind of variable?","Variable Type") as null|anything in list("text", - "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default","marked datum ([holder.marked_datum.type])") + "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default", "new atom", "new datum","marked datum ([holder.marked_datum.type])") else class = input("What kind of variable?","Variable Type") as null|anything in list("text", - "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default") + "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default", "new atom", "new datum") if(!class) return @@ -129,6 +137,14 @@ var/list/VVckey_edit = list("key", "ckey") if("marked datum") var_value = holder.marked_datum + if("new atom") + var/type = input("Enter type:","Type") as null|anything in typesof(/obj,/mob,/area,/turf) + var_value = new type() + + if("new datum") + var/type = input("Enter type:","Type") as null|anything in (typesof(/datum)-typesof(/obj,/mob,/area,/turf)) + var_value = new type() + if(!var_value) return if(istext(var_value)) @@ -267,10 +283,10 @@ var/list/VVckey_edit = list("key", "ckey") var/class = "text" if(src.holder && src.holder.marked_datum) class = input("What kind of variable?","Variable Type",default) as null|anything in list("text", - "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default","marked datum ([holder.marked_datum.type])", "DELETE FROM LIST") + "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default", "new atom", "new datum","marked datum ([holder.marked_datum.type])", "DELETE FROM LIST") else class = input("What kind of variable?","Variable Type",default) as null|anything in list("text", - "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default", "DELETE FROM LIST") + "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default", "new atom", "new datum", "DELETE FROM LIST") if(!class) return @@ -372,6 +388,22 @@ var/list/VVckey_edit = list("key", "ckey") else L[L.Find(variable)] = new_var + if("new atom") + var/type = input("Enter type:","Type") as null|anything in typesof(/obj,/mob,/area,/turf) + new_var = new type() + if(assoc) + L[assoc_key] = new_var + else + L[L.Find(variable)] = new_var + + if("new datum") + var/type = input("Enter type:","Type") as null|anything in (typesof(/datum)-typesof(/obj,/mob,/area,/turf)) + new_var = new type() + if(assoc) + L[assoc_key] = new_var + else + L[L.Find(variable)] = new_var + O.on_varedit(objectvar) world.log << "### ListVarEdit by [src]: [O.type] [objectvar]: [original_var]=[new_var]" log_admin("[key_name(src)] modified [original_name]'s [objectvar]: [original_var]=[new_var]") @@ -541,10 +573,10 @@ var/list/VVckey_edit = list("key", "ckey") if(src.holder && src.holder.marked_datum) class = input("What kind of variable?","Variable Type",default) as null|anything in list("text", - "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default","marked datum ([holder.marked_datum.type])") + "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default", "new atom", "new datum", "marked datum ([holder.marked_datum.type])") else class = input("What kind of variable?","Variable Type",default) as null|anything in list("text", - "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default") + "num","type","reference","mob reference", "icon","file","list","edit referenced object","restore to default", "new atom", "new datum") if(!class) return @@ -638,6 +670,18 @@ var/list/VVckey_edit = list("key", "ckey") if("marked datum") O.vars[variable] = holder.marked_datum + if("new atom") + var/type = input("Enter type:","Type") as null|anything in typesof(/obj,/mob,/area,/turf) + var/var_new = new type() + if(var_new==null) return + O.vars[variable] = var_new + + if("new datum") + var/type = input("Enter type:","Type") as null|anything in (typesof(/datum)-typesof(/obj,/mob,/area,/turf)) + var/var_new = new type() + if(var_new==null) return + O.vars[variable] = var_new + O.on_varedit(variable) world.log << "### VarEdit by [src]: [O.type] [variable]=[html_encode("[O.vars[variable]]")]" log_admin("[key_name(src)] modified [original_name]'s [variable] to [O.vars[variable]]")