Files
mcbalaam 3799968eb3 feat: new floppy disk sprites; most disks are now under the /item/disk type; adds disk stacking, uqinue styling and wrapping (#94112)
## About The Pull Request

Floppy disks received a sprite upgrade, as well as unique wraps:

<img width="364" height="150" alt="image"
src="https://github.com/user-attachments/assets/0ac433e3-7432-4c06-bec2-aeae00b6852f"
/>

<img width="786" height="527" alt="image"
src="https://github.com/user-attachments/assets/0f36bd0d-0362-4431-8131-49060a2fe348"
/>

You can now stack floppy disks! They also scatter around when thrown.
The video also showcases new styling options with a selection of
stickers! You can also write something on the disk instead of selecting
an icon:


https://github.com/user-attachments/assets/ff0a8542-9d79-4108-ae46-672ca5d620a2

MOST disks now inherit the `/item/disk` type to properly stack and do...
stuff. An updatepaths script included.

## Why It's Good For The Game

Old school is cool. Stacking disks makes them feel more authentic, while
styling allows for more crearivity!

## Changelog

🆑
add: New unique wraps for floppy disks
qol: Floppy disks can now be stacked
image: New sprites and stickers for floppy disks
map: Added and ran an updatepaths script
refactor: Most disks are now under the base disk item type
/🆑

---------

Co-authored-by: The-Tyrant <tyrantofgaming@gmail.com>
2026-01-04 08:52:18 +13:00

88 lines
3.5 KiB
Plaintext

///AI Upgrades
/obj/item/aiupgrade
name = "ai upgrade disk"
desc = "You really shouldn't be seeing this"
icon = 'icons/obj/devices/floppy_disks.dmi'
icon_state = "datadisk3"
///The upgrade that will be applied to the AI when installed
var/datum/ai_module/to_gift = /datum/ai_module
/obj/item/aiupgrade/pre_attack(atom/target, mob/living/user, list/modifiers, list/attack_modifiers)
if(!isAI(target))
return ..()
var/mob/living/silicon/ai/AI = target
var/datum/action/innate/ai/action = locate(to_gift.power_type) in AI.actions
var/datum/ai_module/gifted_ability = new to_gift
if(!to_gift.upgrade)
if(!action)
var/ability = to_gift.power_type
var/datum/action/gifted_action = new ability
gifted_action.Grant(AI)
else if(gifted_ability.one_purchase)
to_chat(user, "[AI] already has \a [src] installed!")
return
else
action.uses += initial(action.uses)
action.desc = "[initial(action.desc)] It has [action.uses] use\s remaining."
action.build_all_button_icons()
else
if(!action)
gifted_ability.upgrade(AI)
if(gifted_ability.unlock_text)
to_chat(AI, gifted_ability.unlock_text)
if(gifted_ability.unlock_sound)
AI.playsound_local(AI, gifted_ability.unlock_sound, 50, 0)
update_static_data(AI)
to_chat(user, span_notice("You install [src], upgrading [AI]."))
to_chat(AI, span_userdanger("[user] has upgraded you with [src]!"))
user.log_message("has upgraded [key_name(AI)] with a [src].", LOG_GAME)
qdel(src)
return TRUE
//Malf Picker
/obj/item/malf_upgrade
name = "combat software upgrade"
desc = "A highly illegal, highly dangerous upgrade for artificial intelligence units, granting them a variety of powers as well as the ability to hack APCs.<br>This upgrade does not override any active laws, and must be applied directly to an active AI core."
icon = 'icons/obj/devices/floppy_disks.dmi'
icon_state = "datadisk3"
/obj/item/malf_upgrade/Initialize(mapload)
. = ..()
ADD_TRAIT(src, TRAIT_CONTRABAND, INNATE_TRAIT)
/obj/item/malf_upgrade/pre_attack(atom/A, mob/living/user, list/modifiers, list/attack_modifiers)
if(!isAI(A))
return ..()
var/mob/living/silicon/ai/AI = A
if(AI.malf_picker)
AI.malf_picker.processing_time += 50
to_chat(AI, span_userdanger("[user] has attempted to upgrade you with combat software that you already possess. You gain 50 points to spend on Malfunction Modules instead."))
else
to_chat(AI, span_userdanger("[user] has upgraded you with combat software!"))
to_chat(AI, span_userdanger("Your current laws and objectives remain unchanged.")) //this unlocks malf powers, but does not give the license to plasma flood
AI.add_malf_picker()
AI.hack_software = TRUE
log_silicon("[key_name(user)] has upgraded [key_name(AI)] with a [src].")
message_admins("[ADMIN_LOOKUPFLW(user)] has upgraded [ADMIN_LOOKUPFLW(AI)] with a [src].")
to_chat(user, span_notice("You install [src], upgrading [AI]."))
qdel(src)
return TRUE
//Lipreading
/obj/item/aiupgrade/surveillance_upgrade
name = "surveillance software upgrade"
desc = "An illegal software package that will allow an artificial intelligence to 'hear' from its cameras via lip reading and hidden microphones."
to_gift = /datum/ai_module/malf/upgrade/eavesdrop
/obj/item/aiupgrade/surveillance_upgrade/Initialize(mapload)
. = ..()
ADD_TRAIT(src, TRAIT_CONTRABAND, INNATE_TRAIT)
/obj/item/aiupgrade/power_transfer
name = "power transfer upgrade"
desc = "A legal upgrade that allows an artificial intelligence to directly provide power to APCs from a distance"
to_gift = /datum/ai_module/power_apc