Closed campaul closed 1 year ago
Thank you for the submission!
I think this is a really clever idea, however I feel like there's a lot more potential for taking the concept further. Would it be worth exploring building a true combat cycle into the loop? I could see it be where slimes are randomly spawned with a set HP, and then donations function as attacks worth that much damage.
I think that's a great idea, and it shouldn't be too hard to add in based on how stuff is set up. I'll get to work on that.
Updates from adding combat:
When a donation comes in, it will trigger a fight. At this point, donations will begin being queued for playback. Donations are applied from the queue until the monster has died. If the queue remains empty for 15 seconds, the monster will run away so we're not stuck on a static combat screen. Events that are in the queue when combat ends are discarded.
The monsters spawn with 2x the initiating donation amount as their HP. This seems like a good difficulty starting point to get a monster that needs more than one hit to kill but doesn't always end up running away. This parameter can be tuned with the HP_SCALE_FACTOR
const.
"Attacks" now print the charity being donated to. This can be changed with the CHARITY
const. Not sure if there's a better way to get the charity name so we don't risk this printing MSF during other events.
The state machine has gotten a little more complex than I'd like but it appears to work reliably. I intend to refine this after GDQ is over when I can take more time and focus more, but I don't think I can do much better if this is something we want to merge before the marathon is over.
Not sure if there's a better way to get the charity name so we don't risk this printing MSF during other events.
You can get it from the currentEvent
replicant! (The Oregon Trail and Papers Please channels use it, if you want to see more examples)
const [event] = usePreloadedReplicant<Event>('currentEvent');
event.beneficiaryShort; // "MSF"
I made one further behavior change beyond what I described above. Now there is a MAX_HITS number after which the fight will be won regardless of the slime's HP. This is to prevent a single large donation during a steady stream of smaller donations from resulting in a never ending fight.
I totally agree there's more that can be done with this. I've got several potential ideas I'd like to implement over the coming weeks and I'd love to hear ideas for other things to add to the list. I'll avoid working on these for the moment so there isn't too much churn in this PR, but here's what I'm planning so far:
Thanks for checking, that was intentional. I'm having some anxiety about having my name up in front of so many people so I opted to leave it out.
Description
Adds a Dragon Warrior channel. The player walks right forever on a looping background. Donations trigger "battles" where a message including the donation amount appears, then the battle UI closes after 1.5 seconds. The donation amount controls which slime appears:
Donations that come in during a battle don't trigger a new battle.
https://github.com/GamesDoneQuick/gdq-break-channels/assets/552768/a33355f7-89aa-4cf1-a0bd-0e64653a40d3
Checklist: