mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-19 20:06:28 +01:00
Merge branch 'dev' of https://github.com/Baystation12/Baystation12 into 2016-01-12-SMESBalancing
This commit is contained in:
@@ -725,6 +725,22 @@ proc/admin_notice(var/message, var/rights)
|
||||
message_admins("[key_name_admin(usr)] toggled Dead OOC.", 1)
|
||||
feedback_add_details("admin_verb","TDOOC") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/datum/admins/proc/togglehubvisibility()
|
||||
set category = "Server"
|
||||
set desc="Globally Toggles Hub Visibility"
|
||||
set name="Toggle Hub Visibility"
|
||||
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
world.visibility = !(world.visibility)
|
||||
var/long_message = " toggled hub visibility. The server is now [world.visibility ? "visible" : "invisible"] ([world.visibility])."
|
||||
|
||||
send2adminirc("[key_name(src)]" + long_message)
|
||||
message_admins("[key_name_admin(usr)]" + long_message, 1)
|
||||
log_admin("[key_name(usr)] toggled hub visibility.")
|
||||
feedback_add_details("admin_verb","THUB") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc
|
||||
|
||||
/datum/admins/proc/toggletraitorscaling()
|
||||
set category = "Server"
|
||||
set desc="Toggle traitor scaling"
|
||||
|
||||
@@ -65,6 +65,7 @@ var/list/admin_verbs_admin = list(
|
||||
/datum/admins/proc/toggledsay, //toggles dsay on/off for everyone,
|
||||
/client/proc/game_panel, //game panel, allows to change game-mode etc,
|
||||
/client/proc/cmd_admin_say, //admin-only ooc chat,
|
||||
/datum/admins/proc/togglehubvisibility, //toggles visibility on the BYOND Hub,
|
||||
/datum/admins/proc/PlayerNotes,
|
||||
/client/proc/cmd_mod_say,
|
||||
/datum/admins/proc/show_player_info,
|
||||
@@ -702,7 +703,7 @@ var/list/admin_verbs_mentor = list(
|
||||
set category = "Admin"
|
||||
|
||||
if(holder)
|
||||
if(alert("Confirm self-deadmin for the round? You can't re-admin yourself without someont promoting you.",,"Yes","No") == "Yes")
|
||||
if(alert("Confirm self-deadmin for the round? You can re-admin yourself at any time.",,"Yes","No") == "Yes")
|
||||
log_admin("[src] deadmined themself.")
|
||||
message_admins("[src] deadmined themself.", 1)
|
||||
deadmin()
|
||||
|
||||
@@ -12,20 +12,18 @@
|
||||
|
||||
/obj/item/clothing/mask/breath/proc/adjust_mask(mob/user)
|
||||
if(user.canmove && !user.stat)
|
||||
if(!src.hanging)
|
||||
src.hanging = !src.hanging
|
||||
gas_transfer_coefficient = 1 //gas is now escaping to the turf and vice versa
|
||||
item_flags &= ~(AIRTIGHT)
|
||||
body_parts_covered = ~(FACE)
|
||||
src.hanging = !src.hanging
|
||||
if (src.hanging)
|
||||
gas_transfer_coefficient = 1
|
||||
body_parts_covered = body_parts_covered & ~FACE
|
||||
item_flags = item_flags & ~AIRTIGHT
|
||||
icon_state = "breathdown"
|
||||
user << "Your mask is now hanging on your neck."
|
||||
|
||||
else
|
||||
src.hanging = !src.hanging
|
||||
gas_transfer_coefficient = initial(gas_transfer_coefficient)
|
||||
item_flags |= AIRTIGHT
|
||||
body_parts_covered |= FACE
|
||||
icon_state = "breath"
|
||||
body_parts_covered = initial(body_parts_covered)
|
||||
item_flags = initial(item_flags)
|
||||
icon_state = initial(icon_state)
|
||||
user << "You pull the mask up to cover your face."
|
||||
update_clothing_icon()
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@ obj/item/weapon/board/attackby(obj/item/I as obj, mob/user as mob)
|
||||
|
||||
|
||||
/obj/item/weapon/board/interact(mob/user as mob)
|
||||
if(user.incapacitated(INCAPACITATION_DISABLED) || (!isAI(user) && !user.Adjacent(src))) //can't see if you arent conscious. If you are not an AI you can't see it unless you are next to it, either.
|
||||
if(user.is_physically_disabled() || (!isAI(user) && !user.Adjacent(src))) //can't see if you arent conscious. If you are not an AI you can't see it unless you are next to it, either.
|
||||
user << browse(null, "window=boardgame")
|
||||
user.unset_machine()
|
||||
return
|
||||
|
||||
@@ -5,19 +5,19 @@
|
||||
*/
|
||||
|
||||
/datum/language
|
||||
var/name = "an unknown language" // Fluff name of language if any.
|
||||
var/desc = "A language." // Short description for 'Check Languages'.
|
||||
var/speech_verb = "says" // 'says', 'hisses', 'farts'.
|
||||
var/ask_verb = "asks" // Used when sentence ends in a ?
|
||||
var/exclaim_verb = "exclaims" // Used when sentence ends in a !
|
||||
var/whisper_verb // Optional. When not specified speech_verb + quietly/softly is used instead.
|
||||
var/signlang_verb = list() // list of emotes that might be displayed if this language has NONVERBAL or SIGNLANG flags
|
||||
var/colour = "body" // CSS style to use for strings in this language.
|
||||
var/key = "x" // Character used to speak in language eg. :o for Unathi.
|
||||
var/flags = 0 // Various language flags.
|
||||
var/native // If set, non-native speakers will have trouble speaking.
|
||||
var/list/syllables // Used when scrambling text for a non-speaker.
|
||||
var/list/space_chance = 55 // Likelihood of getting a space in the random scramble string
|
||||
var/name = "an unknown language" // Fluff name of language if any.
|
||||
var/desc = "A language." // Short description for 'Check Languages'.
|
||||
var/speech_verb = "says" // 'says', 'hisses', 'farts'.
|
||||
var/ask_verb = "asks" // Used when sentence ends in a ?
|
||||
var/exclaim_verb = "exclaims" // Used when sentence ends in a !
|
||||
var/whisper_verb = "whispers" // Optional. When not specified speech_verb + quietly/softly is used instead.
|
||||
var/signlang_verb = list("signs") // list of emotes that might be displayed if this language has NONVERBAL or SIGNLANG flags
|
||||
var/colour = "body" // CSS style to use for strings in this language.
|
||||
var/key = "x" // Character used to speak in language eg. :o for Unathi.
|
||||
var/flags = 0 // Various language flags.
|
||||
var/native // If set, non-native speakers will have trouble speaking.
|
||||
var/list/syllables // Used when scrambling text for a non-speaker.
|
||||
var/list/space_chance = 55 // Likelihood of getting a space in the random scramble string
|
||||
|
||||
/datum/language/proc/get_random_name(var/gender, name_count=2, syllable_count=4, syllable_divisor=2)
|
||||
if(!syllables || !syllables.len)
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
var/total_burn = 0
|
||||
var/total_brute = 0
|
||||
for(var/obj/item/organ/external/O in organs) //hardcoded to streamline things a bit
|
||||
if(O.status & ORGAN_ROBOT && !O.vital)
|
||||
if((O.status & ORGAN_ROBOT) && !O.vital)
|
||||
continue //*non-vital* robot limbs don't count towards shock and crit
|
||||
total_brute += O.brute_dam
|
||||
total_burn += O.burn_dam
|
||||
|
||||
@@ -9,6 +9,9 @@
|
||||
message_admins("Admin logout: [key_name(src)]")
|
||||
if(admins_number == 0) //Apparently the admin logging out is no longer an admin at this point, so we have to check this towards 0 and not towards 1. Awell.
|
||||
send2adminirc("[key_name(src)] logged out - no more admins online.")
|
||||
..()
|
||||
if(config.delist_when_no_admins && world.visibility)
|
||||
world.visibility = FALSE
|
||||
send2adminirc("Toggled hub visibility. The server is now invisible ([world.visibility]).")
|
||||
|
||||
return 1
|
||||
..()
|
||||
return 1
|
||||
|
||||
@@ -80,6 +80,7 @@
|
||||
return
|
||||
..()
|
||||
machinery_computer.update_icon()
|
||||
machinery_computer.use_power = 0
|
||||
return
|
||||
|
||||
// Tesla links only work on machinery types, so we'll override the default try_install_component() proc
|
||||
@@ -94,6 +95,7 @@
|
||||
// Consoles don't usually have internal power source, so we can't disable tesla link in them.
|
||||
if(istype(machinery_computer, /obj/machinery/modular_computer/console))
|
||||
L.critical = 1
|
||||
L.enabled = 1
|
||||
found = 1
|
||||
..(user, H, found)
|
||||
|
||||
|
||||
@@ -16,25 +16,16 @@
|
||||
|
||||
/datum/nano_module/computer_configurator
|
||||
name = "NTOS Computer Configuration Tool"
|
||||
var/obj/machinery/modular_computer/stationary = null
|
||||
var/obj/item/modular_computer/movable = null
|
||||
|
||||
/datum/nano_module/computer_configurator/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state)
|
||||
if(program)
|
||||
stationary = program.computer
|
||||
movable = program.computer
|
||||
|
||||
if(!istype(stationary))
|
||||
stationary = null
|
||||
if(!istype(movable))
|
||||
movable = null
|
||||
|
||||
if(istype(movable, /obj/item/modular_computer/processor))
|
||||
var/obj/item/modular_computer/processor/P = movable
|
||||
stationary = P.machinery_computer
|
||||
|
||||
// No computer connection, we can't get data from that.
|
||||
if(!movable && !stationary)
|
||||
if(!movable)
|
||||
return 0
|
||||
|
||||
var/list/data = list()
|
||||
@@ -42,27 +33,15 @@
|
||||
if(program)
|
||||
data = program.get_header_data()
|
||||
|
||||
var/list/hardware = list()
|
||||
if(stationary)
|
||||
if(stationary.cpu)
|
||||
movable = stationary.cpu
|
||||
hardware.Add(stationary.tesla_link)
|
||||
else
|
||||
return
|
||||
var/list/hardware = movable.get_all_components()
|
||||
|
||||
if(movable)
|
||||
hardware.Add(movable.network_card)
|
||||
hardware.Add(movable.hard_drive)
|
||||
hardware.Add(movable.card_slot)
|
||||
hardware.Add(movable.nano_printer)
|
||||
hardware.Add(movable.battery_module)
|
||||
data["disk_size"] = movable.hard_drive.max_capacity
|
||||
data["disk_used"] = movable.hard_drive.used_capacity
|
||||
data["power_usage"] = movable.last_power_usage
|
||||
data["battery_exists"] = movable.battery_module ? 1 : 0
|
||||
if(movable.battery_module)
|
||||
data["battery_rating"] = movable.battery_module.battery.maxcharge
|
||||
data["battery_percent"] = round(movable.battery_module.battery.percent())
|
||||
data["disk_size"] = movable.hard_drive.max_capacity
|
||||
data["disk_used"] = movable.hard_drive.used_capacity
|
||||
data["power_usage"] = movable.last_power_usage
|
||||
data["battery_exists"] = movable.battery_module ? 1 : 0
|
||||
if(movable.battery_module)
|
||||
data["battery_rating"] = movable.battery_module.battery.maxcharge
|
||||
data["battery_percent"] = round(movable.battery_module.battery.percent())
|
||||
|
||||
var/list/all_entries[0]
|
||||
for(var/obj/item/weapon/computer_hardware/H in hardware)
|
||||
|
||||
@@ -89,15 +89,20 @@ var/global/list/limb_icon_cache = list()
|
||||
|
||||
/obj/item/organ/external/proc/get_icon(var/skeletal)
|
||||
|
||||
var/gender
|
||||
var/gender = "f"
|
||||
if(owner && owner.gender == MALE)
|
||||
gender = "m"
|
||||
|
||||
if(force_icon)
|
||||
mob_icon = new /icon(force_icon, "[icon_name]")
|
||||
mob_icon = new /icon(force_icon, "[icon_name][gendered_icon ? "_[gender]" : ""]")
|
||||
else
|
||||
if(!dna)
|
||||
mob_icon = new /icon('icons/mob/human_races/r_human.dmi', "[icon_name][gendered_icon ? "_f" : ""]")
|
||||
mob_icon = new /icon('icons/mob/human_races/r_human.dmi', "[icon_name][gendered_icon ? "_[gender]" : ""]")
|
||||
else
|
||||
|
||||
if(gendered_icon)
|
||||
if(!gendered_icon)
|
||||
gender = null
|
||||
else
|
||||
if(dna.GetUIState(DNA_UI_GENDER))
|
||||
gender = "f"
|
||||
else
|
||||
|
||||
@@ -1,6 +1,20 @@
|
||||
/mob/living/var/obj/aiming_overlay/aiming
|
||||
/mob/living/var/list/aimed = list()
|
||||
|
||||
/mob/verb/toggle_gun_mode()
|
||||
set name = "Toggle Gun Mode"
|
||||
set desc = "Begin or stop aiming."
|
||||
set category = "IC"
|
||||
|
||||
if(isliving(src))
|
||||
var/mob/living/M = src
|
||||
if(!M.aiming)
|
||||
M.aiming = new(src)
|
||||
M.aiming.toggle_active()
|
||||
else
|
||||
src << "<span class='warning'>This verb may only be used by living mobs, sorry.</span>"
|
||||
return
|
||||
|
||||
/mob/living/proc/stop_aiming(var/obj/item/thing, var/no_message = 0)
|
||||
if(!aiming)
|
||||
aiming = new(src)
|
||||
|
||||
@@ -105,11 +105,11 @@
|
||||
if (bitecount==0)
|
||||
return
|
||||
else if (bitecount==1)
|
||||
user << "\blue \The [src] was bitten by someone!"
|
||||
user << "<span class='notice'>\The [src] was bitten by someone!</span>"
|
||||
else if (bitecount<=3)
|
||||
user << "\blue \The [src] was bitten [bitecount] times!"
|
||||
user << "<span class='notice'>\The [src] was bitten [bitecount] time\s!</span>"
|
||||
else
|
||||
user << "\blue \The [src] was bitten multiple times!"
|
||||
user << "<span class='notice'>\The [src] was bitten multiple times!</span>"
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
if(istype(W,/obj/item/weapon/storage))
|
||||
@@ -119,32 +119,32 @@
|
||||
// Eating with forks
|
||||
if(istype(W,/obj/item/weapon/material/kitchen/utensil))
|
||||
var/obj/item/weapon/material/kitchen/utensil/U = W
|
||||
if(U.scoop_food)
|
||||
if(!U.reagents)
|
||||
U.create_reagents(5)
|
||||
|
||||
if(!U.reagents)
|
||||
U.create_reagents(5)
|
||||
if (U.reagents.total_volume > 0)
|
||||
user << "<span class='warning'>You already have something on your [U].</span>"
|
||||
return
|
||||
|
||||
if (U.reagents.total_volume > 0)
|
||||
user << "\red You already have something on your [U]."
|
||||
user.visible_message( \
|
||||
"\The [user] scoops up some [src] with \the [U]!", \
|
||||
"<span class='notice'>You scoop up some [src] with \the [U]!</span>" \
|
||||
)
|
||||
|
||||
src.bitecount++
|
||||
U.overlays.Cut()
|
||||
U.loaded = "[src]"
|
||||
var/image/I = new(U.icon, "loadedfood")
|
||||
I.color = src.filling_color
|
||||
U.overlays += I
|
||||
|
||||
reagents.trans_to_obj(U, min(reagents.total_volume,5))
|
||||
|
||||
if (reagents.total_volume <= 0)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
user.visible_message( \
|
||||
"[user] scoops up some [src] with \the [U]!", \
|
||||
"\blue You scoop up some [src] with \the [U]!" \
|
||||
)
|
||||
|
||||
src.bitecount++
|
||||
U.overlays.Cut()
|
||||
U.loaded = "[src]"
|
||||
var/image/I = new(U.icon, "loadedfood")
|
||||
I.color = src.filling_color
|
||||
U.overlays += I
|
||||
|
||||
reagents.trans_to_obj(U, min(reagents.total_volume,5))
|
||||
|
||||
if (reagents.total_volume <= 0)
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
if (is_sliceable())
|
||||
//these are used to allow hiding edge items in food that is not on a table/tray
|
||||
var/can_slice_here = isturf(src.loc) && ((locate(/obj/structure/table) in src.loc) || (locate(/obj/machinery/optable) in src.loc) || (locate(/obj/item/weapon/tray) in src.loc))
|
||||
@@ -154,7 +154,7 @@
|
||||
if (W.w_class >= src.w_class || is_robot_module(W))
|
||||
return
|
||||
|
||||
user << "\red You slip [W] inside [src]."
|
||||
user << "<span class='warning'>You slip \the [W] inside \the [src].</span>"
|
||||
user.remove_from_mob(W)
|
||||
W.dropped(user)
|
||||
add_fingerprint(user)
|
||||
@@ -163,15 +163,15 @@
|
||||
|
||||
if (has_edge(W))
|
||||
if (!can_slice_here)
|
||||
user << "\red You cannot slice [src] here! You need a table or at least a tray to do it."
|
||||
user << "<span class='warning'>You cannot slice \the [src] here! You need a table or at least a tray to do it.</span>"
|
||||
return
|
||||
|
||||
var/slices_lost = 0
|
||||
if (W.w_class > 3)
|
||||
user.visible_message("\blue [user] crudely slices \the [src] with [W]!", "\blue You crudely slice \the [src] with your [W]!")
|
||||
user.visible_message("<span class='notice'>\The [user] crudely slices \the [src] with [W]!</span>", "<span class='notice'>You crudely slice \the [src] with your [W]!</span>")
|
||||
slices_lost = rand(1,min(1,round(slices_num/2)))
|
||||
else
|
||||
user.visible_message("\blue [user] slices \the [src]!", "\blue You slice \the [src]!")
|
||||
user.visible_message("<span class='notice'>\The [user] slices \the [src]!</span>", "<span class='notice'>You slice \the [src]!</span>")
|
||||
|
||||
var/reagents_per_slice = reagents.total_volume/slices_num
|
||||
for(var/i=1 to (slices_num-slices_lost))
|
||||
@@ -474,7 +474,7 @@
|
||||
..()
|
||||
new/obj/effect/decal/cleanable/egg_smudge(src.loc)
|
||||
src.reagents.splash(hit_atom, reagents.total_volume)
|
||||
src.visible_message("\red [src.name] has been squashed.","\red You hear a smack.")
|
||||
src.visible_message("<span class='warning'>\The [src] has been squashed!</span>","<span class='warning'>You hear a smack.</span>")
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/egg/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
@@ -483,10 +483,10 @@
|
||||
var/clr = C.colourName
|
||||
|
||||
if(!(clr in list("blue","green","mime","orange","purple","rainbow","red","yellow")))
|
||||
usr << "\blue The egg refuses to take on this color!"
|
||||
usr << "<span class='notice'>The egg refuses to take on this color!</span>"
|
||||
return
|
||||
|
||||
usr << "\blue You color \the [src] [clr]"
|
||||
usr << "<span class='notice'>You color \the [src] [clr]</span>"
|
||||
icon_state = "egg-[clr]"
|
||||
else
|
||||
..()
|
||||
@@ -1114,7 +1114,7 @@
|
||||
bitesize = 0.1 //this snack is supposed to be eating during looooong time. And this it not dinner food! --rastaf0
|
||||
On_Consume()
|
||||
if(prob(unpopped)) //lol ...what's the point?
|
||||
usr << "\red You bite down on an un-popped kernel!"
|
||||
usr << "<span class='warning'>You bite down on an un-popped kernel!</span>"
|
||||
unpopped = max(0, unpopped-1)
|
||||
..()
|
||||
|
||||
@@ -2674,7 +2674,7 @@
|
||||
if( open && pizza )
|
||||
user.put_in_hands( pizza )
|
||||
|
||||
user << "\red You take the [src.pizza] out of the [src]."
|
||||
user << "<span class='warning'>You take \the [src.pizza] out of \the [src].</span>"
|
||||
src.pizza = null
|
||||
update_icon()
|
||||
return
|
||||
@@ -2688,7 +2688,7 @@
|
||||
boxes -= box
|
||||
|
||||
user.put_in_hands( box )
|
||||
user << "\red You remove the topmost [src] from your hand."
|
||||
user << "<span class='warning'>You remove the topmost [src] from your hand.</span>"
|
||||
box.update_icon()
|
||||
update_icon()
|
||||
return
|
||||
@@ -2727,11 +2727,11 @@
|
||||
box.update_icon()
|
||||
update_icon()
|
||||
|
||||
user << "\red You put the [box] ontop of the [src]!"
|
||||
user << "<span class='warning'>You put \the [box] ontop of \the [src]!</span>"
|
||||
else
|
||||
user << "\red The stack is too high!"
|
||||
user << "<span class='warning'>The stack is too high!</span>"
|
||||
else
|
||||
user << "\red Close the [box] first!"
|
||||
user << "<span class='warning'>Close \the [box] first!</span>"
|
||||
|
||||
return
|
||||
|
||||
@@ -2744,9 +2744,9 @@
|
||||
|
||||
update_icon()
|
||||
|
||||
user << "\red You put the [I] in the [src]!"
|
||||
user << "<span class='warning'>You put \the [I] in \the [src]!</span>"
|
||||
else
|
||||
user << "\red You try to push the [I] through the lid but it doesn't work!"
|
||||
user << "<span class='warning'>You try to push \the [I] through the lid but it doesn't work!</span>"
|
||||
return
|
||||
|
||||
if( istype(I, /obj/item/weapon/pen/) )
|
||||
|
||||
@@ -28,9 +28,9 @@
|
||||
emergency_shuttle.departed = 1
|
||||
|
||||
if (emergency_shuttle.evac)
|
||||
priority_announcement.Announce("The Emergency Shuttle has left the station. Estimate [round(emergency_shuttle.estimate_arrival_time()/60,1)] minutes until the shuttle docks at [boss_name].")
|
||||
priority_announcement.Announce("The Emergency Shuttle has left the station. Estimate [round(emergency_shuttle.estimate_arrival_time()/60,1)] minutes until the shuttle docks at [dock_name].")
|
||||
else
|
||||
priority_announcement.Announce("The Crew Transfer Shuttle has left the station. Estimate [round(emergency_shuttle.estimate_arrival_time()/60,1)] minutes until the shuttle docks at [boss_name].")
|
||||
priority_announcement.Announce("The Crew Transfer Shuttle has left the station. Estimate [round(emergency_shuttle.estimate_arrival_time()/60,1)] minutes until the shuttle docks at [dock_name].")
|
||||
|
||||
/datum/shuttle/ferry/emergency/can_launch(var/user)
|
||||
if (istype(user, /obj/machinery/computer/shuttle_control/emergency))
|
||||
@@ -185,7 +185,7 @@
|
||||
else if (!shuttle.location)
|
||||
shuttle_status = "Standing-by at [station_name]."
|
||||
else
|
||||
shuttle_status = "Standing-by at [boss_name]."
|
||||
shuttle_status = "Standing-by at [dock_name]."
|
||||
if(WAIT_LAUNCH, FORCE_LAUNCH)
|
||||
shuttle_status = "Shuttle has recieved command and will depart shortly."
|
||||
if(WAIT_ARRIVE)
|
||||
|
||||
Reference in New Issue
Block a user