diff --git a/code/datums/components/waddling.dm b/code/datums/components/waddling.dm index f09a92c91c..7b94a14285 100644 --- a/code/datums/components/waddling.dm +++ b/code/datums/components/waddling.dm @@ -10,6 +10,7 @@ var/mob/living/L = parent if(L.incapacitated() || L.lying) return + var/matrix/otransform = matrix(L.transform) //make a copy of the current transform animate(L, pixel_z = 4, time = 0) - animate(pixel_z = 0, transform = turn(matrix(), pick(-12, 0, 12)), time=2) - animate(pixel_z = 0, transform = matrix(), time = 0) + animate(pixel_z = 0, transform = turn(L.transform, pick(-12, 0, 12)), time=2) //waddle. + animate(pixel_z = 0, transform = otransform, time = 0) //return to previous transform. diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 62696a0853..d58edbd025 100755 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -1,7 +1,7 @@ /obj/machinery/recharger name = "recharger" icon = 'icons/obj/stationobjs.dmi' - icon_state = "recharger0" + icon_state = "recharger" base_icon_state = "recharger" desc = "A charging dock for energy based weaponry." use_power = IDLE_POWER_USE @@ -12,6 +12,8 @@ var/obj/item/charging = null var/recharge_coeff = 1 var/using_power = FALSE //Did we put power into "charging" last process()? + ///Did we finish recharging the currently inserted item? + var/finished_recharging = FALSE var/static/list/allowed_devices = typecacheof(list( /obj/item/gun/energy, @@ -48,13 +50,14 @@ charging = new_charging if (new_charging) START_PROCESSING(SSmachines, src) + finished_recharging = FALSE use_power = ACTIVE_POWER_USE using_power = TRUE - update_icon() + update_appearance() else use_power = IDLE_POWER_USE using_power = FALSE - update_icon() + update_appearance() /obj/machinery/recharger/Exited(atom/movable/M, atom/newloc) . = ..() @@ -100,7 +103,8 @@ return 1 if(anchored && !charging) - if(default_deconstruction_screwdriver(user, "rechargeropen", "recharger0", G)) + if(default_deconstruction_screwdriver(user, "recharger", "recharger", G)) + update_appearance() return if(panel_open && G.tool_behaviour == TOOL_CROWBAR) @@ -133,7 +137,7 @@ C.give(C.chargerate * recharge_coeff) use_power(250 * recharge_coeff) using_power = TRUE - update_icon() + update_appearance() if(istype(charging, /obj/item/ammo_box/magazine/recharge)) var/obj/item/ammo_box/magazine/recharge/R = charging @@ -141,7 +145,7 @@ R.stored_ammo += new R.ammo_type(R) use_power(200 * recharge_coeff) using_power = TRUE - update_icon() + update_appearance() return if(istype(charging, /obj/item/ammo_casing/mws_batt)) @@ -152,7 +156,7 @@ using_power = 1 if(R.BB == null) R.chargeshot() - update_icon(using_power) + update_appearance() if(istype(charging, /obj/item/ammo_box/magazine/mws_mag)) var/obj/item/ammo_box/magazine/mws_mag/R = charging @@ -164,14 +168,19 @@ using_power = 1 if(batt.BB == null) batt.chargeshot() - update_icon(using_power) + update_appearance() + + if(!using_power && !finished_recharging) //Inserted thing is at max charge/ammo, notify those around us + finished_recharging = TRUE + playsound(src, 'sound/machines/ping.ogg', 30, TRUE) + say("[charging] has finished recharging!") else return PROCESS_KILL /obj/machinery/recharger/power_change() ..() - update_icon() + update_appearance() /obj/machinery/recharger/emp_act(severity) . = ..() diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 0f5934e8fd..34e9247184 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -44,7 +44,7 @@ cell.use(round(cell.charge * severity/100)) chambered = null //we empty the chamber recharge_newshot() //and try to charge a new shot - update_icon() + update_appearance() /obj/item/gun/energy/get_cell() return cell @@ -61,7 +61,7 @@ recharge_newshot(TRUE) if(selfcharge) START_PROCESSING(SSobj, src) - update_icon() + update_appearance() /obj/item/gun/energy/ComponentInitialize() . = ..() @@ -74,7 +74,7 @@ /obj/item/gun/energy/handle_atom_del(atom/A) if(A == cell) cell = null - update_icon() + update_appearance() return ..() /obj/item/gun/energy/examine(mob/user) @@ -100,7 +100,7 @@ cell.give(100) if(!chambered) //if empty chamber we try to charge a new shot recharge_newshot(TRUE) - update_icon() + update_appearance() // ATTACK SELF IGNORING PARENT RETURN VALUE /obj/item/gun/energy/attack_self(mob/living/user) @@ -174,7 +174,7 @@ if(user_for_feedback) to_chat(user_for_feedback, "[src] is now set to [C.select_name || C].") post_set_firemode() - update_icon(TRUE) + update_appearance() /obj/item/gun/energy/proc/post_set_firemode(recharge_newshot = TRUE) if(recharge_newshot) diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm index 0c34a251ae..c408ad096e 100644 --- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm +++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm @@ -573,6 +573,10 @@ if(batteries.len) var/obj/item/stock_parts/cell/ToCharge = pick(batteries) ToCharge.charge += min(ToCharge.maxcharge - ToCharge.charge, ToCharge.maxcharge/10) //10% of the cell, or to maximum. + ToCharge.update_appearance() //make sure the cell gets their appearance updated. + var/atom/l = ToCharge.loc + if(isgun(l)) //updates the gun appearance as well if the cell is inside one. + l.update_appearance() to_chat(owner, "[linked_extract] discharges some energy into a device you have.") return ..() diff --git a/html/changelog.html b/html/changelog.html index 35731873b2..c1f8c58eaa 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -459,22 +459,6 @@