Files
a6555ff66c Midweek Bugfix Release (#16809)
* bug fixes for dullahans.. got rid of has_custom open/eyelight  to hopefully fix it. (#16783)

* Fixes feysight runtime (#16794)

* fix fey sight runtiming (#16792)

* adding eyes to dullahan mining. (#16798)

* more languages to defines (#16800)

* Fixes a 2 year old typo (#16802)

* fix speechbubble and runechat position (#16788)

* Convert robot icons to iconforge, update iconforge to not break on them (#16793)

* Mobs will no longer be despawned if they aren't inside a cryopod (#16808)

* fix a crash issue

* fix another crash

* default handling (#16805)

* resize limits and designer / dna update (#16807)

* resize limits and designer / dna update

* .

* genes to mobs

* .

* Update designer.dm

* Update designer.dm

* species cleanup

* Adjusts movement delay to be broader and fix an exploit (#16799)

* Adjusts movement delay to be broader and fix an exploit

- Fixes an exploit where using items that give negative slowdown combined with species with increased 'item_slowdown_mod ' would hit the speed cap (Teshari, custom species with weakling major)
- Removes vorestation comments in the code
- Revamps how the 'calculate_item_encumbrance' works (With comments of how to revert to a fixed version of the old system if it proves to be too resource intensive)

* Adds  comment

* ERT borg additions and sprite fixes (#16787)

* Hand games (#16782)

Added a new verb called "Play Hand Games", found in the IC tab under the Game category. This verb allows you to play one of the following games with someone next to you or over a small table:
- Rock, Paper, Scissors. Each player chooses one of those and the choices are declared at the same time.
- Arm Wrestling. Players choose a strength and a roll is made that is weighted by the scale, larger characters have an advantage.
- Slap Hands. Players choose a reaction speed, and a roll is made that is weighted by scale, smaller characters have an advantage.
- Thumb wars. Literally just RNG for a free roll at any time.

* SCA whitelist approval (#16804)

Application approved here: https://forum.vore-station.net/viewtopic.php?f=45&t=2466

* Digitigrade for hanner and replicants (#16795)

Added the option for hanner and replicants to use digitigrade legs.

Changed the total reform ability to account for clothing to match the sprites to the leg type of the new form.

Why not proteans and prommies? Proteans use prosthetic legs that do not change appearance based on the digitigrade option. Prometheans do work with digitigrade legs but they currently do not match the opacity of the rest of the body.

---------

Co-authored-by: Asher-42 <asherdehanna@gmail.com>
Co-authored-by: Cameron Lennox <killer65311@gmail.com>
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
Co-authored-by: ShadowLarkens <shadowlarkens@gmail.com>
Co-authored-by: SpaceMan-Jim <127170206+SpaceMan-Jim@users.noreply.github.com>
Co-authored-by: SatinIsle <98125273+SatinIsle@users.noreply.github.com>
2025-01-01 18:26:32 +10:00

105 lines
2.6 KiB
Plaintext

/*!
* Copyright (c) 2020 Aleksej Komarov
* SPDX-License-Identifier: MIT
*/
/**
* tgui_panel datum
* Hosts tgchat and other nice features.
*/
/datum/tgui_panel
var/client/client
var/datum/tgui_window/window
var/broken = FALSE
var/initialized_at
var/oldchat = FALSE
/datum/tgui_panel/New(client/client, id)
src.client = client
window = new(client, id)
window.subscribe(src, PROC_REF(on_message))
/datum/tgui_panel/Del()
window.unsubscribe(src)
window.close()
return ..()
/**
* public
*
* TRUE if panel is initialized and ready to receive messages.
*/
/datum/tgui_panel/proc/is_ready()
return !broken && window.is_ready()
/**
* public
*
* Initializes tgui panel.
*/
/datum/tgui_panel/proc/initialize(force = FALSE)
set waitfor = FALSE
// Minimal sleep to defer initialization to after client constructor
sleep(1 TICKS)
initialized_at = world.time
// Perform a clean initialization
window.initialize(
strict_mode = TRUE,
assets = list(
get_asset_datum(/datum/asset/simple/tgui_panel),
))
window.send_asset(get_asset_datum(/datum/asset/simple/namespaced/fontawesome))
window.send_asset(get_asset_datum(/datum/asset/simple/namespaced/tgfont))
window.send_asset(get_asset_datum(/datum/asset/spritesheet_batched/chat))
// Other setup
request_telemetry()
addtimer(CALLBACK(src, PROC_REF(on_initialize_timed_out)), 5 SECONDS)
window.send_message("testTelemetryCommand")
/**
* private
*
* Called when initialization has timed out.
*/
/datum/tgui_panel/proc/on_initialize_timed_out()
// Currently does nothing but sending a message to old chat.
// SEND_TEXT(client, span_userdanger("Failed to load fancy chat, click <a href='byond://?src=[REF(src)];reload_tguipanel=1'>HERE</a> to attempt to reload it."))
/**
* private
*
* Callback for handling incoming tgui messages.
*/
/datum/tgui_panel/proc/on_message(type, payload)
if(type == "ready")
broken = FALSE
// window.send_message("connected", list("round_id" = GLOB.round_id)) // Sends the round ID to the chat, requires round IDs
window.send_message("update", list(
"config" = list(
"client" = list(
"ckey" = client.ckey,
"address" = client.address,
"computer_id" = client.computer_id,
),
"window" = list(
"fancy" = FALSE,
"locked" = FALSE,
),
),
))
return TRUE
if(type == "audio/setAdminMusicVolume")
client.admin_music_volume = payload["volume"]
return TRUE
if(type == "telemetry")
analyze_telemetry(payload)
return TRUE
/**
* public
*
* Sends a round restart notification.
*/
/datum/tgui_panel/proc/send_roundrestart()
window.send_message("roundrestart")