Item Families and Leveled Lists (Like in Skyrim/Fallout)

Discussion in 'JS Plugin Requests' started by Blue001, Nov 9, 2015.

  1. Blue001

    Blue001 Veteran Veteran

    Messages:
    231
    Likes Received:
    110
    Location:
    Maine, USA
    First Language:
    English
    Primarily Uses:
    RMMV
    What it would be used for.

    • Open World Games
    • Non-Grind Games you would rather have the story drive the player forward and not require leveling specifically to continue the narrative.
    Say I would like to make an open world game that has things like drops and encounters seemingly "level up" as you play. So you can progress the story as you wish but items you find, enemies you encounter and things along that line automatically change based on your party's average/max level. All done without having to make 1000000000 conditional branches.

    How it would/could Work

    The concept is fairly simple. First the game creator would add note tags to all items, gear, and enemy troops they want added to a leveled list.

    The notetag for items and gear would be something along the lines of

    <LL>

    Lowest = 1         (This is the lowest level this item will have a chance to appear)

    Highest = 10       (This is the highest level this item will have a chance to appear)

    Family = all                  (See Family Below for an in depth explanation)

    Weight = 5                   (If many items of the same family af found to be obtainable at this level, then the weights will be compared, and an item with a higher weight would be chosen more often to be given)

    Chance = 100              (Different than weight, this would be the chance you would even get this item if it IS chosen by weight, allowing you to make rare items even harder to get.)

    </LL>

    The family setting is a string that tells the game what LL's to include this item in. This may have multiple strings all separated by a comma, which will put this item into family's. The family is to make sure the player always gets this TYPE of Item/equipment from this source. So if you wanted an item to be included in the 'healingpotions' family to always give the player a potion from this particular source, you would put "Family = healingpotions".

    If this item is part of the healingpotions family but you also wanted it to be allowed to be given in a common item pool, you would list, "Family = all,healingpotions." and then any time "all" was called, you would be able to get this common item.

    How it would Execute

    At game start the script would save all items with tags to the leveled list sorted into their families to be called from later. Some items may end up in multiple family lists.

    Then in an event, you would call a plugincommand like "giveLeveledItem : healingpotions" and the game would check the family listed, and then calculate the average level of the party or highest leveled party member and give an item from the LL Family that matches this. The only thing I wouldn't know how to achieve is how to let the game designer call that items name in a message window so they can tell the player what they just got... maybe you can figure that part out?

    Enemies and Drops

    Enemies would work almost the same way (but may be more complicated to script in).

    You would have each enemy in a troop able to automatically become a stronger version if it is too weak.

    The game designer would make different stronger versions of each enemy and in each one tag it with the following

    <LL>

    Lowest = 1             (This is the lowest level this enemy will have a chance to appear)

    Highest = 10          (This is the highest level this enemy will have a chance to appear)

    Family = wolf         (Relatively the same to Family for Items above, but see description below for more info.)

    Weight = 5             (If multiple enemies from the same family are possible to appear this would weight them against each other with the higher weighted ones appearing more often.)

    </LL>

    The Family String is a name you give that specific enemy family. If you place this enemy in a troop and encounter it, but it doesn't fall in the level range you have set on it, it will change it to one from the same family and with the appropriate level. If one isn't found, the highest level version will appear. If an enemy has two or more different family names, it can choose one from any of those family lists.

    So for example, you would place a lvl 2 wolf in a troop as the lowest level version and a type of placeholder, then set the encounters for that troop to happen anywhere a wolf should appear (via call combat or map encounter setups) and then set up another lvl 10 wolf up in enemies tab (but not place it in any troops), if you get that encounter at a higher level, the lvl 2 wolf would/could be replaced by the lvl 10 wolf at battle start before the screen fades in.

    As for drops, each enemy would have a tag listing...

    <LLDrops>

    all, 4

    healingpotions, 1

    </LLDrops>

    The above means that 4 items within the 'all' family will be able to be obtained if you kill this enemy, and 1 item in the healingpotions family will be able to be obtained with their levels being checked in their LLs as well so if an item comes up but its chance was low and was un-obtained anyway, than no item would be obtained. If you want to give a specific item no matter what, you would add it to a family by itself.

    Shops

    Having leveled shops would be great too... but that would likely require a whole different script so shops could have a variable set of items for sale.

    Other Ideas

    Equipment, States or Actors could have tags that increase/decrease the weight and chance of finding certain items from families, or enemy troops (like making the chocobo in FF7 appear if wearing the choco bangle.).
     
    Last edited by a moderator: Nov 9, 2015
    #1

Share This Page