mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-30 00:21:11 +01:00
Bugfixes - Slowdowns, Sofa spinning, Turbolift squishing, and more (#22043)
Fixes https://github.com/Aurorastation/Aurora.3/issues/21669 Fixes https://github.com/Aurorastation/Aurora.3/issues/21951 Fixes https://github.com/Aurorastation/Aurora.3/issues/21972 Fixes https://github.com/Aurorastation/Aurora.3/issues/22077 changes: - bugfix: "All movespeed_modifier slowdown data now applied correctly post-smooth movement PR. IE: active magboots, duffel bags, etc. again slow you down." - bugfix: "Sofas no longer able to be rotated while anchored." - bugfix: "Attempting to use crowbars, fire axes, hammers on airlocks while in the Hurt intent will now make you attack the airlock." - bugfix: "Fixes graphical bug with open lid graphics for crates painted in any engineering color variants." - bugfix: "Individual butterfly knife parts are no longer larger than butterfly knives themselves." - bugfix: "Elevators that squish mobs (any type of mob/living) will now appropriately gib instead of just quietly deleting them." - rscadd: "Miniature fusion reactor explosions now use subsystem radiation instead of manually applying rad damage to all mobs in range."
This commit is contained in:
@@ -1803,6 +1803,9 @@ About the new airlock wires panel:
|
||||
cable.plugin(src, user)
|
||||
return TRUE
|
||||
else if(!repairing && attacking_item.tool_behaviour == TOOL_CROWBAR)
|
||||
if(user.a_intent == I_HURT)
|
||||
..()
|
||||
return
|
||||
if(istype(attacking_item, /obj/item/melee/arm_blade))
|
||||
if(arePowerSystemsOn() &&!(stat & BROKEN))
|
||||
..()
|
||||
@@ -1841,30 +1844,35 @@ About the new airlock wires panel:
|
||||
else
|
||||
close(1)
|
||||
return TRUE
|
||||
else if(istype(attacking_item, /obj/item/material/twohanded/fireaxe) && !arePowerSystemsOn())
|
||||
else if(istype(attacking_item, /obj/item/material/twohanded/fireaxe))
|
||||
if(locked && user.a_intent != I_HURT)
|
||||
to_chat(user, SPAN_NOTICE("The airlock's bolts prevent it from being forced."))
|
||||
else if(locked && user.a_intent == I_HURT)
|
||||
else if(user.a_intent == I_HURT)
|
||||
..()
|
||||
else if(!welded && !operating)
|
||||
if(density)
|
||||
var/obj/item/material/twohanded/fireaxe/F = attacking_item
|
||||
if(F.wielded)
|
||||
open(1)
|
||||
else if(arePowerSystemsOn())
|
||||
to_chat(user, SPAN_NOTICE("The airlock's motors resist your efforts to force it."))
|
||||
else
|
||||
if(!welded && !operating)
|
||||
if(density)
|
||||
var/obj/item/material/twohanded/fireaxe/F = attacking_item
|
||||
if(F.wielded)
|
||||
open(1)
|
||||
else
|
||||
to_chat(user, SPAN_WARNING("You need to be wielding \the [attacking_item] to do that."))
|
||||
else
|
||||
to_chat(user, SPAN_WARNING("You need to be wielding \the [attacking_item] to do that."))
|
||||
else
|
||||
var/obj/item/material/twohanded/fireaxe/F = attacking_item
|
||||
if(F.wielded)
|
||||
close(1)
|
||||
else
|
||||
to_chat(user, SPAN_WARNING("You need to be wielding \the [attacking_item] to do that."))
|
||||
var/obj/item/material/twohanded/fireaxe/F = attacking_item
|
||||
if(F.wielded)
|
||||
close(1)
|
||||
else
|
||||
to_chat(user, SPAN_WARNING("You need to be wielding \the [attacking_item] to do that."))
|
||||
return TRUE
|
||||
else if(attacking_item.tool_behaviour == TOOL_HAMMER && !arePowerSystemsOn())
|
||||
else if(attacking_item.tool_behaviour == TOOL_HAMMER)
|
||||
if(locked && user.a_intent != I_HURT)
|
||||
to_chat(user, SPAN_NOTICE("The airlock's bolts prevent it from being forced."))
|
||||
else if(locked && user.a_intent == I_HURT)
|
||||
else if(user.a_intent == I_HURT)
|
||||
..()
|
||||
else if(arePowerSystemsOn())
|
||||
to_chat(user, SPAN_NOTICE("The airlock's motors resist your efforts to force it."))
|
||||
else if(!welded && !operating)
|
||||
if(density)
|
||||
open(1)
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
desc = "An unfinished concealed knife, it looks like the screws need to be tightened."
|
||||
icon = 'icons/obj/weapons_build.dmi'
|
||||
icon_state = "butterflystep1"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
force_divisor = 0.1
|
||||
thrown_force_divisor = 0.1
|
||||
|
||||
@@ -18,6 +19,7 @@
|
||||
desc = "A knife blade. Unusable as a weapon without a grip."
|
||||
icon = 'icons/obj/weapons_build.dmi'
|
||||
icon_state = "butterfly2"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
force_divisor = 0.1
|
||||
thrown_force_divisor = 0.1
|
||||
|
||||
@@ -26,6 +28,7 @@
|
||||
desc = "A plasteel grip with screw fittings for a blade."
|
||||
icon = 'icons/obj/weapons_build.dmi'
|
||||
icon_state = "butterfly1"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
force_divisor = 0.1
|
||||
thrown_force_divisor = 0.1
|
||||
|
||||
|
||||
@@ -850,6 +850,7 @@
|
||||
if(istype(src,/obj/structure/closet/crate))
|
||||
icon_state = paint_color
|
||||
icon_door = "eng"
|
||||
icon_door_override = TRUE
|
||||
else
|
||||
icon_state = "eng"
|
||||
icon_door = paint_color
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
icon = 'icons/obj/structure/sofa.dmi'
|
||||
icon_state = "sofa_middle"
|
||||
base_icon = "sofa_middle"
|
||||
obj_flags = OBJ_FLAG_ROTATABLE
|
||||
|
||||
/obj/structure/bed/stool/chair/sofa/brown/New(var/newloc)
|
||||
..(newloc, MATERIAL_STEEL, MATERIAL_LEATHER)
|
||||
|
||||
@@ -299,6 +299,11 @@
|
||||
|
||||
var/tally = mob.movement_delay() + GLOB.config.walk_speed
|
||||
|
||||
// Factor in delay from sources handled by the mob's movespeed_modifier datum (this is what we Should be using).
|
||||
var/movespeed_modifier_delay = mob.cached_multiplicative_slowdown
|
||||
|
||||
move_delay += movespeed_modifier_delay
|
||||
|
||||
// Apply human specific modifiers.
|
||||
var/mob_is_human = ishuman(mob) // Only check this once and just reuse the value.
|
||||
var/sprint_tally = 0
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
. += "Upgraded <b>capacitors</b> will increase maximum power output."
|
||||
|
||||
/obj/machinery/power/portgen/feedback_hints(mob/user, distance, is_adjacent)
|
||||
. = ..()
|
||||
. += ..()
|
||||
if(active)
|
||||
. += "The generator is on."
|
||||
else
|
||||
@@ -120,18 +120,28 @@
|
||||
temperature_gain and max_temperature are set so that the max safe power level is 4.
|
||||
Setting to 5 or higher can only be done temporarily before the generator overheats.
|
||||
*/
|
||||
power_gen = 50000 //Watts output per power_output level
|
||||
var/max_power_output = 5 //The maximum power setting without emagging.
|
||||
var/max_safe_output = 4 // For UI use, maximal output that won't cause overheat.
|
||||
var/time_per_sheet = 576 //fuel efficiency - how long 1 sheet lasts at power level 1
|
||||
var/max_sheets = 50 //max capacity of the hopper
|
||||
var/max_temperature = 300 //max temperature before overheating increases
|
||||
var/temperature_gain = 50 //how much the temperature increases per power output level, in degrees per level
|
||||
|
||||
var/sheets = 0 //How many sheets of material are loaded in the generator
|
||||
var/sheet_left = 0 //How much is left of the current sheet
|
||||
var/temperature = 0 //The current temperature
|
||||
var/overheating = 0 //if this gets high enough the generator explodes
|
||||
/// Watts output per power_output level
|
||||
power_gen = 50000
|
||||
/// The maximum power setting without emagging.
|
||||
var/max_power_output = 5
|
||||
/// For UI use, maximal output that won't cause overheat.
|
||||
var/max_safe_output = 4
|
||||
/// Fuel efficiency - how long 1 sheet lasts at power level 1
|
||||
var/time_per_sheet = 576
|
||||
/// Max capacity of the hopper
|
||||
var/max_sheets = 50
|
||||
/// Max temperature before overheating increases
|
||||
var/max_temperature = 300
|
||||
/// How much the temperature increases per power output level, in degrees per level
|
||||
var/temperature_gain = 50
|
||||
/// How many sheets of material are loaded in the generator
|
||||
var/sheets = 0
|
||||
/// How much is left of the current sheet
|
||||
var/sheet_left = 0
|
||||
/// The current temperature
|
||||
var/temperature = 0
|
||||
/// If this gets high enough the generator explodes
|
||||
var/overheating = 0
|
||||
|
||||
component_types = list(
|
||||
/obj/item/stock_parts/matter_bin,
|
||||
@@ -428,7 +438,7 @@
|
||||
|
||||
/obj/machinery/power/portgen/basic/advanced/explode()
|
||||
//a nice burst of radiation
|
||||
var/rads = 50 + (sheets + sheet_left)*1.5
|
||||
var/rads = 20 + (sheets + sheet_left)*1.5
|
||||
SSradiation.radiate(src, max(40, rads))
|
||||
explosion(loc, 3, 3, 5, 3)
|
||||
qdel(src)
|
||||
@@ -467,8 +477,8 @@
|
||||
base_icon = "reactor"
|
||||
portgen_lightcolour = "#458943"
|
||||
max_safe_output = 5
|
||||
max_power_output = 8 //The maximum power setting without emagging.
|
||||
temperature_gain = 70 //how much the temperature increases per power output level, in degrees per level
|
||||
max_power_output = 8
|
||||
temperature_gain = 70
|
||||
max_temperature = 450
|
||||
time_per_sheet = 400
|
||||
|
||||
@@ -485,12 +495,8 @@
|
||||
|
||||
/obj/machinery/power/portgen/basic/fusion/explode()
|
||||
//a nice burst of radiation
|
||||
var/rads = 50 + (sheets + sheet_left)*1.5
|
||||
for (var/mob/living/L in range(src, 10))
|
||||
//should really fall with the square of the distance, but that makes the rads value drop too fast
|
||||
//I dunno, maybe physics works different when you live in 2D -- SM radiation also works like this, apparently
|
||||
L.apply_damage(max(20, round(rads/get_dist(L,src))), DAMAGE_RADIATION, damage_flags = DAMAGE_FLAG_DISPERSED)
|
||||
|
||||
var/rads = 40 + (sheets + sheet_left)*1.5
|
||||
SSradiation.radiate(src, max(50, rads))
|
||||
explosion(loc, 3, 6, 12, 16, 1)
|
||||
qdel(src)
|
||||
|
||||
|
||||
@@ -95,13 +95,22 @@
|
||||
if(!moving_upwards)
|
||||
for(var/turf/T in destination)
|
||||
for(var/atom/movable/AM in T)
|
||||
AM.crush_act()
|
||||
// for most Atom Movables, we'll more or less just delete them. Mobs get special treatment.
|
||||
if(istype(AM, /mob/living))
|
||||
var/mob/living/safety_hater = AM
|
||||
safety_hater.gib()
|
||||
else
|
||||
AM.crush_act()
|
||||
else
|
||||
for(var/turf/simulated/wall/W in origin)
|
||||
var/turf/T = GET_TURF_ABOVE(W)
|
||||
for(var/atom/movable/AM in T)
|
||||
if(next_floor == floors[floors.len])
|
||||
AM.crush_act()
|
||||
if(istype(AM, /mob/living))
|
||||
var/mob/living/safety_hater = AM
|
||||
safety_hater.gib()
|
||||
else
|
||||
AM.crush_act()
|
||||
else
|
||||
move_candidates += AM
|
||||
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
author: Batrachophrenoboocosmomachia
|
||||
delete-after: True
|
||||
changes:
|
||||
- bugfix: "All movespeed_modifier slowdown data now applied correctly post-smooth movement PR. IE: active magboots, duffel bags, etc. again slow you down."
|
||||
- bugfix: "Sofas no longer able to be rotated while anchored."
|
||||
- bugfix: "Attempting to use crowbars, fire axes, hammers on airlocks while in the Hurt intent will now make you attack the airlock."
|
||||
- bugfix: "Fixes graphical bug with open lid graphics for crates painted in any engineering color variants."
|
||||
- bugfix: "Individual butterfly knife parts are no longer larger than butterfly knives themselves."
|
||||
- bugfix: "Elevators that squish mobs (any type of mob/living) will now appropriately gib instead of just quietly deleting them."
|
||||
- rscadd: "Miniature fusion reactor explosions now use subsystem radiation instead of manually applying rad damage to all mobs in range."
|
||||
Reference in New Issue
Block a user