BeeStation-Hornet
BeeStation-Hornet copied to clipboard
Overhaul Xenoarchaeology
For those looking, this is also attached to the old wiki page- https://wiki.beestation13.com/view/User:Racc-Off/new_artifacts
About The Pull Request
Commit Often :trollface:
Code
Rewrites the majority of xenoarchaeology code, vastly improving the old systems & implementations. The old code was pretty shit, and had quite a few bugs. These changes improve the majority of code, fixing most of the bugs I'm aware of.
Design
Improves multiple designs and interactions, generally introducing more depth to the shared systems. Overall improves how xenoarchaeology works in terms of department-to-department interaction, and how it functions within science. Previous pain points discussed by players have been addressed and handled in ways that integrate with improving the overall design & flow of artsci.
TODO
Finish relevant playtest todos:
- [x] Pearl trait initialization, to be or not to be
- [ ] Science reward values
- [x] Tracker trait incompatibilities
For me
- [x] vary twin weights
- [x] Improve weights and conductivity to be more distinct
- [x] Add more trait hints
- [x] Add ability to negative-check traits in labeler
- [x] Add searching to labeler
Why It's Good For The Game
Improves almost every facet of the artifact experience, for players & coders alike
Testing Photographs and Procedure
Screenshots&Videos
Changelog
:cl: remove: Remove artifact pad tweak: Improve artifact code tweak: Reroute artifacts through cargo, adjusts artifact console add: Add plethora of artifact traits add: Add system for custom & player made artifacts add: Add structures to deduce artifacts add: Add structure to 'stabilize' artifacts add: Add item to track artifacts add: Stickers! add: Sticker Gambling /:cl:
This pull request has conflicts, please resolve those before we can evaluate the pull request.
This pull request has conflicts, please resolve those before we can evaluate the pull request.
This pull request has conflicts, please resolve those before we can evaluate the pull request.
This pull request has conflicts, please resolve those before we can evaluate the pull request.
This pull request has conflicts, please resolve those before we can evaluate the pull request.
This pull request has conflicts, please resolve those before we can evaluate the pull request.
This pull request has conflicts, please resolve those before we can evaluate the pull request.
This pull request has conflicts, please resolve those before we can evaluate the pull request.
This pull request has conflicts, please resolve those before we can evaluate the pull request.
I will testmerge this once we get bleeding merged.
This pull request has conflicts, please resolve those before we can evaluate the pull request.
This pull request has conflicts, please resolve those before we can evaluate the pull request.
This pull request has conflicts, please resolve those before we can evaluate the pull request.
TM failed. check #coding discord
515 changed switch statement stuff to throw more errors about stuff; here's those errors:
code\modules\xenoarchaeology\tools\console\xenoarchaeology_console.dm:186:error: to: range in switch must be from low to high number
code\modules\xenoarchaeology\tools\console\xenoarchaeology_console.dm:188:error: to: range in switch must be from low to high number
[18:08:22] Runtime in code/modules/xenoarchaeology/traits/traits.dm, line 237: Division by zero [18:10:54] Runtime in code/modules/xenoarchaeology/traits/traits.dm, line 225: Division by zero
While i still haven't experienced it much first hand(yet) i've noticed a few things some of them were pointed at you on discord. Like the nuke disk image they sent you, the shield arc, etcetera but in regards to the stickers, which are very cool!, i think you should be able to examine them when they're on someone or not having them be animated, we ran into some issues when some people had a C4-sticker(unsure how they're actually obtained) and they planted it on themselves and others, the sprite of the C4 is already big and since it was animated we didn't had an IC way to know(no examine, no nothing) that it was a sticker, we only ended up knowing once we arrested them and they confessed it was a sticker, which IC is.. kinda weird to justify if there's not enough tools to do so, since that thing was animated and everything, so in order to not break any immersion i consider this should be adressed!
I'll be trying it first hand soon, it looks fun from what i saw!
I'm okay with most of this. The only addition / change I'd make is making stickers appear when you examine the thing they're on. You can mouse over them and see their name, and examine them too, when they're on someone, but it can be hard to aim it when someone is moving.
is there a failsafe for selling an artefact after trapping a person into one?
haunted trait should add artifact to poi list
This pull request has conflicts, please resolve those before we can evaluate the pull request.
de-TM by merge conflict
This pull request has conflicts, please resolve those before we can evaluate the pull request.
also, you might know the bug where a beam is directed to north-east. That's because it's targeting a mob that is sent to null-space by artifact trait disappearing. In this case, a beam should be directed to a turf where they disappeared. but I guess this will not be easy to fix because beam code sucks. just be aware of that..
This pull request has conflicts, please resolve those before we can evaluate the pull request.
Once the 2 critical bugs have been fixed with the effects, I'll base the next review mainly on observations from in-game. If there are some points of code that you could improve with better variable names, less nesting, or just in general clearer code then that would significantly help with the review process
Clarifying my change request:
Let's assume that we have 100 materials. We don't want to make these x100
var/list/xenoa_bluespace_traits
var/list/xenoa_plasma_traits
var/list/xenoa_uranium_traits
var/list/xenoa_bananium_traits
var/list/xenoa_pearl_traits
So, if we make a material datum list var/list/xenoa_material_datums
, then make the list as...
xenoa_material_datums = list(
/datum/xenomat/bluespace = [0x00000] Material Bluespace Datum,
/datum/xenomat/plasma = [0x00001] Material Plasma Datum,
/datum/xenomat/uranium = [0x00002] Material Uranium Datum,
/datum/xenomat/pearl = [0x00003] Material Pearl Datum,
/datum/xenomat/debug = [0x00004] Material Debug Datum)
we can take the material from the subsystem
/proc/foo()
// NO
var/datum/xenomat/artifact_type = new /datum/xenomat/bluespace()
var/list/focus_traits = SSxenoarchaeology.xenoa_activators & artifact_type.get_trait_list()
// YES
var/datum/xenomat/artifact_type = SSxenoarch.get_material(/datum/xenomat/bluespace)
var/list/focus_traits = xmat.get_activator_traits()
This pull request has conflicts, please resolve those before we can evaluate the pull request.