diff --git a/_maps/map_files/tgstation.2.1.3.dmm b/_maps/map_files/tgstation.2.1.3.dmm index d5e1f8a2a8c..f1d5c7ce4e4 100644 --- a/_maps/map_files/tgstation.2.1.3.dmm +++ b/_maps/map_files/tgstation.2.1.3.dmm @@ -3290,7 +3290,7 @@ "bln" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/assembly/robotics) "blo" = (/obj/machinery/mecha_part_fabricator,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/assembly/robotics) "blp" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 8; icon_state = "warnwhite"},/area/assembly/robotics) -"blq" = (/obj/machinery/ai_status_display{pixel_x = 32; pixel_y = 0},/obj/structure/table,/obj/item/device/flash/synthetic,/obj/item/device/flash/synthetic,/obj/item/device/flash/synthetic,/obj/item/device/flash/synthetic,/obj/item/device/flash/synthetic,/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) +"blq" = (/obj/machinery/ai_status_display{pixel_x = 32; pixel_y = 0},/obj/structure/table,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/obj/item/device/flash,/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics) "blr" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 9; icon_state = "warnwhite"},/area/medical/research{name = "Research Division"}) "bls" = (/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"}) "blt" = (/obj/machinery/camera{c_tag = "Research Division Access"; dir = 2; network = list("SS13")},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/medical/research{name = "Research Division"}) diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index 741706b5d38..1c41c285f3e 100644 --- a/code/game/objects/items/devices/flash.dm +++ b/code/game/objects/items/devices/flash.dm @@ -18,63 +18,48 @@ /obj/item/device/flash/proc/clown_check(mob/user) if(user && (CLUMSY in user.mutations) && prob(50)) flash_carbon(user, user, 15, 0) - visible_message("[user] blinds [user] with the flash!") + user.visible_message("[user] blinds [user] with the flash!") return 0 return 1 -/obj/item/device/flash/proc/handle_flash_charges() - //spamming the flash before it's fully charged (60seconds) increases the chance of it breaking. It will never break on the first use. - switch(times_used) - if(0 to 5) - last_used = world.time - if(prob(times_used)) //if you use it 5 times in a minute it has a 10% chance to break! - burn_out() - return 0 - else //can only use it 5 times a minute - visible_message("*click* *click*") - return 0 - times_used++ - return 1 - - -/obj/item/device/flash/proc/burn_out() //Made so you can override it if you want to have an invincible flash from R&D or something. +/obj/item/device/flash/proc/burn_out(var/mob/user) //Made so you can override it if you want to have an invincible flash from R&D or something. broken = 1 icon_state = "[initial(icon_state)]burnt" - visible_message("The [src.name] burns out!") + user.visible_message("The [src.name] burns out!") -/obj/item/device/flash/proc/flash_recharge() - //capacitor recharges over time - for(var/i=0, i<3, i++) - if(last_used+600 > world.time) - break - last_used += 600 - times_used -= 2 +/obj/item/device/flash/proc/flash_recharge(var/mob/user) + if(prob(times_used * 2)) //if you use it 5 times in a minute it has a 10% chance to break! + burn_out(user) + return 0 + + var/deciseconds_passed = world.time - last_used + for(var/seconds = deciseconds_passed/10, seconds>=10, seconds-=10) //get 1 charge every 10 seconds + times_used-- + last_used = world.time times_used = max(0, times_used) //sanity -/obj/item/device/flash/proc/try_use_flash(var/mob/flasher) - flash_recharge() +/obj/item/device/flash/proc/try_use_flash(var/mob/user) + flash_recharge(user) if(broken) return 0 - if(!handle_flash_charges()) - return 0 playsound(src.loc, 'sound/weapons/flash.ogg', 100, 1) flick("[initial(icon_state)]2", src) + times_used++ - if(flasher && !clown_check(flasher)) + if(user && !clown_check(user)) return 0 return 1 -/obj/item/device/flash/proc/flash_carbon(var/mob/living/carbon/M, var/mob/user = null, var/power = 10, convert = 1) +/obj/item/device/flash/proc/flash_carbon(var/mob/living/carbon/M, var/mob/user = null, var/power = 5, convert = 1) add_logs(user, M, "flashed", object="[src.name]") - //if(iscarbon(M)) var/safety = M:eyecheck() if(safety <= 0) M.confused += power @@ -88,38 +73,32 @@ return 0 if(iscarbon(M)) - flash_carbon(M, user, 10, 1) - visible_message("[user] blinds [M] with the flash!") + flash_carbon(M, user, 5, 1) + user.visible_message("[user] blinds [M] with the flash!") return 1 else if(issilicon(M)) M.Weaken(rand(5,10)) add_logs(user, M, "flashed", object="[src.name]") - visible_message("[user] overloads [M]'s sensors with the flash!") + user.visible_message("[user] overloads [M]'s sensors with the flash!") return 1 - visible_message("[user] fails to blind [M] with the flash!") + user.visible_message("[user] fails to blind [M] with the flash!") /obj/item/device/flash/attack_self(mob/living/carbon/user, flag = 0, emp = 0) if(!try_use_flash(user)) return 0 for(var/mob/living/carbon/M in oviewers(3, null)) - flash_carbon(M, user, 5, 0) + flash_carbon(M, user, 3, 0) /obj/item/device/flash/emp_act(severity) if(!try_use_flash()) return 0 - for(var/mob/living/carbon/M in viewers(3, null)) flash_carbon(M, null, 10, 0) burn_out() - - //if(istype(loc, /mob/living/carbon)) - //var/mob/living/carbon/M = loc - //flash_carbon(M, null, 15, 0) - //visible_message("[M] is blinded by the [src.name]!") ..() @@ -158,7 +137,7 @@ ..() cyborg_flash_animation(user) -/obj/item/device/flash/cyborg/attack_self(mob/living/M, mob/user) +/obj/item/device/flash/cyborg/attack_self(mob/user) ..() cyborg_flash_animation(user) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 981217e6ad8..abd72da72d3 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -36,7 +36,7 @@ /obj/item/weapon/robot_module/New() modules += new /obj/item/device/flashlight(src) - modules += new /obj/item/device/flash(src) + modules += new /obj/item/device/flash/cyborg(src) emag = new /obj/item/toy/sword(src) emag.name = "Placeholder Emag Item" // jetpack = new /obj/item/toy/sword(src)