Files
Bubberstation/code/modules/bitrunning/objects/disks.dm
SkyratBot 964fc99589 [MIRROR] Feature: bitrunner, a new supply role (READY) [MDB IGNORE] (#23865)
* Feature: bitrunner, a new supply role (READY)

* Delete bepis.dm

* Conflicts

* Update dynamic_rulesets_midround.dm

* Fixing this invalid icon file path

It was trying to use the aesthetics one

* Bepis is dead

* New digi sprites courtesy of CandleJaxx!!

Now in the correct branch!

* Fixing merge conflict

* bitrunning hotfixes [NO GBP]

* Modular health adjustments

* Revert "Modular health adjustments"

This reverts commit 0ff3c48d398f6c1aac51cdf8fecaf869491bbc86.

* Modular health adjustments

Only this one should be necessary

* The screenshot test

* Bitrunner den for voidraptor (FOR #23865) (#23891)

* no shower in sight

* lets bitrunners actually get to their room and spawn there

* New digi sprites courtesy of CandleJaxx!!

* Revert "New digi sprites courtesy of CandleJaxx!!"

This reverts commit eea9f47de256dd407c78450bc8f2a09b814f93e9.

---------

Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>

* Removes bitrunning unit tests (#78607)

## About The Pull Request
Removes the fraction of unit tests I thought would be safe.
Not thrilled that I have to exclude ALL unit tests now, but hey.

The issue is that atmos attempts to process on a turf which hasn't
initialized yet.
## Why It's Good For The Game
Other PRs can pass checks now
## Changelog
N/A

* Update birdshot.dmm

* Tweaks the BEPIS category of the bitrunning order console

* Adds back the flashdark that we had skyrat edited in

* Update tgstation.dme

* Fixes Voidraptor bitrunning den not being connected to the powergrid

---------

Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: Giz <13398309+vinylspiders@users.noreply.github.com>
Co-authored-by: Paxilmaniac <82386923+Paxilmaniac@users.noreply.github.com>
Co-authored-by: Profakos <profakos@gmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
2023-09-29 20:53:36 -04:00

147 lines
4.5 KiB
Plaintext

/**
* Bitrunning tech disks which let you load items or programs into the vdom on first avatar generation.
* For the record: Balance shouldn't be a primary concern.
* You can make the custom cheese spells you've always wanted.
* Just make it fun and engaging, it's PvE content.
*/
/obj/item/bitrunning_disk
name = "generic bitrunning program"
desc = "A disk containing source code."
icon = 'icons/obj/assemblies/module.dmi'
base_icon_state = "datadisk"
icon_state = "datadisk0"
/// Name of the choice made
var/choice_made
/obj/item/bitrunning_disk/Initialize(mapload)
. = ..()
icon_state = "[base_icon_state][rand(0, 7)]"
update_icon()
RegisterSignal(src, COMSIG_ATOM_EXAMINE, PROC_REF(on_examined))
/obj/item/bitrunning_disk/proc/on_examined(datum/source, mob/examiner, list/examine_text)
SIGNAL_HANDLER
examine_text += span_infoplain("This disk must be carried on your person into a netpod to be used.")
if(isnull(choice_made))
examine_text += span_notice("To make a selection, toggle the disk in hand.")
return
examine_text += span_info("It has been used to select: <b>[choice_made]</b>.")
examine_text += span_notice("It cannot make another selection.")
/obj/item/bitrunning_disk/ability
desc = "A disk containing source code. It can be used to preload abilities into the virtual domain."
/// The selected ability that this grants
var/datum/action/granted_action
/// The list of actions that this can grant
var/list/datum/action/selectable_actions = list()
/obj/item/bitrunning_disk/ability/attack_self(mob/user, modifiers)
. = ..()
if(choice_made)
return
var/names = list()
for(var/datum/action/thing as anything in selectable_actions)
names += initial(thing.name)
var/choice = tgui_input_list(user, message = "Select an ability", title = "Bitrunning Program", items = names)
if(isnull(choice))
return
for(var/datum/action/thing as anything in selectable_actions)
if(initial(thing.name) == choice)
granted_action = thing
if(isnull(granted_action))
return
balloon_alert(user, "selected")
playsound(user, 'sound/items/click.ogg', 50, TRUE)
choice_made = choice
/// Tier 1 programs. Simple, funny, or helpful.
/obj/item/bitrunning_disk/ability/tier1
name = "bitrunning program: basic"
selectable_actions = list(
/datum/action/cooldown/spell/conjure/cheese,
/datum/action/cooldown/spell/basic_heal,
)
/// Tier 2 programs. More complex, powerful, or useful.
/obj/item/bitrunning_disk/ability/tier2
name = "bitrunning program: complex"
selectable_actions = list(
/datum/action/cooldown/spell/pointed/projectile/fireball,
/datum/action/cooldown/spell/pointed/projectile/lightningbolt,
/datum/action/cooldown/spell/forcewall,
)
/// Tier 3 abilities. Very powerful, game breaking.
/obj/item/bitrunning_disk/ability/tier3
name = "bitrunning program: elite"
selectable_actions = list(
/datum/action/cooldown/spell/shapeshift/dragon,
/datum/action/cooldown/spell/shapeshift/polar_bear,
)
/obj/item/bitrunning_disk/item
desc = "A disk containing source code. It can be used to preload items into the virtual domain."
/// The selected item that this grants
var/obj/granted_item
/// The list of actions that this can grant
var/list/obj/selectable_items = list()
/obj/item/bitrunning_disk/item/attack_self(mob/user, modifiers)
. = ..()
if(choice_made)
return
var/names = list()
for(var/obj/thing as anything in selectable_items)
names += initial(thing.name)
var/choice = tgui_input_list(user, message = "Select an ability", title = "Bitrunning Program", items = names)
if(isnull(choice))
return
for(var/obj/thing as anything in selectable_items)
if(initial(thing.name) == choice)
granted_item = thing
balloon_alert(user, "selected")
playsound(user, 'sound/items/click.ogg', 50, TRUE)
choice_made = choice
/// Tier 1 items. Simple, funny, or helpful.
/obj/item/bitrunning_disk/item/tier1
name = "bitrunning gear: simple"
selectable_items = list(
/obj/item/pizzabox/infinite,
/obj/item/gun/medbeam,
/obj/item/grenade/c4,
)
/// Tier 2 items. More complex, powerful, or useful.
/obj/item/bitrunning_disk/item/tier2
name = "bitrunning gear: complex"
selectable_items = list(
/obj/item/chainsaw,
/obj/item/gun/ballistic/automatic/pistol,
/obj/item/melee/energy/blade/hardlight,
)
/// Tier 3 items. Very powerful, game breaking.
/obj/item/bitrunning_disk/item/tier3
name = "bitrunning gear: advanced"
selectable_items = list(
/obj/item/gun/energy/tesla_cannon,
/obj/item/dualsaber/green,
/obj/item/melee/beesword,
)