Merge branch 'found_and_hidden' of https://github.com/Trilbyspaceclone/Citadel-Station-13 into found_and_hidden
This commit is contained in:
@@ -324,6 +324,11 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
name = "Service Hallway"
|
||||
icon_state = "hall_service"
|
||||
|
||||
/area/hallway/secondary/civilian
|
||||
name = "Civilian Wing"
|
||||
icon_state = "hallFS"
|
||||
|
||||
|
||||
//Command
|
||||
|
||||
/area/bridge
|
||||
@@ -1046,7 +1051,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
name = "Monastery Garden"
|
||||
icon_state = "hydro"
|
||||
|
||||
|
||||
//Science
|
||||
|
||||
/area/science
|
||||
@@ -1393,3 +1397,199 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
||||
/area/crew_quarters/fitness/pool
|
||||
name = "Pool Area"
|
||||
icon_state = "pool"
|
||||
|
||||
/area/crew_quarters/dorms/blue
|
||||
name = "Blue Dorms"
|
||||
icon_state = "Sleep"
|
||||
nightshift_public_area = NIGHTSHIFT_AREA_NONE
|
||||
|
||||
/area/crew_quarters/dorms/purple
|
||||
name = "Purple Dorms"
|
||||
icon_state = "Sleep"
|
||||
nightshift_public_area = NIGHTSHIFT_AREA_NONE
|
||||
|
||||
/area/crew_quarters/lounge/jazz
|
||||
name = "Jazz Lounge"
|
||||
icon_state = "yellow"
|
||||
ambientsounds = list('sound/ambience/ambidet1.ogg','sound/ambience/ambidet2.ogg')
|
||||
nightshift_public_area = NIGHTSHIFT_AREA_RECREATION
|
||||
|
||||
|
||||
/area/crew_quarters/fitness/recreation
|
||||
name = "Recreation Area"
|
||||
icon_state = "fitness"
|
||||
nightshift_public_area = NIGHTSHIFT_AREA_RECREATION
|
||||
|
||||
/area/crew_quarters/fitness/cogpool
|
||||
name = "Pool"
|
||||
icon_state = "fitness"
|
||||
clockwork_warp_fail = "Pool's closed."
|
||||
nightshift_public_area = NIGHTSHIFT_AREA_RECREATION
|
||||
|
||||
/area/crew_quarters/barbershop
|
||||
name = "Barbershop"
|
||||
icon_state = "blue"
|
||||
nightshift_public_area = NIGHTSHIFT_AREA_RECREATION
|
||||
|
||||
/area/crew_quarters/observatory
|
||||
name = "Observatory"
|
||||
icon_state = "Sleep"
|
||||
|
||||
//Engineering
|
||||
|
||||
/area/engine/teg_hot
|
||||
name = "Hot Loop"
|
||||
icon_state = "red"
|
||||
|
||||
/area/engine/teg_cold
|
||||
name = "Cold Loop"
|
||||
icon_state = "blue"
|
||||
|
||||
/area/engine/workshop
|
||||
name = "Engineering Workshop"
|
||||
icon_state = "engine"
|
||||
|
||||
/area/security/courtroom/jury
|
||||
name = "Jury Room"
|
||||
icon_state = "courtroom"
|
||||
|
||||
/area/quartermaster/miningdock/airless
|
||||
name = "Mining Dock"
|
||||
icon_state = "mining"
|
||||
has_gravity = STANDARD_GRAVITY
|
||||
valid_territory = FALSE
|
||||
outdoors = TRUE
|
||||
ambientsounds = SPACE
|
||||
blob_allowed = FALSE //While part of the station, what good will it do you?
|
||||
|
||||
/area/quartermaster/miningdock/airless/no_grav
|
||||
name = "Mining Dock"
|
||||
icon_state = "mining"
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_IFSTARLIGHT
|
||||
power_light = FALSE
|
||||
power_equip = FALSE
|
||||
power_environ = FALSE
|
||||
valid_territory = FALSE
|
||||
outdoors = TRUE
|
||||
ambientsounds = SPACE
|
||||
blob_allowed = FALSE //While part of the station, what good will it do you?
|
||||
|
||||
/area/janitor/aux
|
||||
name = "Auxiliary Custodial Closet"
|
||||
icon_state = "janitor"
|
||||
flags_1 = NONE
|
||||
|
||||
/area/hydroponics/lobby
|
||||
name = "Hydroponics Lobby"
|
||||
icon_state = "hydro"
|
||||
|
||||
//Storage
|
||||
|
||||
/area/storage/emergency/generic
|
||||
name = "Emergency Storage"
|
||||
icon_state = "emergencystorage"
|
||||
|
||||
//Construction
|
||||
|
||||
/area/construction
|
||||
name = "Construction Area"
|
||||
icon_state = "yellow"
|
||||
ambientsounds = ENGINEERING
|
||||
|
||||
/area/construction/secondary
|
||||
name = "Secondary Construction Area"
|
||||
icon_state = "yellow"
|
||||
|
||||
/area/construction/minisat_exterior
|
||||
name = "Minisat Exterior"
|
||||
icon_state = "yellow"
|
||||
|
||||
/area/construction/mining/aux_base
|
||||
name = "Auxiliary Base Construction"
|
||||
icon_state = "yellow"
|
||||
|
||||
/area/construction/mining/aux_base/closet
|
||||
name = "Auxiliary Closet Construction"
|
||||
icon_state = "yellow"
|
||||
|
||||
/area/construction/supplyshuttle
|
||||
name = "Supply Shuttle"
|
||||
icon_state = "yellow"
|
||||
|
||||
/area/construction/quarters
|
||||
name = "Engineers' Quarters"
|
||||
icon_state = "yellow"
|
||||
|
||||
/area/construction/qmaint
|
||||
name = "Maintenance"
|
||||
icon_state = "yellow"
|
||||
|
||||
/area/construction/hallway
|
||||
name = "Hallway"
|
||||
icon_state = "yellow"
|
||||
|
||||
/area/construction/solars
|
||||
name = "Solar Panels"
|
||||
icon_state = "yellow"
|
||||
|
||||
/area/construction/solarscontrol
|
||||
name = "Solar Panel Control"
|
||||
icon_state = "yellow"
|
||||
|
||||
/area/construction/storage
|
||||
name = "Construction Site Storage"
|
||||
icon_state = "yellow"
|
||||
|
||||
/area/construction/storage/wing
|
||||
name = "Storage Wing"
|
||||
icon_state = "storage_wing"
|
||||
|
||||
//Routers
|
||||
|
||||
/area/router
|
||||
name = "Router"
|
||||
icon_state = "yellow"
|
||||
ambientsounds = ENGINEERING
|
||||
|
||||
/area/router/service
|
||||
name = "Service Router"
|
||||
icon_state = "green"
|
||||
|
||||
/area/router/public
|
||||
name = "Public Router"
|
||||
icon_state = "yellow"
|
||||
|
||||
/area/router/sec
|
||||
name = "Security Router"
|
||||
icon_state = "blue"
|
||||
|
||||
/area/router/medsci
|
||||
name = "MedSci Router"
|
||||
icon_state = "yellow"
|
||||
|
||||
/area/router/eva
|
||||
name = "EVA Router"
|
||||
icon_state = "yellow"
|
||||
|
||||
/area/router/air
|
||||
name = "Airbridge Router"
|
||||
icon_state = "red"
|
||||
|
||||
/area/router/eng
|
||||
name = "Engineering Router"
|
||||
icon_state = "yellow"
|
||||
|
||||
/area/router/aux
|
||||
name = "Routing System"
|
||||
icon_state = "yellow"
|
||||
requires_power = FALSE
|
||||
has_gravity = STANDARD_GRAVITY
|
||||
always_unpowered = TRUE
|
||||
dynamic_lighting = DYNAMIC_LIGHTING_IFSTARLIGHT
|
||||
power_light = FALSE
|
||||
power_equip = FALSE
|
||||
power_environ = FALSE
|
||||
valid_territory = FALSE
|
||||
outdoors = TRUE
|
||||
ambientsounds = SPACE
|
||||
blob_allowed = FALSE //While part of the station, what good will it do you?
|
||||
@@ -63,6 +63,7 @@
|
||||
var/xenobiology_compatible = FALSE //Can the Xenobio management console transverse this area by default?
|
||||
var/list/canSmoothWithAreas //typecache to limit the areas that atoms in this area can smooth with
|
||||
|
||||
|
||||
/// Color on minimaps, if it's null (which is default) it makes one at random.
|
||||
var/minimap_color
|
||||
|
||||
|
||||
+61
-8
@@ -694,14 +694,64 @@
|
||||
|
||||
/atom/vv_get_dropdown()
|
||||
. = ..()
|
||||
. += "---"
|
||||
var/turf/curturf = get_turf(src)
|
||||
if (curturf)
|
||||
.["Jump to"] = "?_src_=holder;[HrefToken()];adminplayerobservecoodjump=1;X=[curturf.x];Y=[curturf.y];Z=[curturf.z]"
|
||||
.["Modify Transform"] = "?_src_=vars;[HrefToken()];modtransform=[REF(src)]"
|
||||
.["Add reagent"] = "?_src_=vars;[HrefToken()];addreagent=[REF(src)]"
|
||||
.["Trigger EM pulse"] = "?_src_=vars;[HrefToken()];emp=[REF(src)]"
|
||||
.["Trigger explosion"] = "?_src_=vars;[HrefToken()];explode=[REF(src)]"
|
||||
VV_DROPDOWN_OPTION("", "---------")
|
||||
if(!ismovableatom(src))
|
||||
var/turf/curturf = get_turf(src)
|
||||
if(curturf)
|
||||
. += "<option value='?_src_=holder;[HrefToken()];adminplayerobservecoodjump=1;X=[curturf.x];Y=[curturf.y];Z=[curturf.z]'>Jump To</option>"
|
||||
VV_DROPDOWN_OPTION(VV_HK_MODIFY_TRANSFORM, "Modify Transform")
|
||||
VV_DROPDOWN_OPTION(VV_HK_ADD_REAGENT, "Add Reagent")
|
||||
VV_DROPDOWN_OPTION(VV_HK_TRIGGER_EMP, "EMP Pulse")
|
||||
VV_DROPDOWN_OPTION(VV_HK_TRIGGER_EXPLOSION, "Explosion")
|
||||
|
||||
/atom/vv_do_topic(list/href_list)
|
||||
. = ..()
|
||||
if(href_list[VV_HK_ADD_REAGENT] && check_rights(R_VAREDIT))
|
||||
if(!reagents)
|
||||
var/amount = input(usr, "Specify the reagent size of [src]", "Set Reagent Size", 50) as num
|
||||
if(amount)
|
||||
create_reagents(amount)
|
||||
|
||||
if(reagents)
|
||||
var/chosen_id = choose_reagent_id(usr)
|
||||
if(chosen_id)
|
||||
var/amount = input(usr, "Choose the amount to add.", "Choose the amount.", reagents.maximum_volume) as num
|
||||
if(amount)
|
||||
reagents.add_reagent(chosen_id, amount)
|
||||
log_admin("[key_name(usr)] has added [amount] units of [chosen_id] to [src]")
|
||||
message_admins("<span class='notice'>[key_name(usr)] has added [amount] units of [chosen_id] to [src]</span>")
|
||||
if(href_list[VV_HK_TRIGGER_EXPLOSION] && check_rights(R_FUN))
|
||||
usr.client.cmd_admin_explosion(src)
|
||||
if(href_list[VV_HK_TRIGGER_EMP] && check_rights(R_FUN))
|
||||
usr.client.cmd_admin_emp(src)
|
||||
if(href_list[VV_HK_MODIFY_TRANSFORM] && check_rights(R_VAREDIT))
|
||||
var/result = input(usr, "Choose the transformation to apply","Transform Mod") as null|anything in list("Scale","Translate","Rotate")
|
||||
var/matrix/M = transform
|
||||
switch(result)
|
||||
if("Scale")
|
||||
var/x = input(usr, "Choose x mod","Transform Mod") as null|num
|
||||
var/y = input(usr, "Choose y mod","Transform Mod") as null|num
|
||||
if(!isnull(x) && !isnull(y))
|
||||
transform = M.Scale(x,y)
|
||||
if("Translate")
|
||||
var/x = input(usr, "Choose x mod","Transform Mod") as null|num
|
||||
var/y = input(usr, "Choose y mod","Transform Mod") as null|num
|
||||
if(!isnull(x) && !isnull(y))
|
||||
transform = M.Translate(x,y)
|
||||
if("Rotate")
|
||||
var/angle = input(usr, "Choose angle to rotate","Transform Mod") as null|num
|
||||
if(!isnull(angle))
|
||||
transform = M.Turn(angle)
|
||||
if(href_list[VV_HK_AUTO_RENAME] && check_rights(R_VAREDIT))
|
||||
var/newname = input(usr, "What do you want to rename this to?", "Automatic Rename") as null|text
|
||||
if(newname)
|
||||
vv_auto_rename(newname)
|
||||
|
||||
/atom/vv_get_header()
|
||||
. = ..()
|
||||
var/refid = REF(src)
|
||||
. += "[VV_HREF_TARGETREF(refid, VV_HK_AUTO_RENAME, "<b id='name'>[src]</b>")]"
|
||||
. += "<br><font size='1'><a href='?_src_=vars;[HrefToken()];rotatedatum=[refid];rotatedir=left'><<</a> <a href='?_src_=vars;[HrefToken()];datumedit=[refid];varnameedit=dir' id='dir'>[dir2text(dir) || dir]</a> <a href='?_src_=vars;[HrefToken()];rotatedatum=[refid];rotatedir=right'>>></a></font>"
|
||||
|
||||
/atom/proc/drop_location()
|
||||
var/atom/L = loc
|
||||
@@ -709,6 +759,9 @@
|
||||
return null
|
||||
return L.AllowDrop() ? L : L.drop_location()
|
||||
|
||||
/atom/proc/vv_auto_rename(newname)
|
||||
name = newname
|
||||
|
||||
/atom/Entered(atom/movable/AM, atom/oldLoc)
|
||||
SEND_SIGNAL(src, COMSIG_ATOM_ENTERED, AM, oldLoc)
|
||||
|
||||
|
||||
@@ -468,9 +468,8 @@
|
||||
|
||||
/atom/movable/vv_get_dropdown()
|
||||
. = ..()
|
||||
. -= "Jump to"
|
||||
.["Follow"] = "?_src_=holder;[HrefToken()];adminplayerobservefollow=[REF(src)]"
|
||||
.["Get"] = "?_src_=holder;[HrefToken()];admingetmovable=[REF(src)]"
|
||||
. += "<option value='?_src_=holder;[HrefToken()];adminplayerobservefollow=[REF(src)]'>Follow</option>"
|
||||
. += "<option value='?_src_=holder;[HrefToken()];admingetmovable=[REF(src)]'>Get</option>"
|
||||
|
||||
/atom/movable/proc/ex_check(ex_id)
|
||||
if(!ex_id)
|
||||
|
||||
@@ -382,18 +382,26 @@
|
||||
explosion(loc, 1, 3, rand(1,5), rand(1,10))
|
||||
var/list/targets = list()
|
||||
var/cur_y = y - round(row_limit * 0.5, 1)
|
||||
var/starting_row = 1
|
||||
if(cur_y < 1)
|
||||
starting_row -= cur_y - 1
|
||||
cur_y = 1
|
||||
var/start_x = x - round(column_limit * 0.5, 1)
|
||||
for(var/row in table) //translate the mines locations into actual turf coordinates.
|
||||
var/starting_column = 1
|
||||
if(start_x < 1)
|
||||
starting_column -= start_x - 1
|
||||
start_x = 1
|
||||
for(var/row in starting_row to length(table)) //translate the mines locations into actual turf coordinates.
|
||||
if(!locate(cur_y, start_x, z))
|
||||
continue
|
||||
break
|
||||
var/cur_x = start_x
|
||||
for(var/column in row)
|
||||
for(var/column in starting_column to length(table[row]))
|
||||
var/coord_value = table[row][column]
|
||||
if(coord_value == 10 || coord_value == 0) //there is a mine in here.
|
||||
var/turf/target = locate(cur_y, cur_x, z)
|
||||
if(!target)
|
||||
continue
|
||||
targets += target
|
||||
var/turf/T = locate(cur_y, cur_x, z)
|
||||
if(!T)
|
||||
break
|
||||
targets += T
|
||||
cur_x++
|
||||
cur_y++
|
||||
var/num_explosions = 0
|
||||
@@ -406,4 +414,4 @@
|
||||
#undef MINESWEEPER_GAME_MAIN_MENU
|
||||
#undef MINESWEEPER_GAME_PLAYING
|
||||
#undef MINESWEEPER_GAME_LOST
|
||||
#undef MINESWEEPER_GAME_WON
|
||||
#undef MINESWEEPER_GAME_WON
|
||||
|
||||
@@ -488,7 +488,7 @@
|
||||
/obj/effect/spawner/lootdrop/druggie_pill = 5,
|
||||
/obj/item/kitchen/knife = 5,
|
||||
/obj/item/screwdriver = 5,
|
||||
/obj/item/crowbar/red = 0.5, //Dont your need a crowbar to open this?
|
||||
/obj/item/crowbar/red = 0.5, //Dont you need a crowbar to open this?
|
||||
/obj/item/stack/medical/bruise_pack = 3,
|
||||
/obj/item/reagent_containers/food/drinks/bottle/vodka = 2,
|
||||
/obj/item/radio = 5,
|
||||
@@ -520,4 +520,4 @@
|
||||
/obj/item/grenade/empgrenade = 15,
|
||||
/obj/item/clothing/gloves/combat = 10,
|
||||
/obj/item/clothing/shoes/sneakers/noslip = 10
|
||||
)
|
||||
)
|
||||
|
||||
@@ -293,10 +293,6 @@
|
||||
name = "Mining Shuttle (Computer Board)"
|
||||
build_path = /obj/machinery/computer/shuttle/mining
|
||||
|
||||
/obj/item/circuitboard/computer/mining_shuttle/common
|
||||
name = "Lavaland Shuttle (Computer Board)"
|
||||
build_path = /obj/machinery/computer/shuttle/mining/common
|
||||
|
||||
/obj/item/circuitboard/computer/white_ship
|
||||
name = "White Ship (Computer Board)"
|
||||
build_path = /obj/machinery/computer/shuttle/white_ship
|
||||
|
||||
@@ -310,11 +310,11 @@ SLIME SCANNER
|
||||
//GENERAL HANDLER
|
||||
if(!damage_message)
|
||||
if(O.organ_flags & ORGAN_FAILING)
|
||||
damage_message += " <span class='alert'><b>End Stage [O.name] failure detected.</b></span>"
|
||||
damage_message += " <span class='alert'><b>Chronic [O.name] failure detected.</b></span>"
|
||||
else if(O.damage > O.high_threshold)
|
||||
damage_message += " <span class='alert'>Chronic [O.name] failure detected.</span>"
|
||||
damage_message += " <span class='alert'>Acute [O.name] failure detected.</span>"
|
||||
else if(O.damage > O.low_threshold && advanced)
|
||||
damage_message += " <font color='red'>Acute [O.name] failure detected.</span>"
|
||||
damage_message += " <font color='red'>Minor [O.name] failure detected.</span>"
|
||||
|
||||
if(temp_message || damage_message)
|
||||
msg += "\t<b><span class='info'>[uppertext(O.name)]:</b></span> [damage_message] [temp_message]\n"
|
||||
|
||||
@@ -498,7 +498,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
icon_state = "catwhip"
|
||||
|
||||
/obj/item/melee/skateboard
|
||||
name = "skateboard"
|
||||
name = "improvised skateboard"
|
||||
desc = "A skateboard. It can be placed on its wheels and ridden, or used as a strong weapon."
|
||||
icon_state = "skateboard"
|
||||
item_state = "skateboard"
|
||||
@@ -506,11 +506,37 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
throwforce = 4
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
attack_verb = list("smacked", "whacked", "slammed", "smashed")
|
||||
///The vehicle counterpart for the board
|
||||
var/board_item_type = /obj/vehicle/ridden/scooter/skateboard
|
||||
|
||||
/obj/item/melee/skateboard/attack_self(mob/user)
|
||||
new /obj/vehicle/ridden/scooter/skateboard(get_turf(user))
|
||||
if(!user.canUseTopic(src, TRUE, FALSE, TRUE))
|
||||
return
|
||||
var/obj/vehicle/ridden/scooter/skateboard/S = new board_item_type(get_turf(user))
|
||||
S.buckle_mob(user)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/melee/skateboard/pro
|
||||
name = "skateboard"
|
||||
desc = "A RaDSTORMz brand professional skateboard. It looks sturdy and well made."
|
||||
icon_state = "skateboard2"
|
||||
item_state = "skateboard2"
|
||||
board_item_type = /obj/vehicle/ridden/scooter/skateboard/pro
|
||||
|
||||
/obj/item/melee/skateboard/hoverboard
|
||||
name = "hoverboard"
|
||||
desc = "A blast from the past, so retro!"
|
||||
icon_state = "hoverboard_red"
|
||||
item_state = "hoverboard_red"
|
||||
board_item_type = /obj/vehicle/ridden/scooter/skateboard/hoverboard
|
||||
|
||||
/obj/item/melee/skateboard/hoverboard/admin
|
||||
name = "\improper Board Of Directors"
|
||||
desc = "The engineering complexity of a spaceship concentrated inside of a board. Just as expensive, too."
|
||||
icon_state = "hoverboard_nt"
|
||||
item_state = "hoverboard_nt"
|
||||
board_item_type = /obj/vehicle/ridden/scooter/skateboard/hoverboard/admin
|
||||
|
||||
/obj/item/melee/baseball_bat
|
||||
name = "baseball bat"
|
||||
desc = "There ain't a skull in the league that can withstand a swatter."
|
||||
|
||||
@@ -213,9 +213,78 @@
|
||||
|
||||
/obj/vv_get_dropdown()
|
||||
. = ..()
|
||||
.["Delete all of type"] = "?_src_=vars;[HrefToken()];delall=[REF(src)]"
|
||||
.["Osay"] = "?_src_=vars;[HrefToken()];osay[REF(src)]"
|
||||
.["Modify armor values"] = "?_src_=vars;[HrefToken()];modarmor=[REF(src)]"
|
||||
VV_DROPDOWN_OPTION("", "---")
|
||||
VV_DROPDOWN_OPTION(VV_HK_MASS_DEL_TYPE, "Delete all of type")
|
||||
VV_DROPDOWN_OPTION(VV_HK_OSAY, "Object Say")
|
||||
VV_DROPDOWN_OPTION(VV_HK_ARMOR_MOD, "Modify armor values")
|
||||
|
||||
/obj/vv_do_topic(list/href_list)
|
||||
if(!(. = ..()))
|
||||
return
|
||||
if(href_list[VV_HK_OSAY])
|
||||
if(check_rights(R_FUN, FALSE))
|
||||
usr.client.object_say(src)
|
||||
if(href_list[VV_HK_ARMOR_MOD])
|
||||
var/list/pickerlist = list()
|
||||
var/list/armorlist = armor.getList()
|
||||
|
||||
for (var/i in armorlist)
|
||||
pickerlist += list(list("value" = armorlist[i], "name" = i))
|
||||
|
||||
var/list/result = presentpicker(usr, "Modify armor", "Modify armor: [src]", Button1="Save", Button2 = "Cancel", Timeout=FALSE, inputtype = "text", values = pickerlist)
|
||||
|
||||
if (islist(result))
|
||||
if (result["button"] != 2) // If the user pressed the cancel button
|
||||
// text2num conveniently returns a null on invalid values
|
||||
armor = armor.setRating(melee = text2num(result["values"]["melee"]),\
|
||||
bullet = text2num(result["values"]["bullet"]),\
|
||||
laser = text2num(result["values"]["laser"]),\
|
||||
energy = text2num(result["values"]["energy"]),\
|
||||
bomb = text2num(result["values"]["bomb"]),\
|
||||
bio = text2num(result["values"]["bio"]),\
|
||||
rad = text2num(result["values"]["rad"]),\
|
||||
fire = text2num(result["values"]["fire"]),\
|
||||
acid = text2num(result["values"]["acid"]))
|
||||
log_admin("[key_name(usr)] modified the armor on [src] ([type]) to melee: [armor.melee], bullet: [armor.bullet], laser: [armor.laser], energy: [armor.energy], bomb: [armor.bomb], bio: [armor.bio], rad: [armor.rad], fire: [armor.fire], acid: [armor.acid]")
|
||||
message_admins("<span class='notice'>[key_name_admin(usr)] modified the armor on [src] ([type]) to melee: [armor.melee], bullet: [armor.bullet], laser: [armor.laser], energy: [armor.energy], bomb: [armor.bomb], bio: [armor.bio], rad: [armor.rad], fire: [armor.fire], acid: [armor.acid]</span>")
|
||||
if(href_list[VV_HK_MASS_DEL_TYPE])
|
||||
if(check_rights(R_DEBUG|R_SERVER))
|
||||
var/action_type = alert("Strict type ([type]) or type and all subtypes?",,"Strict type","Type and subtypes","Cancel")
|
||||
if(action_type == "Cancel" || !action_type)
|
||||
return
|
||||
|
||||
if(alert("Are you really sure you want to delete all objects of type [type]?",,"Yes","No") != "Yes")
|
||||
return
|
||||
|
||||
if(alert("Second confirmation required. Delete?",,"Yes","No") != "Yes")
|
||||
return
|
||||
|
||||
var/O_type = type
|
||||
switch(action_type)
|
||||
if("Strict type")
|
||||
var/i = 0
|
||||
for(var/obj/Obj in world)
|
||||
if(Obj.type == O_type)
|
||||
i++
|
||||
qdel(Obj)
|
||||
CHECK_TICK
|
||||
if(!i)
|
||||
to_chat(usr, "No objects of this type exist")
|
||||
return
|
||||
log_admin("[key_name(usr)] deleted all objects of type [O_type] ([i] objects deleted) ")
|
||||
message_admins("<span class='notice'>[key_name(usr)] deleted all objects of type [O_type] ([i] objects deleted) </span>")
|
||||
if("Type and subtypes")
|
||||
var/i = 0
|
||||
for(var/obj/Obj in world)
|
||||
if(istype(Obj,O_type))
|
||||
i++
|
||||
qdel(Obj)
|
||||
CHECK_TICK
|
||||
if(!i)
|
||||
to_chat(usr, "No objects of this type exist")
|
||||
return
|
||||
log_admin("[key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ")
|
||||
message_admins("<span class='notice'>[key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) </span>")
|
||||
|
||||
/obj/examine(mob/user)
|
||||
. = ..()
|
||||
|
||||
@@ -116,15 +116,15 @@
|
||||
w_items += secret.w_class
|
||||
contents += secret
|
||||
|
||||
/obj/structure/toilet/secret/prison //We care about you Skyrats!
|
||||
secret_type = /obj/effect/spawner/lootdrop/prison_loot_toilet
|
||||
|
||||
/obj/structure/toilet/secret/low_loot
|
||||
secret_type = /obj/effect/spawner/lootdrop/low_loot_toilet
|
||||
|
||||
/obj/structure/toilet/secret/high_loot
|
||||
secret_type = /obj/effect/spawner/lootdrop/high_loot_toilet
|
||||
|
||||
/obj/structure/toilet/secret/prison
|
||||
secret_type = /obj/effect/spawner/lootdrop/prison_loot_toilet
|
||||
|
||||
/obj/structure/urinal
|
||||
name = "urinal"
|
||||
desc = "The HU-452, an experimental urinal. Comes complete with experimental urinal cake."
|
||||
|
||||
Reference in New Issue
Block a user