GithubHelp home page GithubHelp logo

everestapi / celestecollabutils2 Goto Github PK

View Code? Open in Web Editor NEW
3.0 3.0 19.0 22.26 MB

"If CollabUtils is so good, why isn't there CollabUtils2?" -- no one, ever

License: MIT License

C# 92.75% Julia 4.15% Lua 3.09%
celeste celestegame mapmaking modding

celestecollabutils2's People

Contributors

0x0ade avatar blimmie avatar coloursofnoise avatar corkr900 avatar cruor avatar danesky-jp avatar dependabot[bot] avatar ella-tas avatar garretshadow152 avatar jatheplayer avatar kalobi avatar kokasgui avatar lostinnowhere314 avatar maddie480 avatar microlith57 avatar oh040411 avatar quaidmars avatar someonesom avatar swoolcock avatar swoolcocktantalus avatar tesselslate avatar vexatos avatar wegfan avatar zurcus0 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

celestecollabutils2's Issues

Clear Torches

  • unlit torch = not cleared
  • lit torch = cleared
  • golden torch = all red berries + clear

Migrated from iamdadbod's wishlist.

Rainbow Berry

... or heart or some cool collectible that only appears if you collect ALL silver berries

Migrated from iamdadbod's wishlist.

French Mod Options menu is way too wide

When the game language is set to French, the text displayed in the Mod Options menu takes up the whole screen, and for some monitors even extends out of the screen, due to some options being too long.

To fix this issue, here are a few modifications to the French.txt file that can be done to make the menu narrower:

  • Chronomètre des Fraises Contre-la-montre → Position Chronomètre Contre-la-montre (line 34)
  • Afficher l'Écran de Fin pour toutes les maps → Afficher l'Écran de Fin pour les maps (line 39)
  • Fraise Contre-la-montre → Contre-la-montre (line 43)
  • Sauvegarder et Retourner au Lobby par Défaut → Sauv. et Retourner au Lobby par Défaut (line 46)

Here are lines 34 to 46 taking these changes into account:

modoptions_collab_speedberrytimerposition= Position Chronomètre Contre-la-montre
modoptions_collab_speedberrytimerposition_topleft= En Haut à Gauche
modoptions_collab_speedberrytimerposition_topcenter= En Haut au Milieu
modoptions_collab_hidespeedberrytimerduringgameplay= Cacher le chronomètre en jeu

modoptions_collab_displayendscreenforallmaps= Afficher l'Écran de Fin pour les maps
modoptions_collab_displayendscreenforallmaps_description= Nécessaire pour la vérification des temps de speedrun.com

modoptions_collab_besttimetodisplayinjournal= Meilleur Temps à Afficher dans le Journal
modoptions_collab_besttimetodisplayinjournal_speedberry= Contre-la-montre
modoptions_collab_besttimetodisplayinjournal_chaptertimer= Temps du Chapitre

modoptions_collab_savebydefaultwhenreturningtolobby= Sauv. et Retourner au Lobby par Défaut

Would appreciate if this was fixed as this issue can make some text unreadable in some places :3

PS: I’m sorry this issue is kind of my fault, as I wrote the French.txt file for this mod, and didn’t consider different monitors when testing out the dialogue in-game oopsie !

Speed berries

Berries that should:

  • have settable bronze/silver/gold times
  • trigger a timer when grabbed
  • fade from gold to bronze until vanishing if time ran out
  • be collected with a specific trigger, but not add up to the berry counter
  • save the player's PB and rank to mod save data

WIP on branch speed_berry

Dying with the lobby book open crashes the game

Description

Dying in the lobby (Spring Collab 2020) with the map journal open will crash the game.

How To Reproduce

  1. Find a lobby with a book near an edge where Madeline can fall into spinners.
  2. Walk toward the edge and use the book just as Madeline is about to fall off.
  3. Madeline falls to her death with the book open, game crashes.

Information:

  • Operating System: macOS Big Sur 11.2.2
  • Celeste Version: 1.4.0.0
  • Everest Version: 1.2742.0-azure-3e05c

Additional context

Celeste Error Log
==========================================

Ver 1.4.0.0 [Everest: 2742-azure-3e05c]
04/08/2021 14:18:07
System.InvalidOperationException: Nullable object must have a value.
  at System.Nullable`1[T].get_Value () [0x00008] in <d1664be62cd44600bbd25f7afa292479>:0 
  at Celeste.Mod.CollabUtils2.UI.InGameOverworldHelper+<OnJournalEnter>d__24.MoveNext () [0x000e6] in <9e3dd390afcb445a8692e18bdb93b4ac>:0 
  at Celeste.Mod.Helpers.CoroutineDelayHackfixHelper+<Wrap>d__3.MoveNext () [0x00079] in <d7b2abb405ec4c97954549f0a02e4a41>:0 
  at Monocle.Coroutine.orig_Update () [0x00053] in <d7b2abb405ec4c97954549f0a02e4a41>:0 
  at Monocle.Coroutine.Update () [0x0001d] in <d7b2abb405ec4c97954549f0a02e4a41>:0 
  at Monocle.ComponentList.Update () [0x00025] in <d7b2abb405ec4c97954549f0a02e4a41>:0 
  at Monocle.Entity.Update () [0x00006] in <d7b2abb405ec4c97954549f0a02e4a41>:0 
  at Monocle.EntityList.Update () [0x0001e] in <d7b2abb405ec4c97954549f0a02e4a41>:0 
  at Monocle.Scene.Update () [0x0000e] in <d7b2abb405ec4c97954549f0a02e4a41>:0 
  at Celeste.Overworld.orig_Update () [0x00115] in <d7b2abb405ec4c97954549f0a02e4a41>:0 
  at Celeste.Overworld.Update () [0x00010] in <d7b2abb405ec4c97954549f0a02e4a41>:0 
  at Celeste.Mod.Entities.SceneRenderer.Update (Monocle.Scene scene) [0x0001d] in <d7b2abb405ec4c97954549f0a02e4a41>:0 
  at Monocle.RendererList.Update () [0x00015] in <d7b2abb405ec4c97954549f0a02e4a41>:0 
  at Monocle.Scene.Update () [0x00019] in <d7b2abb405ec4c97954549f0a02e4a41>:0 
  at (wrapper dynamic-method) Celeste.Level.DMD<Celeste.Level::Update>(Celeste.Level)
  at (wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Trampoline<Celeste.Level::Update>?-447163198(Celeste.Level)
  at Celeste.Mod.DJMapHelper.DebugFeatures.LookoutBuilder.LevelOnUpdate (On.Celeste.Level+orig_Update orig, Celeste.Level level) [0x00000] in <5bdc61ad4d4f468a8487ae7118ae86fa>:0 
  at (wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Hook<Celeste.Level::Update>?1120299835(Celeste.Level)
  at (wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Trampoline<Celeste.Level::Update>?-2017110121(Celeste.Level)
  at Celeste.Mod.MaxHelpingHand.Triggers.ColorGradeFadeTrigger.onLevelUpdate (On.Celeste.Level+orig_Update orig, Celeste.Level self) [0x00006] in <e43e4f77792f47a3802981fbefa1055f>:0 
  at (wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Hook<Celeste.Level::Update>?-939733179(Celeste.Level)
  at (wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Trampoline<Celeste.Level::Update>?1118429485(Celeste.Level)
  at Celeste.Mod.MaxHelpingHand.Triggers.AmbienceVolumeTrigger.onLevelUpdate (On.Celeste.Level+orig_Update orig, Celeste.Level self) [0x00000] in <e43e4f77792f47a3802981fbefa1055f>:0 
  at (wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Hook<Celeste.Level::Update>?-821181184(Celeste.Level)
  at (wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Trampoline<Celeste.Level::Update>?-1269247354(Celeste.Level)
  at ExtendedVariants.Variants.AnxietyEffect.onLevelUpdate (On.Celeste.Level+orig_Update orig, Celeste.Level self) [0x00000] in <b7eef78c2b3a4164ae83d704e0a44c9c>:0 
  at (wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Hook<Celeste.Level::Update>?117322398(Celeste.Level)
  at (wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Trampoline<Celeste.Level::Update>?1618616068(Celeste.Level)
  at Celeste.Mod.SpringCollab2020.Triggers.RemoveLightSourcesTrigger.OnLevelUpdate (On.Celeste.Level+orig_Update orig, Celeste.Level self) [0x00001] in <63ef6c302f8f4059a877efb7cb81e89e>:0 
  at (wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Hook<Celeste.Level::Update>?-138146867(Celeste.Level)
  at (wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Trampoline<Celeste.Level::Update>?-1760992675(Celeste.Level)
  at Celeste.Mod.SpringCollab2020.Triggers.ColorGradeFadeTrigger.onLevelUpdate (On.Celeste.Level+orig_Update orig, Celeste.Level self) [0x00001] in <63ef6c302f8f4059a877efb7cb81e89e>:0 
  at (wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Hook<Celeste.Level::Update>?-828398640(Celeste.Level)
  at (wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Trampoline<Celeste.Level::Update>?-500015895(Celeste.Level)
  at GravityHelper.MiscHooks.Level_Update (On.Celeste.Level+orig_Update orig, Celeste.Level self) [0x00032] in <8dae4da6a33248c2b79f875f11636050>:0 
  at (wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Hook<Celeste.Level::Update>?-1234632915(Celeste.Level)
  at (wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Trampoline<Celeste.Level::Update>?1637337575(Celeste.Level)
  at ExtendedVariants.Variants.InvertHorizontalControls.onLevelUpdate (On.Celeste.Level+orig_Update orig, Celeste.Level self) [0x0004c] in <b7eef78c2b3a4164ae83d704e0a44c9c>:0 
  at (wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Hook<Celeste.Level::Update>?1700810291(Celeste.Level)
  at Monocle.Engine.Update (Microsoft.Xna.Framework.GameTime gameTime) [0x00139] in <d7b2abb405ec4c97954549f0a02e4a41>:0 
  at Celeste.Celeste.Update (Microsoft.Xna.Framework.GameTime gameTime) [0x00031] in <d7b2abb405ec4c97954549f0a02e4a41>:0 
  at Microsoft.Xna.Framework.Game.Tick () [0x000ef] in <4c19a1a736204d189ba94c3bc07cd4ac>:0 
  at Microsoft.Xna.Framework.Game.RunLoop () [0x0003c] in <4c19a1a736204d189ba94c3bc07cd4ac>:0 
  at Microsoft.Xna.Framework.Game.Run () [0x00032] in <4c19a1a736204d189ba94c3bc07cd4ac>:0 
  at Monocle.Engine.RunWithLogging () [0x00000] in <d7b2abb405ec4c97954549f0a02e4a41>:0 

allow overriding colours (& textures?) for tags

ok so currently tags use the chapter panel's banner colours. that's nice usually, but in some contexts (eg. contests where the "#x overall" tag should stand out) it would be helpful to be able to override this, and use a custom background and foreground for a specific tag only.
ideally a background image could be used as well, for example to give especially noteworthy tags a gold background.

here is an example of what that might look like:

card

i plan to implement this with approximately the following syntax, subject to change:

ExampleCollab_1_Lobby_map1_collabcreditstags=
  {collabutils_tag background_texture="some_image_in_gui_atlas" accent="000000"}Tag 1{/collabutils_tag}
  {collabutils_tag background="000000" accent="ffffff"}Tag 2{/collabutils_tag}
  Tag 3

Silver berries

goldens, but for each part rather than for the entire map

Migrated from iamdadbod's wishlist.

Custom journal in lobby

  • Make a journal spawn in the lobby, listing all maps in a defined level set
  • Have the journal columns be: map name, mini heart, berry count, total deaths, minimum deaths, total time, best speedberry time. All pages should follow that format, the journal will only have multiple pages because all maps don't fit on one page.
    • in progress on branch journal_in_lobby: waiting for speed berries to be completed. The rest is actually pretty much done.
  • The heart side shouldn't appear until it is unlocked.

Unlock all lobbies right away

When loading up a save, unsure the player can access all lobbies: even if they didn't finish the beginner maps, they should be able to access the intermediate lobby.

Make overworld stats group all collab entries' stats

When viewing a lobby in chapter select or in journal, or in file select:

  • the heart should appear if the heart side is completed
  • getting the rainbow berry should be indicated in the chapter select card: rainbow foil + add 1 to the berry counter

And, with lower priority:

  • the strawberry count should be the sum of all berries in collab entries in this lobby + the rainbow berry
  • the death count should be the sum of deaths throughout all maps in that lobby + in the lobby itself

Heart "Shards" and Unlocking the Lobby's Heart

In short, each difficulty level has a set of "heart shards" obtained by completing each map in that difficulty. Collecting the full set spawns the lobby's Heart Gem.

Internally, the heart shards can be tracked as "heart gems" for the difficulty level's internal levelset. They don't have to be, but they can be. (Unless we can show a completion state on the Chapter Card somehow..?)

When collected, the heart shard will play its own custom cutscene, somewhat similar to a Summit Gem at the start. Summit Gem related sounds can be played during this cutscene.

A step by step progression of the cutscene:

  • The Heart Shard breaks and is "absorbed" to Madeline as Summit Gems/Heart Gems do.
  • Fade the screen, except Madeline, to full black, while performing the Heart Gem collection slowdown and freeze.
  • Stop the level timer; the level is technically complete now.
  • Probably enable skipping the cutscene via the menu at this point; it can get a little long from here.
  • Move the camera up so that Madeline visually leaves the bottom of the screen.
  • If the level was already completed, end the cutscene and level now.
  • Display the progress made on collecting Heart Shards.
    • Show orbiting small Heart Shards, or their outline placeholders, around the outline of a Heart Gem.
    • Move a small Heart Shard in from the bottom of the screen and slot it into the appropriate outline placeholder.
  • If the collection is not yet complete, end the cutscene and level on player input.
  • On completion of the collection, accelerate the orbiting of the heart shards similarly to StrawberrySeed cutscene.
  • One at a time, send Heart Shards to center of Heart Gem outline. The time it takes for this step to complete should be constant, regardless of the number of Heart Shards (five shards should take the same time to merge as fifty).
  • Show the Heart Gem, including its heartbeat effect.
  • End the cutscene and level on player input.

Similarly, before the Heart Gem in the lobby has been spawned, provide a visual of the progression at the Heart Gem's spawning location, using orbiting small Heart Shards/their outline placeholders. (This is also the object that spawns the Heart Gem.)

Custom Teleport Trigger

so Madeline doesn’t awkwardly fall asleep in between each section

Migrated from iamdadbod's wishlist.

Status: Celsius has got some code to reuse for this - see the Celsius source dump in the collabcord.

Benches Visual bug

Description

A visual bug occurs if you retry while mounting a bench.
If the animation can't be fixed, then my suggestion would be to disable retrying during the mounting state.

Screenshots

2023-02-28_15-16-00.mp4

French Localization of CollabUtils2

Hiya! With the release of the Strawberry Jam's french localization having been released in its latest patch, we (the sj french localization team) have made a French.txt file for CollabUtils2.

If possible, we would like to have it included in the next CollabUtils2 patch, so that french players can enjoy a fully localized strawberry jam experience 😃

Here is the aforementioned French.txt, which includes all of the original dialogue translated (all of which has been tested and displays correctly in-game).

Specific maps for Heart Gate

A useful feature I think would benefit users of this mod is being able to specify certain maps for the Heart Gate.
The way it currently works is you can only specify a Level Set to choose from.
image

Instead, I suggest adding a field to specify certain maps, akin to how you can for the Rainbow Berry entity.
image

This would be useful for certain projects as well as giving more freedom to people using this already incredibly useful mod.

Berry Counters for each part

Migrated from iamdadbod's wishlist.

Status: It was already marked as "finished" on the wishlist. The code is yet to be seen though...

Return to Lobby button

Integrated in the menu once you’re inside a map. Choosing it teleports you back to the beginning of the lobby. Keep all strawberries collected. Gets rid of silver berry if previously held in map.

Migrated from iamdadbod's wishlist.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.