marcopixel / r6operators

r6operators is a collection of high-quality vectorized Rainbow Six: Siege Operator icons & metadata for Node.js
https://r6operators.marcopixel.eu
MIT License
102 stars 10 forks source link

Add loadouts to operators #6

Open PandaDriver156 opened 4 years ago

PandaDriver156 commented 4 years ago

I'd like to add loadouts to all operators. I think it's a big change (and a lot of work for me) so it's better to ask whether it would be approved or denied.

Here is an example on how an operator object would look like:

"alibi": {
    "name": "Alibi",
    "role": "Attacker",
    "unit": "GIS",
    "ratings": {
        "armor": 1,
        "speed": 3,
        "difficulty": 3
    },
    "meta": {
        "sex": "f",
        "country": "it",
        "season": "Y3S2",
        "height": 171,
        "weight": 63
    },
    "bio": {
        "real_name": "Aria de Luca",
        "birthplace": "Tripoli, Lybia"
    },
    "loadout": {
        "primary": [
            {
                "name": "Mx4 Storm",
                "type": "submachine",
                "modes": [
                    "auto",
                    "burst",
                    "semi-auto"
                ],
                "damages": {
                    "standard": 26,
                    "suppressed": 22
                },
                "rpm": 950,
                "mobility": 50,
                "magazine_size": 30,
                "ammo": {
                    "pvp": 150,
                    "th": null
                },
                "sights": [
                    "red_dot",
                    "holo",
                    "reflex"
                ],
                "barrels": [
                    "suppressor",
                    "flash_hider",
                    "compensator",
                    "muzzle_brake",
                    "extended_barrel"
                ],
                "grips": [
                    "vertical",
                    "angled"
                ],
                "laser": true
            },
            {
                "name": "ACS12",
                "type": "shotgun",
                "modes": [
                    "auto"
                ],
                "damages": {
                    "standard": 59,
                    "suppressed": 44
                },
                "rpm": 300,
                "mobility": 50,
                "magazine_size": 30,
                "ammo": {
                    "pvp": 60,
                    "th": 150
                },
                "sights": [
                    "red_dot",
                    "holo",
                    "reflex"
                ],
                "barrels": [],
                "grips": [
                    "vertical",
                    "angled"
                ],
                "laser": true
            }
        ],
        "secondary": [
            {
                "name": "Keratos .357",
                "type": "handgun",
                "modes": [
                    "semi-auto"
                ],
                "damages": {
                    "standard": 78,
                    "suppressed": 66
                },
                "rpm": 450,
                "mobility": 45,
                "magazine_size": 6,
                "ammo": {
                    "pvp": 48,
                    "th": null
                },
                "sights": [],
                "barrels": [
                    "suppressor",
                    "muzzle_brake"
                ],
                "grips": [
                    "vertical",
                    "angled"
                ],
                "laser": true
            },
            {
                "name": "Bailiff 410",
                "type": "handgun",
                "modes": [
                    "semi-auto"
                ],
                "damages": {
                    "standard": 30,
                    "suppressed": null
                },
                "rpm": 485,
                "mobility": 50,
                "magazine_size": 5,
                "ammo": {
                    "pvp": 30,
                    "th": null
                },
                "sights": [],
                "barrels": [],
                "grips": [],
                "laser": true
            }
        ],
        "gadget": [
            "impact",
            "deployable_shield"
        ]
    }
}
marcopixel commented 4 years ago

I like the idea on having the weapons/loadouts, but my issue is that the current operators.json file is getting quite long already and quite difficulty to work with. So my current plan is to have the operator data (like metadata & loadout) seperated from the weapons so we can reuse weapon data for other operators as well.

So my plan is to have two different root folders:

I've pushed the new branch @feat/loadouts where i've restructured already the icons to be in their seperate folders. Feel free to clone that branch and do your changes there.

PandaDriver156 commented 4 years ago

That sounds like a nice structure, but the issue with it is that the loadout for weapons are not the same for every operator. For example, both Doc and Oryx has an MP5, but Doc can equip it with an ACOG while Oryx can't.

marcopixel commented 4 years ago

Oh, i didn't know that. Then having a loadout.json file inside the operator folder should be the easiest solution with the different possible weapons (+attachments) & gadgets. One thing we also could do is seperate the base weapon and extend the loadout with the different possible attachments, so we can update the weapon data independently from the operator specific data.

What do you think is the better approach?

PandaDriver156 commented 4 years ago

I like the original idea on having the weapons separated from the operators, so my suggestion would be to have all the weapons and their data in the weapons folder, with the attachments included. And for such operators who has a different weapon loadout, we "overwrite" the attachments in the operator's json file. That way we could avoid having to add attachments to all the operators separately. Also, it's not common that a loadout differs, other than Oryx, i can't say anyone else who has the same issue.

marcopixel commented 4 years ago

@PandaDriver156 Just to keep you updated, i'm still working on this but i'm quite busy right now with other stuff so it might take a while to get finished.

danielwerg commented 2 years ago

In Y7 all primary weapons will have all 1x scopes (source)

danielwerg commented 1 year ago

Hey @PandaDriver156, I know it's been more than two years :D, but are you still interested in this? I'm planning to publish new project soon which will be used as dependency for my r6api.js and it could really use operator loadouts!

How it looks now: ![recruit](https://user-images.githubusercontent.com/35052399/220346720-02fdaa1d-a5d0-4c2e-bba7-0effff9c5be3.png)
Trying to achive: ![recruit2](https://user-images.githubusercontent.com/35052399/220346730-60180aef-1be4-44ed-b345-96b53423df1e.png)

I already have array of objects for every weapon, that's why I'm using just a weapon slug in operator object. Will take me a while to do that just by myself for every operator in game.

PandaDriver156 commented 1 year ago

Hey @danielwerg, you got the timing right, just started playing Siege recently again :smile:

are you still interested in this?

If you mean interested in helping you then yes, i'd be happy to do so.