From e11bab8ed7441a44fd2ef14f3480bbba54a4729c Mon Sep 17 00:00:00 2001 From: cib Date: Wed, 28 Nov 2012 02:32:04 +0100 Subject: [PATCH 1/5] Balancing emergency air tanks. - Reduced volume by 33%, since testing revealed they currently last nearly 10 minutes - Made *everyone* spawn with emergency air tanks, as opposed to random jobs like lawyer etc. --- code/game/jobs/job/assistant.dm | 4 ++++ code/game/jobs/job/civilian.dm | 24 +++++++++++++++++++ code/game/jobs/job/civilian_chaplain.dm | 4 ++++ code/game/jobs/job/medical.dm | 8 +++++++ code/game/jobs/job/science.dm | 10 ++++++-- .../objects/items/weapons/tanks/tank_types.dm | 2 +- 6 files changed, 49 insertions(+), 3 deletions(-) diff --git a/code/game/jobs/job/assistant.dm b/code/game/jobs/job/assistant.dm index 5a68cf9e182..b5b6f039707 100644 --- a/code/game/jobs/job/assistant.dm +++ b/code/game/jobs/job/assistant.dm @@ -12,4 +12,8 @@ if(!H) return 0 H.equip_to_slot_or_del(new /obj/item/clothing/under/color/grey(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) + if(H.backbag == 1) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + else + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) return 1 diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm index 274f5146b7b..1347cc2fd24 100644 --- a/code/game/jobs/job/civilian.dm +++ b/code/game/jobs/job/civilian.dm @@ -57,6 +57,10 @@ H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/clothing/head/chefhat(H), slot_head) H.equip_to_slot_or_del(new /obj/item/device/pda/chef(H), slot_belt) + if(H.backbag == 1) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + else + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) return 1 @@ -80,6 +84,10 @@ H.equip_to_slot_or_del(new /obj/item/clothing/suit/apron(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/device/analyzer/plant_analyzer(H), slot_s_store) H.equip_to_slot_or_del(new /obj/item/device/pda/botanist(H), slot_belt) + if(H.backbag == 1) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + else + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) return 1 @@ -105,6 +113,10 @@ H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves) H.equip_to_slot_or_del(new /obj/item/clothing/glasses/sunglasses(H), slot_glasses) H.equip_to_slot_or_del(new /obj/item/weapon/clipboard(H), slot_l_hand) + if(H.backbag == 1) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + else + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) return 1 @@ -127,6 +139,10 @@ H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/device/pda/cargo(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/clothing/gloves/black(H), slot_gloves) + if(H.backbag == 1) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + else + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) return 1 @@ -251,6 +267,10 @@ H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/janitor(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/device/pda/janitor(H), slot_belt) + if(H.backbag == 1) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + else + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) return 1 @@ -273,6 +293,10 @@ H.equip_to_slot_or_del(new /obj/item/device/pda/librarian(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/weapon/barcodescanner(H), slot_l_hand) + if(H.backbag == 1) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + else + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) return 1 diff --git a/code/game/jobs/job/civilian_chaplain.dm b/code/game/jobs/job/civilian_chaplain.dm index eca1cb35828..6ad83d2b238 100644 --- a/code/game/jobs/job/civilian_chaplain.dm +++ b/code/game/jobs/job/civilian_chaplain.dm @@ -18,6 +18,10 @@ H.equip_to_slot_or_del(new /obj/item/device/pda/chaplain(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chaplain(H), slot_w_uniform) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/black(H), slot_shoes) + if(H.backbag == 1) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + else + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) spawn(0) var/religion_name = "Christianity" var/new_religion = copytext(sanitize(input(H, "You are the Chaplain. Would you like to change your religion? Default is Christianity, in SPACE.", "Name change", religion_name)),1,MAX_NAME_LEN) diff --git a/code/game/jobs/job/medical.dm b/code/game/jobs/job/medical.dm index 900061d9639..8d57e15fcc1 100644 --- a/code/game/jobs/job/medical.dm +++ b/code/game/jobs/job/medical.dm @@ -99,6 +99,10 @@ H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/device/pda/chemist(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat/chemist(H), slot_wear_suit) + if(H.backbag == 1) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + else + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) return 1 @@ -122,6 +126,10 @@ H.equip_to_slot_or_del(new /obj/item/device/pda/geneticist(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat/genetics(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/device/flashlight/pen(H), slot_s_store) + if(H.backbag == 1) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + else + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) return 1 /* diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm index f1a202f1341..0a8a881f34b 100644 --- a/code/game/jobs/job/science.dm +++ b/code/game/jobs/job/science.dm @@ -18,6 +18,10 @@ H.equip_to_slot_or_del(new /obj/item/device/pda/heads/rd(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat(H), slot_wear_suit) H.equip_to_slot_or_del(new /obj/item/weapon/clipboard(H), slot_l_hand) + if(H.backbag == 1) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + else + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) return 1 @@ -41,6 +45,8 @@ H.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(H), slot_shoes) H.equip_to_slot_or_del(new /obj/item/device/pda/toxins(H), slot_belt) H.equip_to_slot_or_del(new /obj/item/clothing/suit/labcoat/science(H), slot_wear_suit) -// H.equip_to_slot_or_del(new /obj/item/clothing/mask/gas(H), slot_wear_mask) -// H.equip_to_slot_or_del(new /obj/item/weapon/tank/oxygen(H), slot_l_hand) + if(H.backbag == 1) + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) + else + H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack) return 1 \ No newline at end of file diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm index 1cbca540bd1..3d785619255 100644 --- a/code/game/objects/items/weapons/tanks/tank_types.dm +++ b/code/game/objects/items/weapons/tanks/tank_types.dm @@ -134,7 +134,7 @@ w_class = 2.0 force = 4.0 distribute_pressure = ONE_ATMOSPHERE*O2STANDARD - volume = 3 //Tiny. Real life equivalents only have 21 breaths of oxygen in them. They're EMERGENCY tanks anyway -errorage (dangercon 2011) + volume = 2 //Tiny. Real life equivalents only have 21 breaths of oxygen in them. They're EMERGENCY tanks anyway -errorage (dangercon 2011) New() From 77943e04f377bc3d1a11df734f5d44a8a25d8095 Mon Sep 17 00:00:00 2001 From: cib Date: Sun, 2 Dec 2012 13:58:57 +0100 Subject: [PATCH 2/5] Balance fix to random blob event. It now lasts 20 minutes instead of 5, and accordingly each blob advancements happens every 30 seconds instead of every 7 seconds. This means more time to respond to the blob, but overally the blob can still be just as harmful if nothing is done about it. --- code/game/gamemodes/events/miniblob.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/gamemodes/events/miniblob.dm b/code/game/gamemodes/events/miniblob.dm index cbb32198363..93f3c2a7172 100644 --- a/code/game/gamemodes/events/miniblob.dm +++ b/code/game/gamemodes/events/miniblob.dm @@ -9,7 +9,7 @@ blobevent = 1 spawn(0) dotheblobbaby() - spawn(3000) + spawn(12000) // blob event can last up to 20 minutes blobevent = 0 spawn(rand(1000, 2000)) //Delayed announcements to keep the crew on their toes. command_alert("Confirmed outbreak of level 5 biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert") @@ -25,5 +25,5 @@ if(B.z != 1) continue B.Life() - spawn(70) - dotheblobbaby() \ No newline at end of file + spawn(280) // advance 1 tile every 30 seconds + dotheblobbaby() From 6ab420237b6b7a1bf49c23861c8bc742e5ecca26 Mon Sep 17 00:00:00 2001 From: cib Date: Thu, 6 Dec 2012 15:14:17 +0100 Subject: [PATCH 3/5] Attack log will now store type path for bullets. --- code/modules/projectiles/projectile.dm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 067ef207acd..ab930dcfe56 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -87,19 +87,19 @@ visible_message("\red [A.name] is hit by the [src.name] in the [def_zone]!")//X has fired Y is now given by the guns so you cant tell who shot you if you could not see the shooter if(istype(firer, /mob)) - M.attack_log += "\[[time_stamp()]\] [firer]/[firer.ckey] shot [M]/[M.ckey] with a [src]" - firer.attack_log += "\[[time_stamp()]\] [firer]/[firer.ckey] shot [M]/[M.ckey] with a [src]" - log_attack("[firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src]") + M.attack_log += "\[[time_stamp()]\] [firer]/[firer.ckey] shot [M]/[M.ckey] with a [src.type]" + firer.attack_log += "\[[time_stamp()]\] [firer]/[firer.ckey] shot [M]/[M.ckey] with a [src.type]" + log_attack("[firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src.type]") - log_admin("ATTACK: [firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src]") - msg_admin_attack("ATTACK: [firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src]") //BS12 EDIT ALG + log_admin("ATTACK: [firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src.type]") + msg_admin_attack("ATTACK: [firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src.type]") //BS12 EDIT ALG else M.attack_log += "\[[time_stamp()]\] UNKNOWN SUBJECT (No longer exists) shot [M]/[M.ckey] with a [src]" - log_attack("UNKNOWN shot [M] ([M.ckey]) with a [src]") + log_attack("UNKNOWN shot [M] ([M.ckey]) with a [src.type]") log_admin("ATTACK: UNKNOWN shot [M] ([M.ckey]) with a [src]") - msg_admin_attack("ATTACK: UNKNOWN shot [M] ([M.ckey]) with a [src]") //BS12 EDIT ALG + msg_admin_attack("ATTACK: UNKNOWN shot [M] ([M.ckey]) with a [src.type]") //BS12 EDIT ALG spawn(0) if(A) From c56974f2e8ba65ba9d6c3fd0db35c68e85a1295e Mon Sep 17 00:00:00 2001 From: cib Date: Sun, 9 Dec 2012 16:04:43 +0100 Subject: [PATCH 4/5] Fixes issue #2043 Player notes list now has a better organized interface, which should prevent BYOND overloading and dying a gruesome death. --- code/modules/admin/admin.dm | 31 +++++++++++++++++++++++++++---- code/modules/admin/holder2.dm | 2 ++ 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 35c600dcd53..74c27f30e2f 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -173,10 +173,11 @@ var/global/floorIsLava = 0 /datum/player_info/var/content // text content of the information /datum/player_info/var/timestamp // Because this is bloody annoying -/datum/admins/proc/PlayerNotes() +#define PLAYER_NOTES_ENTRIES_PER_PAGE 50 +/datum/admins/proc/PlayerNotes(var/page = 1) set category = "Admin" set name = "Player Notes" - var/dat = "Player notes
" + var/dat = "Player notes
" if (!istype(src,/datum/admins)) src = usr.client.holder if (!istype(src,/datum/admins)) @@ -189,10 +190,32 @@ var/global/floorIsLava = 0 if(!note_keys) dat += "No notes found." else + dat += "
" sortList(note_keys) - for(var/t in note_keys) + + // Display the notes on the current page + var/number_pages = note_keys.len / PLAYER_NOTES_ENTRIES_PER_PAGE + var/page_index = page - 1 + if(page_index < 0 || page_index >= number_pages) + return + + for(var/index = page_index * PLAYER_NOTES_ENTRIES_PER_PAGE + 1, \ + index <= (page_index + 1) * PLAYER_NOTES_ENTRIES_PER_PAGE, \ + index++) + + var/t = note_keys[index] dat += "" - dat += "
[t]
" + + dat += "
" + + // Display a footer to select different pages + for(var/index = 1, index <= number_pages, index++) + if(index == page) + dat += "" + dat += "[index] " + if(index == page) + dat += "" + usr << browse(dat, "window=player_notes;size=400x400") diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm index 96bc9b6e20c..3d2c506ae48 100644 --- a/code/modules/admin/holder2.dm +++ b/code/modules/admin/holder2.dm @@ -2706,4 +2706,6 @@ var/list/admin_datums = list() switch(href_list["notes"]) if("show") show_player_info(ckey) + if("list") + PlayerNotes(href_list["index"]) return From fd4a3576d46f5f8db6b9153a41f48491606e05de Mon Sep 17 00:00:00 2001 From: cib Date: Sun, 9 Dec 2012 21:00:36 +0400 Subject: [PATCH 5/5] Fix to the improved player notes list. --- code/modules/admin/admin.dm | 19 ++++++++++++------- code/modules/admin/holder2.dm | 2 +- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 74c27f30e2f..7a14927c057 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -174,16 +174,18 @@ var/global/floorIsLava = 0 /datum/player_info/var/timestamp // Because this is bloody annoying #define PLAYER_NOTES_ENTRIES_PER_PAGE 50 -/datum/admins/proc/PlayerNotes(var/page = 1) +/datum/admins/proc/PlayerNotes() set category = "Admin" set name = "Player Notes" - var/dat = "Player notes
" if (!istype(src,/datum/admins)) src = usr.client.holder if (!istype(src,/datum/admins)) usr << "Error: you are not an admin!" return + PlayerNotesPage(1) +/datum/admins/proc/PlayerNotesPage(page) + var/dat = "Player notes
" var/savefile/S=new("data/player_notes.sav") var/list/note_keys S >> note_keys @@ -195,14 +197,17 @@ var/global/floorIsLava = 0 // Display the notes on the current page var/number_pages = note_keys.len / PLAYER_NOTES_ENTRIES_PER_PAGE + // Emulate ceil(why does BYOND not have ceil) + if(number_pages != round(number_pages)) + number_pages = round(number_pages) + 1 var/page_index = page - 1 if(page_index < 0 || page_index >= number_pages) return - for(var/index = page_index * PLAYER_NOTES_ENTRIES_PER_PAGE + 1, \ - index <= (page_index + 1) * PLAYER_NOTES_ENTRIES_PER_PAGE, \ - index++) - + var/lower_bound = page_index * PLAYER_NOTES_ENTRIES_PER_PAGE + 1 + var/upper_bound = (page_index + 1) * PLAYER_NOTES_ENTRIES_PER_PAGE + upper_bound = min(upper_bound, note_keys.len) + for(var/index = lower_bound, index <= upper_bound, index++) var/t = note_keys[index] dat += "[t]" @@ -1146,4 +1151,4 @@ proc/move_alien_ship() alien_ship_location = 0 else alien_ship_location = 1 - return \ No newline at end of file + return diff --git a/code/modules/admin/holder2.dm b/code/modules/admin/holder2.dm index 3d2c506ae48..9f9e9abd3fa 100644 --- a/code/modules/admin/holder2.dm +++ b/code/modules/admin/holder2.dm @@ -2707,5 +2707,5 @@ var/list/admin_datums = list() if("show") show_player_info(ckey) if("list") - PlayerNotes(href_list["index"]) + PlayerNotesPage(href_list["index"]) return