Code Monkey home page Code Monkey logo

Comments (16)

RaffaeleAmmirati avatar RaffaeleAmmirati commented on August 13, 2024 1

If I can help I found this image on reddit for the traveler talent
6 Traveler Talent Info

I have the talent for the new character too.

8 Character Data-Sheets (26)

thank you for your amazing work.

from genshin-schedule.

RaffaeleAmmirati avatar RaffaeleAmmirati commented on August 13, 2024 1

Hi I have an idea on how it can be possible to add the travel. But I'm not sure if it's impossible to do in a database since I'm not very knowledgeable on programming and database stuff. If we add a checkbox for the talent and a scroll menu for the level it may be possible to add the current anemo and geo traveler and the future traveler too, since the book go in a circle it can be associated with the level that one put in the scroll menu. As you can see in my previous image the problem is not only that the talent book go in a circle but for the geo traveler it change for the melee to the elemental. But with this idea it may be doable. I made a very horrible image with paint XD I hope it's undestandable.

Traveler idea

sorry for my bad english, it's not my native language.

from genshin-schedule.

luaneko avatar luaneko commented on August 13, 2024

According to the wikis, it seems like both types of travelers require the same materials (freedom and samachurl scroll)?

Anemo and Geo

I can't verify this myself since I haven't leveled traveler at all.

from genshin-schedule.

Lambda95 avatar Lambda95 commented on August 13, 2024

The wiki is wrong. Anemo uses Resistance for the basic attack and for E, but Ballad for Q. Scrolls for all.
Anemo attack talent
Anemo E talent
Anemo Q talent

Geo meanwhile uses Resistance and scrolls for basic attacks, but Diligence and Arrows for E and Q.
Geo attack talent
Geo E talent
Geo Q talent

Yes, they are all over the place.

from genshin-schedule.

luaneko avatar luaneko commented on August 13, 2024

Thanks for verifying! This might require a slight restructure of the database that currently assumes one type of talent material for each character 😓

from genshin-schedule.

luaneko avatar luaneko commented on August 13, 2024

Traveler has been added!

from genshin-schedule.

Lambda95 avatar Lambda95 commented on August 13, 2024

The traveler, seems to be even more of a pain in the ass than what I initially thought. Not only does it use different materials for different talents, but it also changes them around based on level...
Screenshot (9)
Leveling up Geo E to 4 changed from Dilligence to Gold. This might require adding a Talent level to the MC variants, and another restructuring of the database to account for different levels needing different stuff. Sorry for dragging you into this.

Edit: Geo Q also uses Gold for level 4.
Screenshot (10)5

from genshin-schedule.

Lambda95 avatar Lambda95 commented on August 13, 2024

After searching around, it seems the Traveler uses every talent book. For Anemo it goes Freedom->Resistance->Ballad for every talent, while Geo uses that cycle for the basic attack talent, and Prosperity->Dilligence->Gold for E and Q.

https://genshin-impact.fandom.com/wiki/Foreign_Ironwind
https://genshin-impact.fandom.com/wiki/Foreign_Rockblade

from genshin-schedule.

luaneko avatar luaneko commented on August 13, 2024

Traveler has been removed from the character listing for now. I can't think of an elegant way to implement talent materials based on talent level without completely restructuring the database.

Simply assuming all talent materials could also work, but IMO it would be rather confusing to show the domain for a talent material when it's not needed.

from genshin-schedule.

lauslim12 avatar lauslim12 commented on August 13, 2024

I actually have an idea on how to solve this.

image

In my opinion, rather than thinking about talent levels, what about if we just let the user decide on what items that he/she need? The user can simply click a checkbox that contains the material, then it will be displayed on the main page.

Technically, this is the same like #37, as we have to add the contexts which will store the values of the checkboxes.

What do you think?

from genshin-schedule.

luaneko avatar luaneko commented on August 13, 2024

It's a neat idea but I think I would still prefer a talent level input because it makes tracking which material is required easier imo.

The implementation I have in mind right now is a little similar to what you posted, but instead of showing each talent material, it starts off with 3 rows of "None" states. The checkboxes are replaced with numeric inputs at start at 0 (to indicate that no talent materials from domains are required.)

When a talent is at level 0 it is not scheduled. When the user changes it to other levels e.g. 4, the "None" state is updated to "Ballad" and it is automatically scheduled.

from genshin-schedule.

lauslim12 avatar lauslim12 commented on August 13, 2024

It's a good idea!

However, if we do it like that, wouldn't that require a slight refactor of the contexts and the [name] page? Another thing that I noticed is that how do we display them on the main page? Is it by merging the arrays?

from genshin-schedule.

luaneko avatar luaneko commented on August 13, 2024

wouldn't that require a slight refactor of the contexts and the [name] page?

The database needs some refactoring to support this, specifically talentMaterials. Talent level info could just be stored as a new separate config characterTalents. This is similar to how notes work.

how do we display them on the main page?

We just need to change the scheduling code in the DomainView component to support talent materials that differ by levels.

from genshin-schedule.

lauslim12 avatar lauslim12 commented on August 13, 2024

I see. Currently, I have no idea of refactoring the talentMaterials besides of changing the talentMaterials to an Object though (without changing the already existing types):

Old one:

export type Character = {
  type: "Character";
  name: string;
  wiki: string;
  talentMaterialWeekly: TalentMaterial[];
  talentMaterials: TalentMaterial[];
  commonMaterials: CommonMaterial[];
};

New one:

type TalentMaterialAndLevels = {
  level: number;
  talent: TalentMaterial;
};

export type Character = {
  type: "Character";
  name: string;
  wiki: string;
  talentMaterialWeekly: TalentMaterial[];
  talentMaterials: TalentMaterialAndLevels[];
  commonMaterials: CommonMaterial[];
};

It's also possible to straight up modify the TalentMaterial though, but we have to refactor the talentMaterialWeekly again if that happens.

The drawback of this approach is that we're going to have to list every levels and its corresponding material, for each character.

from genshin-schedule.

luaneko avatar luaneko commented on August 13, 2024

How about like this?

export type Character = {
  type: "Character";
  name: string;
  wiki: string;
  talentMaterialWeekly: TalentMaterial[];
  talentMaterials: (TalentMaterial | TalentMaterialCondition)[]; // discriminated union
  commonMaterials: CommonMaterial[];
};

export type TalentMaterialCondition = {
  type: "Talent Level-Up Material Condition"; // discriminator
  levels: number[];
  material: TalentMaterial;
};

We can keep most the existing code working with this approach.

from genshin-schedule.

lauslim12 avatar lauslim12 commented on August 13, 2024

That's a really good idea!

We can go with your approach!

from genshin-schedule.

Related Issues (20)

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.