设为首页收藏本站同能贴吧 切换语言 繁体中文
开启辅助访问 切换到窄版
扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 137|回复: 0

[转载发布] Persona System

[复制链接]
累计送礼:
0 个
累计收礼:
1 个
  • TA的每日心情
    开心
    2026-7-12 04:10
  • 签到天数: 209 天

    连续签到: 2 天

    [LV.7]常住居民III

    9071

    主题

    864

    回帖

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    7
    卡币
    58883
    OK点
    16
    推广点
    0
    同能卷
    50
    积分
    68848

    灌水之王

    发表于 2026-8-3 14:32:56 | 显示全部楼层 |阅读模式
    Description

    This script implements the Persona System from the Persona games (specifically Persona 4).

    Quoting from the Megami Tensei Wiki:
                            A Persona is a manifestation of a Persona User's personality in the Persona series, referred to as a "mask" for an individual to use to face hardship.               
    Click to expand...


    In this system, you can use Personas to fight enemies. Each character can equip one of those Personas which, as a result, increases all of the user's parameters.
    In the original game, the characters have no parameters nor skills and all those depend on the persona they have currently equipped. In this script you can choose the percentages of the parameters contributed by the user and the Persona while, also, use the skills of the currently equipped Persona.
    Following the original game's system, Personas can only learn a specific number of skills. When they try to learn a new one, they have to forget an old one (or skip learning it).
    Personas can be acquired with two different methods:

    • By fusing two (or three) Personas to create a new one
    • During the Shuffle Time
    Compared to the original game's fusion system, this script implements a quiet simpler Fusion System, for ease of use. It is divided into a Normal Fusion (two Personas) and a Special Fusion (three Personas). When fusing Personas, the resulting Persona will gain a bonus EXP depending on the Arcana rank (explained later) and the Personas' level used in the Fusion.
    Shuffle Time, happens after every battle and if the enemy has dropped any Persona cards. Along with the Persona cards, enemies drop Blank cards and Penalty cards. There are two different Shuffle methods: Rotating cards and Memory match. During the first method, the cards rotate either horizontally, diagonally or a combination of both. During the Memory match, the player has to match two cards together, with a maximum number of attempts. If the player has picked a Blank card during the Shuffle Time, nothing will happen (no Persona will be acquired), but if they pick a Penalty card, they will lose all battle rewards (no EXP or Gold will be acquired).
    Additionally, Personas have classes called Arcanas. Quoting (again) the Megami Tensei Wiki:
                            Each Social Link represents a single Arcana, and raising a particular Social Link increases the experience bonus the protagonists receive when they fuse Personas of that Arcana. By completing a Social Link, it unlocks the ultimate Persona of that Arcana.               
    Click to expand...


    Each Arcana has its own rank and when it reaches a specific one the Persona of that Arcana can evolve into a stronger one (you can choose which Personas can evolve and at which rank).
    You can check all the available Arcanas through the Social Link option in the main menu, along with its rank, its individual Social Links and their description. You can choose, for each Social Link, which actors it is consisted of.


    You can change for each user which Personas they can use, if he can use only one, set the maximum rank of each Arcana separately, set whoever you want as a Social Link of an Arcana and change them at any point of the game, call the Shuffle Time whenever you want and with which ever cards you want, use a common event when a Persona is being evolved (if you want and for whichever Persona you want), set the position of a couple of small windows, pick some colors here or there, set the percentage of the parameters individually (for each param, xparam, sparam etc.) and many more that I may have missed. You can check all the possible settings in the script.

    Screenshots and Videos

    Spoiler: Screenshots and Videos
    The bars were made from a really good artist (me) so please don't judge.

    You have the ability to use your own graphics (white bar, small bar empty and filled).













    Some more screenshots from the Social Links menu.

    There are some minor differences between the uploaded videos and the demo (messages and stuff) which were changed after the recording and upload (my upload speed is potato).


    https://www.youtube.com/embed/oZaGXCjnRHQ

    Playlist with all the videos.

    Script

    Link

    Instructions and Demo

    The instructions bellow are also present in the script. They cover all the available tags that can be used to setup the system, along with all the scene calls you can make and explanation of each system. There are many option settings you can change in this script, which are not covered in the instructions and are located at the beginning of the script, for each "sub-system" separately.
    The script goes above Main and bellow Materials.

    Spoiler: Instructions
    Tags on actors that are personas
    You can specify which actor is a persona by simply adding the following tag:
    <Persona>
    By adding the tag bellow:
    <User: actor_id[, actor_id[, ...]]>
    on a persona actor you can specify the users that  can equip the specific
    persona. Remember that for the <User: ...> tag to work the actor must be a
    persona.  Also, you can specify as many persona users as you want in the list.
    For convenience, you can set the default users of a persona that doesn't have
    that tag through  the options module.
    Personas can't learn an infinite number of skills. You can specify the
    maximum number of skills a persona can learn by using the following tag:
    <Max skills: number>
    The default number of maximum skills for all personas is set to 4, but you can
    change it through the options module! Lastly, a persona has the ability to evolve
    into a stronger one when it reaches a specific arcana rank! You can specify the
    rank of the arcana at which the persona will evolve with the following tag:
    <Evolve at: rank>
    and the persona to which it will evolve to with the following one:
    <Evolve to: persona_name>

    Tags on actors that use personas
    You can specify that a specific actor can use ONLY one (which will be
    automatically equipped) by using the following tag:
    <Persona: actor_id>
    Also, to specify which persona will be equipped in Battle test on a specific
    ctor, you can use the following tag:
    <Battletest persona: actor_id>

    Tags on classes (Arcana)
    You can specify which classes represent an arcana by adding the tag
    bellow:
    <Arcana>
    Each arcana's current rank is stored in a game variable. Those variables
    can be set for each Arcana separately by adding the following tag:
    <Rank variable: variable_id>
    Of course, you can set the maximum  rank of each arcana by adding the
    tag bellow on each arcana:
    <Max rank: rank>
    The default maximum  rank is set to 10, but can be changed through the
    options module. As in the original game, each arcana has its own social link(s).
    You can specify who is or are those links by adding the following tags
    to specify by actor id:
    <Social links actors: actor_id[,actor_id[,...]]>
    and to specify by variable id (in which actor ids are stored):
    <Social links actors: actor_id[,actor_id[,...]]>
    As far as naming those social links and their description goes, you can
    use the tag bellow to specify the name of the social link:
    <Social target: name>
    and the one bellow to specify its description:
    <Description: description>
    You can specify the description of an actor's social link by adding
    this tag:
    <Social description: description>

    Tags on enemies
    There is only one tag that is used on enemies and it specifies the card
    that an enemy can drop:
    <Card drop: card_name, chance>
    The chance is specified by a floating number and not a percentage, for
    example using the tag bellow on an enemy, has a 30% chance to drop the
    Ghoul card:
    <Card drop: Ghoul, 0.3>

    Add persona to party
    You can add a persona to your party by calling the following script (by id):
    $game_party.add_persona_by_id(actor_id)
    or by using the following one (by name)
    $game_party.add_persona_by_name("actor_name")
    It is important to remember that you cannot have duplicate personas in
    your party! Also, for developing purposes a message box will be displayed
    if you try adding an actor as a persona that is not actually a persona!
    a persona or if you misstype a name by accident!
    Personas can also be acquired through the Shuffle Time that happens after
    a battle and if the enemy troop has dropped any cards. You can learn
    more about Shuffle Time by going to the back of the room.
    If you want to equip the persona when it's added to the party, then you can add a true flag after the actor's id or name:

    $game_party.add_persona_by_id(actor_id, true)
    or
    $game_party.add_persona_by_name("actor_name", true)

    Remove social link through variable
    If you have specified someone as a social link of an arcana via
    variables (see Tags on class (Arcanas)) you can remove a social
    link by setting the specific variable's value to -1. Do remember
    that if you have specified that social link through the actor social
    link tag, then even if you remove that actor they will still be a
    social link. Social links specified via actor ids cannot be removed!

    Increase/Decrease arcana rank
    You can increase an arcana's rank by making the following script
    call:
    $game_player.arcana_rank_up(arcana_name)
    You can also decrease an arcana's rank by making the following
    script call:
    $game_player.arcana_rank_down(arcana_name)
    The minimum arcana rank can be set though the persona module!
    For convenience you can use the script call bellow to increase the
    arcana's rank by
    multiple ranks:
    $game_party.arcana_rank_up_by(arcana_name, ranks)
    The same can be done to decrease the arcana's rank by multiple ranks
    by making the following script call:
    $game_party.arcana_rank_down_by(arcana_name, ranks)

    Persona in party or equipped
    You can check if a persona is in the party by using the following
    script call:
    $game_party.persona_in_party(persona_name)

    You can check if a persona is currently equipped by simply calling
    the following script:
    $game_party.persona_equipped(persona_name)

    Also, you can check if a persona is equipped by a specific actor
    with the following script call:
    $game_party.persona_equipped_by(actor_id, persona_name)

    Shuffle Time
    Shuffle Time happens after battle and gives the player a chance to
    receive new Persona cards. Shuffle Time happens only if the enemies have
    dropped at least two cards. Of course, you can change this number
    through the options module. There are three types of cards in Shuffle
    Time:
           Persona cards,
           Blank cards and
           Penalty cards.
    When a Blank card is picked, nothing happens whereas when a Penalty
    card is picked, the player gains no battle rewards! There are also
    two different shuffle methods:
           Rotating card either horizontally, diagonally or a combination
           of both and
           Memory match, where player matches two cards and has at most
           five attempts.
    You can change the maximum number of tries the player has through
    the options module! Also, you can force the next Shuffle Time method
    to be a specific one (among the available) by setting the value of
    the variable with ID 1 to the method you want. For example "Horizontal"
    if you want the next Shuffle Time method to be Horizontal or "Matching"
    if you want it to be the Matching one. Of course, you can change which
    variable you want to specify the method, though the options module.
    Lastly, you can call the shuffle scene with whichever cards you want
    by firstly setting the variable with ID 2 to a script call with a
    list of persona names like this:
           ["name_1", "name_2", ...]
    and then by calling the scene with the following command:
           $game_system.shuffle_time
    It is important to remember that you cannot have duplicate personas
    in your party! Additionally, a message box will be displayed if you
    try running Shuffle Time without setting the list of cards to be included!
    You can access the result of the last shuffle time by simply calling
    the following script command:
           $game_system.shuffle_result

    Fusion
    Fusion is the system in which two or more personas are combined
    together to create a new persona. You can use the following tag
    bellow on a persona to specify which personas need to be fused to
    create that one:
    <Fusion parents: actor_id1, actor_id2>
    For example, if you use the following tag on Himiko:
    <Fusion parents: 13, 14>
    then when you try fusing Andras with Forneus, the fusion will result
    to... Himiko.
    Additionally, you can specify arcana rank and player level
    requirements to specific fusion children. To apply a minimum
    arcana rank requirement for a specific persona you use the following
    tag:
    <Arcana rank: rank>
    To apply a minimum player level requirement  for a specific persona
    you use the following tag:
    <Player level: level>
    You can also have a persona of a specific arcana have a different class!
    This can be done just by setting its  nickname to the arcana you want!
    Don't forget to use the following tag to hide its nickname in the status window!
    <Hide status nickname>
    You can also fuse three personas together to create special
    ones too! To specify the parents of a "special" persona you can
    use the following tag:
    <Special fusion: actor_id1, actor_id2, actor_id3>
    Last but not least! To call the persona fusion scene you use the
    following script call:
    $game_system.fuse_personas(2)
    For the special fusion scene you use the following script call:
    $game_system.fuse_personas(3)

    You can now use `.csv` files to

    • Setup a table with all the fusions and results, along with any conditions that need to be met for them to be available.
    • Setup a table specifying results for normal and special fusions, exactly how it's setup in the original personas.
    For more info, check github, the demo and the options file.


    Persona and user parameters
    Personas can be equiped through the main menu command called
    "Persona". Personas add percentages of their parameters and
    stats to the actor they're equiped on. The default percentage
    is set to 100%, but can be changed through the persona options
    module. You can also change the percentage of the user's parameters
    that are added to the end result. The default percentage is also
    set to 100% and can be changed though the options module too.
    Demo

    Click on "Download as ZIP" on the top right.
    Demo

    Terms of use
    Free to use in non commercial or commercial games, credits are required (PM me).
    If you'd like to share or make a reference to the script, always link to this post.

    Updates
    Previous Updates

    Spoiler13-07-2019
    Spoiler

    • Fixed bug where BGM of map would not replay if the shuffle was canceled.




    13-05-2020
    Spoiler

    • Added support for element, debuff and state rate multipliers
    • You can now set an arcana by using the nickname. If an arcana has a class which is not an arcana, but its nickname exists as an arcana name then it considers the nickname.
    • Fixed a bug when a fusion was canceled and another persona was chosen (even with a wrong combination) it asked if you wanted to create the previous persona.





    16-05-2020
    Spoiler

    • Fixed mistake where aliased state_rate, debuff_rate and element_rate methods were not being called.
    • Fixed a bug when declining a shuffle the message and windows were not being disposed correctly or in time.
    • Fixed an error when pressing enter on an empty Personas menu.
    • Fixed an error when equipping persona through the status menu.
    • Added <Hide status nickname> and <Hide status classname> tags that hide the corresponding info in the status menu.
    • Fixed incorrect arcana display on short Persona status.





    17-05-2020
    Spoiler

    • You can now release a persona from the Personas menu.
    • You can no longer fuse personas that result into one that already exists in the party.
    • Fixed incorrect arcana name being drawn in fusion results window.
    • Fixed missing Sprite classes.
    • Fixed unordered special fusion bug.





    24-05-2020
    Spoiler

    • Personas window now correctly does not take any input if there are no personas.
    • Fixed empty line in personas window after releasing the last persona on the list (selects first persona).
    • Added additional messages to message window when release a persona (if persona is equipped or if it is the actor's last persona).
    • Correctly handles unordered persona fusion.
    • Personas that are already in the party have now disabled color in the results window.
    • Minor bug fixes.





    19-07-2020
    Spoiler

    • Updated description and demo with the changes made to script calls and extra features.
    • You can now release personas from the persona list menu.
    • Added variables for the release key (RELEASE_PERSONA_KEY) and one that lets (or not) the player release only personas (CAN_RELEASE_ONLY_PERSONAS) (personas used only by one actor).
    • Party can no longer receive personas that already exist in the party (More of a bug than a feature).
    • Added variables with the text shown when the duplicate persona is picked in the shuffle method (DUPLICATE_PERSONA_DRAW_MSG) and the message shown at the battle result screen (DUPLICATE_PERSONA_RESULT_MSG) and audio that is played upon selection (SHUFFLE_DUPLICATE_SOUND).
    • You can now set the arcana of a persona by using the nickname field.
    • Added new tag <Hide status nickname> that hides the persona's nickname in the status window (useful in the above cases).
    • Renamed methods add_persona and remove_persona to add_persona_by_id and remove_persona_by_id.
    • Added two new methods: add_persona_by_name and remove_persona_by_name.
    • Updated the input keys window shown when opening the personas window with the release button.
    • Added msgbox if a persona is not found when parsing manually selected personas for shuffling.
    • Fixed incorrect variable usage in element_rate, debuff_rate and state_rate methods in Game_Actor class.
    • Fixed Persona command in battle being enabled in users that use only one persona.
    • Fixed bug where after equipping a persona in battle, the window with the personas kept taking inputs.
    • Fixed process_handling in Window_Arcanas.
    • Fixed window openning and closing when showing the extra exp earned when fusing a persona.
    • Fixed cases where the second (or third) persona to be fused was enabled in incorrect cases when choosing personas.
    • Fixed incorrect scene handling between battle scene and fusion scene.
    • Fixed size of selected card in shuffle time.





    29-05-2021
    Spoiler

    • Fixed incorrect variable for shuffle type in shuffle time docs
    • Added HIDE_PERSONA_COMMAND option that includes actor ids for which to hide the persona battle command
    • You can now hide the Social Links menu command by setting the ARCANA_MENU_COMMAND_INDEX option to nil
    • Fixed game_personas not being saved with the game contents when saving the game
    • Last selected cards (before running out of match chances in Matching shuffle time) are now correctly returning to normal color (instead of staying white from the flash effect)
    • Fixed card method calls instead of card_name for Sprite_Card
    • Added message box in case you try to set the shuffle method to an incorrect one (none of the Horizontal, Diagonal or Combination)
    • Even more missed remove_persona -> remove_persona_by_id
    • Changed NO_PERSONAS_MSG
    • Can now check status of all actors (this was an incorrect behavior where you could not check an only-one-persona-user actor's status if they didn't have the persona equipped).





    07-08-2021
    Spoiler

    • Split script into Persona System Options and Persona System for easier debugging when reporting errors.










    Latest Update
    31-12-2025


    • Improvements, updates, fixes, and new features. Check Github for detailed changes.

    Please use Github to report any issues.
    For clarifications or small questions, send me a DM.

    Credits



    本贴来自国际rpgmaker官方论坛作者:vFoggy处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/persona-system.110908/

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    简体中文
    繁體中文
    English(英语)
    日本語(日语)
    Deutsch(德语)
    Русский язык(俄语)
    بالعربية(阿拉伯语)
    Türkçe(土耳其语)
    Português(葡萄牙语)
    ภาษาไทย(泰国语)
    한어(朝鲜语/韩语)
    Français(法语)
    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2026-8-17 06:15 , Processed in 0.105535 second(s), 56 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表