mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-29 19:11:51 +00:00
* Adds the Sandstorm random event, directional meteor functionality, space sand. (#71802) <!-- Write **BELOW** The Headers and **ABOVE** The comments else it may not be viewable. --> <!-- You can view Contributing.MD for a detailed description of the pull request process. --> ## About The Pull Request  Hey guys, it's your boy. Back at it again with another meteor-adjacent event PR. Adds the Sandstorm random event, inspired by the long-unused admin only one. It picks a direction to approach from, alerts the crew of its imminent arrival, and after a little over a minute of preparatory time, sends waves of sand and dust to grind down everything in that direction. To accomplish this, some minor adjustments had to be made to meteor generation code. They can now be passed an optional arg for a direction to be thrown from, and will pick a random one if no direction is given. Also introduces the newest addition to our cast of meteors -- space sand! It's even weaker than space dust, and shows up exclusively in this event. Space sand is **ineffective against rwalls**, and will not damage the arrivals area's high-tech sand-resistant glass. This is to prevent this event from venting one of the most dust-vulnerable areas on the station, and to make sure new players aren't shafted into firelock hell when the right angle is picked. I did a lot of testing and tweaking of numbers to get the damage to average at about the level I'm comfortable with. This is meant to be a high-impact event that isn't as destructive (or unavoidable) as a meteor wave. Speaking of avoidance, let's talk about mitigation: You get an early warning and a direction the sand will come from. You have time to grab repair supplies, move to safety, get a MODsuit. You can make worthwhile repairs as the sand comes in from inside (or outside, if you're brave enough) with nothing more than a welder and iron sheets. If you're feeling particularly spicy, you can leverage your prep time setting up shield generators, which spawn in engineering and have been added to the maintenance machines loot pool. Anyone can contribute, so do your part as a good crewmate and help out! All that being said, the event can't be prevented entirely. Shit's going to get shredded, especially on the outside of the station. Damage will vary heavily based on the station and direction, ranging from inconsequential to threatening. It should happen late enough into the round that, at the bare minimum, the crew shouldn't be caught unprepared. For those of you who are worried, the ORIGINAL sandstorm admin event is still with us too. It's been moved from the space dust file into the Sandstorm event file. This PR also makes a very minor change to the naming of the space _dust_ events, for better menuing. So, to sum it all up: Sand hits grinds down one side of the station, you get a minute of warning, shield generators now spawn in maintenance. Be a good crewmate and help where you can. <!-- Describe The Pull Request. Please be sure every change is documented or this can delay review and even discourage maintainers from merging your PR! --> ## Why It's Good For The Game More event variety is good, and events that give the players agency on how bad the impact will be is even better. <!-- Argue for the merits of your changes and how they benefit the game, especially if they are controversial and/or far reaching. If you can't actually explain WHY what you are doing will improve the game, then it probably isn't good for the game in the first place. --> ## Changelog <!-- If your PR modifies aspects of the game that can be concretely observed by players or admins you should add a changelog. If your change does NOT meet this description, remove this section. Be sure to properly mark your PRs to prevent unnecessary GBP loss. You can read up on GBP and it's effects on PRs in the tgstation guides for contributors. Please note that maintainers freely reserve the right to remove and add tags should they deem it appropriate. You can attempt to finagle the system all you want, but it's best to shoot for clear communication right off the bat. --> 🆑 Rhials add: Sandstorm random event! A random side of the station is pummeled by an onslaught of sand and dust. If you hear that one is approaching, grab a welder and some iron to help with repairs! add: Space sand! It's weak and doesn't hurt reinforced walls, but shouldn't be underestimated in high quantities. code: You can now pass a start direction to the spawn_meteors/spawn_meteor global procs. /🆑 <!-- Both 🆑's are required for the changelog to work! You can put your name to the right of the first 🆑 if you want to overwrite your GitHub username as author ingame. --> <!-- You can use multiple of the same prefix (they're only used for the icon ingame) and delete the unneeded ones. Despite some of the tags, changelogs should generally represent how a player might be affected by the changes rather than a summary of the PR's contents. --> * Adds the Sandstorm random event, directional meteor functionality, space sand. Co-authored-by: Rhials <Datguy33456@gmail.com>
139 lines
4.2 KiB
Plaintext
139 lines
4.2 KiB
Plaintext
/obj/effect/spawner/random/engineering
|
|
name = "engineering loot spawner"
|
|
desc = "All engineering related spawners go here"
|
|
icon_state = "toolbox"
|
|
|
|
/obj/effect/spawner/random/engineering/tool
|
|
name = "Tool spawner"
|
|
icon_state = "wrench"
|
|
loot = list(
|
|
/obj/item/wrench = 2,
|
|
/obj/item/wirecutters = 2,
|
|
/obj/item/screwdriver = 2,
|
|
/obj/item/crowbar = 2,
|
|
/obj/item/weldingtool = 2,
|
|
/obj/item/stack/cable_coil = 2,
|
|
/obj/item/analyzer = 2,
|
|
/obj/item/t_scanner = 2,
|
|
/obj/item/multitool = 1,
|
|
/obj/item/clothing/glasses/meson = 1,
|
|
/obj/item/storage/belt/utility = 1,
|
|
/obj/item/clothing/head/utility/welding = 1,
|
|
)
|
|
|
|
/obj/effect/spawner/random/engineering/tool_advanced
|
|
name = "Advanced tool spawner"
|
|
icon_state = "wrench"
|
|
loot = list( // Mail loot spawner. Some sort of random and rare building tool. No alien tech here.
|
|
/obj/item/wrench/caravan,
|
|
/obj/item/wirecutters/caravan,
|
|
/obj/item/screwdriver/caravan,
|
|
/obj/item/crowbar/red/caravan,
|
|
/obj/item/weldingtool/largetank,
|
|
)
|
|
|
|
/obj/effect/spawner/random/engineering/tool_alien
|
|
name = "Rare tool spawner"
|
|
icon_state = "wrench"
|
|
loot = list(
|
|
/obj/item/wrench/abductor,
|
|
/obj/item/wirecutters/abductor,
|
|
/obj/item/screwdriver/abductor,
|
|
/obj/item/crowbar/abductor,
|
|
/obj/item/weldingtool/abductor,
|
|
/obj/item/multitool/abductor,
|
|
)
|
|
|
|
/obj/effect/spawner/random/engineering/material_cheap
|
|
name = "Cheap material spawner"
|
|
icon_state = "cardboard"
|
|
loot = list(
|
|
/obj/item/stack/sheet/mineral/wood{amount = 30},
|
|
/obj/item/stack/sheet/cardboard{amount = 30},
|
|
/obj/item/stack/sheet/mineral/sandstone/thirty,
|
|
)
|
|
|
|
/obj/effect/spawner/random/engineering/material
|
|
name = "Material spawner"
|
|
icon_state = "metal"
|
|
loot = list(
|
|
/obj/item/stack/sheet/iron/fifty = 5,
|
|
/obj/item/stack/sheet/glass/fifty = 5,
|
|
/obj/item/stack/rods/fifty = 3,
|
|
/obj/item/stack/sheet/rglass{amount = 30} = 2,
|
|
)
|
|
|
|
/obj/effect/spawner/random/engineering/material_rare
|
|
name = "Rare material spawner"
|
|
icon_state = "diamond"
|
|
spawn_loot_count = 3
|
|
loot = list( // Space loot spawner. Random selecton of a few rarer materials.
|
|
/obj/item/stack/sheet/runed_metal/ten = 20,
|
|
/obj/item/stack/sheet/mineral/diamond{amount = 15} = 15,
|
|
/obj/item/stack/sheet/mineral/uranium{amount = 15} = 15,
|
|
/obj/item/stack/sheet/mineral/plasma{amount = 15} = 15,
|
|
/obj/item/stack/sheet/mineral/gold{amount = 15} = 15,
|
|
/obj/item/stack/sheet/plastic/fifty = 5,
|
|
/obj/item/stack/sheet/runed_metal/fifty = 5,
|
|
)
|
|
|
|
/obj/effect/spawner/random/engineering/toolbox
|
|
name = "toolbox spawner"
|
|
icon_state = "toolbox"
|
|
loot = list(
|
|
/obj/item/storage/toolbox/emergency = 4,
|
|
/obj/item/storage/toolbox/electrical = 2,
|
|
/obj/item/storage/toolbox/mechanical = 2,
|
|
)
|
|
|
|
/obj/effect/spawner/random/engineering/flashlight
|
|
name = "flashlight spawner"
|
|
icon_state = "flashlight"
|
|
loot = list(
|
|
/obj/item/flashlight = 20,
|
|
/obj/item/flashlight/flare = 10,
|
|
/obj/effect/spawner/random/decoration/glowstick = 10,
|
|
/obj/item/flashlight/lantern = 5,
|
|
/obj/item/flashlight/seclite = 4,
|
|
/obj/item/flashlight/lantern/jade = 1,
|
|
)
|
|
|
|
/obj/effect/spawner/random/engineering/canister
|
|
name = "air canister spawner"
|
|
icon_state = "canister"
|
|
loot = list( // use this for emergency storage areas and maint
|
|
/obj/machinery/portable_atmospherics/canister/air = 4,
|
|
/obj/machinery/portable_atmospherics/canister/oxygen = 1,
|
|
)
|
|
|
|
/obj/effect/spawner/random/engineering/tank
|
|
name = "tank spawner"
|
|
icon_state = "tank"
|
|
loot = list( // use this for emergency storage areas and maint
|
|
/obj/structure/reagent_dispensers/fueltank = 5,
|
|
/obj/structure/reagent_dispensers/watertank = 4,
|
|
/obj/structure/reagent_dispensers/watertank/high = 1,
|
|
)
|
|
|
|
/obj/effect/spawner/random/engineering/vending_restock
|
|
name = "vending restock spawner"
|
|
icon_state = "vending_restock"
|
|
loot_subtype_path = /obj/item/vending_refill
|
|
loot = list()
|
|
|
|
/obj/effect/spawner/random/engineering/atmospherics_portable
|
|
name = "portable atmospherics machine spawner"
|
|
icon_state = "heater"
|
|
loot = list(
|
|
/obj/machinery/space_heater = 8,
|
|
/obj/machinery/shieldgen = 3,
|
|
/obj/machinery/portable_atmospherics/pump = 1,
|
|
/obj/machinery/portable_atmospherics/scrubber = 1,
|
|
)
|
|
|
|
/obj/effect/spawner/random/engineering/tracking_beacon
|
|
name = "tracking beacon spawner"
|
|
icon_state = "beacon"
|
|
spawn_loot_chance = 35
|
|
loot = list(/obj/item/beacon)
|