Advertisement
ICF-Soft

ICF-Soft Status Menu 1.03 RPG Maker MV

Oct 22nd, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //=============================================================================
  2. // ICF-Soft Plugins - Status Menu
  3. // ICFSoft_StatusMenu.js
  4. //=============================================================================
  5.  
  6. var Imported = Imported || {};
  7. Imported.ICFSoft_StatusMenu = true;
  8.  
  9. var ICF = ICF || {};
  10. ICF.StatusMenu = ICF.StatusMenu || {};
  11. ICF.NotetagsProcessor = ICF.NotetagsProcessor || {};
  12.  
  13. ICF.StatusMenu.Version = 103; // 1.03
  14.  
  15. //=============================================================================
  16.  /*:
  17.  * @plugindesc v1.03 A status menu where you can organize actor params.
  18.  * @author ICF-Soft [http://icfsoft.blogspot.com.es/]
  19.  *
  20.  * @param Column1
  21.  * @desc Param names that will be shown in column.
  22.  * @default atk def mat mdf agi luk
  23.  *
  24.  * @param Column2
  25.  * @desc Param names that will be shown in column.
  26.  * @default
  27.  *
  28.  * @param Column3
  29.  * @desc Param names that will be shown in column.
  30.  * @default
  31.  *
  32.  * @param Equip Column
  33.  * @desc Param names that will be shown in equip menu.
  34.  * @default atk def mat mdf agi luk
  35.  *
  36.  * @param Percentage params
  37.  * @desc What params will be used as percentages.
  38.  * @default
  39.  *
  40.  * @param Use New Param System
  41.  * @desc Use the new way to add formulas.
  42.  * @default true
  43.  *
  44.  * @param Evaluables
  45.  * @desc Making values througth formulas.
  46.  * @type struct<Evals>[]
  47.  * @default ["{\"Name\":\"Something random\",\"Formula\":\"Math.trunc(Math.random() * 100)\"}"]
  48.  *
  49.  * @param Percentages
  50.  * @desc Making percentage values througth formulas.
  51.  * @type struct<Percents>[]
  52.  * @default ["{\"Name\":\"Something random\",\"Formula\":\"Math.random()\"}"]
  53.  *
  54.  * @param Gauges
  55.  * @desc Making gauges througth formulas.
  56.  * @type struct<Gauges>[]
  57.  * @default ["{\"Name\":\"Random gauge\",\"Current\":\"Math.trunc(Math.random() * 100)\",\"Max\":\"100\",\"Color1\":\"#e99\",\"Color2\":\"17\",\"Show Current and Max\":\"false\"}"]
  58.  *
  59.  * @param Eval0 Name
  60.  * @desc A name to show inside status menu.
  61.  * @default Something random
  62.  *
  63.  * @param Eval0 Formula
  64.  * @desc Custom formula to show a value.
  65.  * @default Math.trunc(Math.random() * 100)
  66.  *
  67.  * @param Eval1 Name
  68.  * @desc A name to show inside status menu.
  69.  * @default
  70.  *
  71.  * @param Eval1 Formula
  72.  * @desc Custom formula to show a value.
  73.  * @default
  74.  *
  75.  * @param Eval2 Name
  76.  * @desc A name to show inside status menu.
  77.  * @default
  78.  *
  79.  * @param Eval2 Formula
  80.  * @desc Custom formula to show a value.
  81.  * @default
  82.  *
  83.  * @param Eval3 Name
  84.  * @desc A name to show inside status menu.
  85.  * @default
  86.  *
  87.  * @param Eval3 Formula
  88.  * @desc Custom formula to show a value.
  89.  * @default
  90.  *
  91.  * @param Eval4 Name
  92.  * @desc A name to show inside status menu.
  93.  * @default
  94.  *
  95.  * @param Eval4 Formula
  96.  * @desc Custom formula to show a value.
  97.  * @default
  98.  *
  99.  * @param Eval5 Name
  100.  * @desc A name to show inside status menu.
  101.  * @default
  102.  *
  103.  * @param Eval5 Formula
  104.  * @desc Custom formula to show a value.
  105.  * @default
  106.  *
  107.  * @param Eval6 Name
  108.  * @desc A name to show inside status menu.
  109.  * @default
  110.  *
  111.  * @param Eval6 Formula
  112.  * @desc Custom formula to show a value.
  113.  * @default
  114.  *
  115.  * @param Eval7 Name
  116.  * @desc A name to show inside status menu.
  117.  * @default
  118.  *
  119.  * @param Eval7 Formula
  120.  * @desc Custom formula to show a value.
  121.  * @default
  122.  *
  123.  * @param Eval8 Name
  124.  * @desc A name to show inside status menu.
  125.  * @default
  126.  *
  127.  * @param Eval8 Formula
  128.  * @desc Custom formula to show a value.
  129.  * @default
  130.  *
  131.  * @param Eval9 Name
  132.  * @desc A name to show inside status menu.
  133.  * @default
  134.  *
  135.  * @param Eval9 Formula
  136.  * @desc Custom formula to show a value.
  137.  * @default
  138.  *
  139.  * @param Percentage0 Name
  140.  * @desc A name to show inside status menu.
  141.  * @default Something random
  142.  *
  143.  * @param Percentage0 Formula
  144.  * @desc Custom formula to show a percentage value.
  145.  * @default Math.random()
  146.  *
  147.  * @param Percentage1 Name
  148.  * @desc A name to show inside status menu.
  149.  * @default
  150.  *
  151.  * @param Percentage1 Formula
  152.  * @desc Custom formula to show a percentage value.
  153.  * @default
  154.  *
  155.  * @param Percentage2 Name
  156.  * @desc A name to show inside status menu.
  157.  * @default
  158.  *
  159.  * @param Percentage2 Formula
  160.  * @desc Custom formula to show a percentage value.
  161.  * @default
  162.  *
  163.  * @param Percentage3 Name
  164.  * @desc A name to show inside status menu.
  165.  * @default
  166.  *
  167.  * @param Percentage3 Formula
  168.  * @desc Custom formula to show a percentage value.
  169.  * @default
  170.  *
  171.  * @param Percentage4 Name
  172.  * @desc A name to show inside status menu.
  173.  * @default
  174.  *
  175.  * @param Percentage4 Formula
  176.  * @desc Custom formula to show a percentage value.
  177.  * @default
  178.  *
  179.  * @param Percentage5 Name
  180.  * @desc A name to show inside status menu.
  181.  * @default
  182.  *
  183.  * @param Percentage5 Formula
  184.  * @desc Custom formula to show a percentage value.
  185.  * @default
  186.  *
  187.  * @param Percentage6 Name
  188.  * @desc A name to show inside status menu.
  189.  * @default
  190.  *
  191.  * @param Percentage6 Formula
  192.  * @desc Custom formula to show a percentage value.
  193.  * @default
  194.  *
  195.  * @param Percentage7 Name
  196.  * @desc A name to show inside status menu.
  197.  * @default
  198.  *
  199.  * @param Percentage7 Formula
  200.  * @desc Custom formula to show a percentage value.
  201.  * @default
  202.  *
  203.  * @param Percentage8 Name
  204.  * @desc A name to show inside status menu.
  205.  * @default
  206.  *
  207.  * @param Percentage8 Formula
  208.  * @desc Custom formula to show a percentage value.
  209.  * @default
  210.  *
  211.  * @param Percentage9 Name
  212.  * @desc A name to show inside status menu.
  213.  * @default
  214.  *
  215.  * @param Percentage9 Formula
  216.  * @desc Custom formula to show a percentage value.
  217.  * @default
  218.  *
  219.  * @param XParam0 Full Name
  220.  * @desc Name that will be shown for this extra param.
  221.  * @default Hit rate
  222.  *
  223.  * @param XParam1 Full Name
  224.  * @desc Name that will be shown for this extra param.
  225.  * @default Evasion rate
  226.  *
  227.  * @param XParam2 Full Name
  228.  * @desc Name that will be shown for this extra param.
  229.  * @default Critical rate
  230.  *
  231.  * @param XParam3 Full Name
  232.  * @desc Name that will be shown for this extra param.
  233.  * @default Critical evasion rate
  234.  *
  235.  * @param XParam4 Full Name
  236.  * @desc Name that will be shown for this extra param.
  237.  * @default Magic evasion rate
  238.  *
  239.  * @param XParam5 Full Name
  240.  * @desc Name that will be shown for this extra param.
  241.  * @default Magic reflection rate
  242.  *
  243.  * @param XParam6 Full Name
  244.  * @desc Name that will be shown for this extra param.
  245.  * @default Counter-attack rate
  246.  *
  247.  * @param XParam7 Full Name
  248.  * @desc Name that will be shown for this extra param.
  249.  * @default Hp-regen rate
  250.  *
  251.  * @param XParam8 Full Name
  252.  * @desc Name that will be shown for this extra param.
  253.  * @default Mp-regen rate
  254.  *
  255.  * @param XParam9 Full Name
  256.  * @desc Name that will be shown for this extra param.
  257.  * @default Tp-regen rate
  258.  *
  259.  * @param SParam0 Full Name
  260.  * @desc Name that will be shown for this special param.
  261.  * @default Targeted rate
  262.  *
  263.  * @param SParam1 Full Name
  264.  * @desc Name that will be shown for this special param.
  265.  * @default Guard rate
  266.  *
  267.  * @param SParam2 Full Name
  268.  * @desc Name that will be shown for this special param.
  269.  * @default Recovery rate
  270.  *
  271.  * @param SParam3 Full Name
  272.  * @desc Name that will be shown for this special param.
  273.  * @default Pharmacology
  274.  *
  275.  * @param SParam4 Full Name
  276.  * @desc Name that will be shown for this special param.
  277.  * @default Mp cost rate
  278.  *
  279.  * @param SParam5 Full Name
  280.  * @desc Name that will be shown for this special param.
  281.  * @default Tp cost rate
  282.  *
  283.  * @param SParam6 Full Name
  284.  * @desc Name that will be shown for this special param.
  285.  * @default Phisical damage rate
  286.  *
  287.  * @param SParam7 Full Name
  288.  * @desc Name that will be shown for this special param.
  289.  * @default Magical damage rate
  290.  *
  291.  * @param SParam8 Full Name
  292.  * @desc Name that will be shown for this special param.
  293.  * @default Floor damage rate
  294.  *
  295.  * @param SParam9 Full Name
  296.  * @desc Name that will be shown for this special param.
  297.  * @default Experience rate
  298.  *
  299.  * @help
  300.  * ============================================================================
  301.  * Introduction
  302.  * ============================================================================
  303.  *
  304.  * This plugin is made for use with ICF-Soft Params Core but can work alone.
  305.  *
  306.  * Allows you to show params in up to three columns plus equip, using all
  307.  * window width.
  308.  *
  309.  * You can use javascript code to be run to get a value and change columns
  310.  * for specified actors.
  311.  *
  312.  * ============================================================================
  313.  * How to use
  314.  * ============================================================================
  315.  *
  316.  * You can give different columns for specified actors with this notetag:
  317.  *
  318.  * <STATUS MENU COL x param param param>
  319.  *
  320.  * You need to specify column from 1 to 3 that will be replaced and
  321.  * params are separated by spaces.
  322.  * Allow param, nparam, pparam, xparam, sparam, evals, percents and gauges.
  323.  *
  324.  * <EQUIP STATUS MENU COL param param param>
  325.  *
  326.  * Replace shown params in equip menu. Params are separated by spaces.
  327.  * Allow param, nparam, pparam, xparam, sparam, evals and percents.
  328.  *
  329.  * More features will be added in the future.
  330.  *
  331.  * ============================================================================
  332.  * Parameters
  333.  * ============================================================================
  334.  *
  335.  * Use New Param System: Since MV version 1.5.0 there is a new way to setup
  336.  * plugin parameters and this is made to use them.
  337.  * You can create all evals parameters you'll need with indexes starting from 0.
  338.  * Old system allows up to 10 evals and percentages with indexes from 0 to 9.
  339.  * Old system will be removed in a future version.
  340.  *
  341.  * ColumnX: Place the param names that will be shown in comlumn separated by
  342.  * spaces. You can use up to 3 columns sharing width with equips.
  343.  * It works with param, nparam, pparam, evals, percents and gauges.
  344.  *
  345.  * Equip Column: Place the param names that will be shown in equip menu comlumn
  346.  * separated by spaces.
  347.  * It doesn't use gauges.
  348.  *
  349.  * Percentage params: Tell what params will be used as percentages.
  350.  * It works with pparam.
  351.  *
  352.  * New params:
  353.  * Evaluables: A name and a formula to determine a status slot.
  354.  * Use eval0, eval1, eval2 ... etc.
  355.  *
  356.  * Percentages: A name and a formula to determine a status slot as a percentage.
  357.  * Use percentage0, percentage1, percentage2 ... etc.
  358.  *
  359.  * Gauges: Place a gauge in a status slot. You can configure name, formulas for
  360.  * current and max values, gauge colors and if you want to show both current
  361.  * and max values or only current.
  362.  * Use gauge0, gauge1, gauge2 ... etc.
  363.  *
  364.  * Old params:
  365.  * EvalX/PercentageX Name: A name to give to pseudoparams inside
  366.  * status menu.
  367.  *
  368.  * EvalX/PercentageX Formula: These are custom formulas to give
  369.  * a value. Normal eval allow to use strings as a result while
  370.  * percentage ones must give a rate to convert into a percentage.
  371.  *
  372.  * Old system doesn't have gauges.
  373.  *
  374.  * ============================================================================
  375.  * Incompatibilities
  376.  * ============================================================================
  377.  *
  378.  * Can be incompatible or interfere with some similar plugins.
  379.  *
  380.  * ============================================================================
  381.  * Known isues
  382.  * ============================================================================
  383.  *
  384.  * Can interfere with some similar plugins or enhace them.
  385.  *
  386.  * ============================================================================
  387.  * Changelog
  388.  * ============================================================================
  389.  *
  390.  * Version 1.03:
  391.  * - Added a column for equipment menu.
  392.  * - Added custom formulas for gauges.
  393.  * - Use of 1.5.0 new plugin parameters.
  394.  *
  395.  * Version 1.02:
  396.  * - Added custom formulas to get values.
  397.  * - Added custom columns for specified actors.
  398.  *
  399.  * Version 1.01:
  400.  * - Allow to show special and extra params.
  401.  *
  402.  * Version 1.00:
  403.  * - Finished plugin!
  404.  *
  405.  * ============================================================================
  406.  *
  407.  * For commercial and non-commercial games.
  408.  * Credit to ICF-Soft.
  409.  * This entire header must be included with plugin.
  410.  *
  411.  * ============================================================================
  412. */
  413. //=============================================================================
  414.  /*:es
  415.  * @plugindesc v1.03 Una ventana de estado que permite mostrar
  416.  * los nparam y los pparam.
  417.  * @author ICF-Soft [http://icfsoft.blogspot.com.es/]
  418.  *
  419.  * @param Column1
  420.  * @desc Nombres básicos de los parámetros separados por espacios.
  421.  * @default atk def mat mdf agi luk
  422.  *
  423.  * @param Column2
  424.  * @desc Nombres básicos de los parámetros separados por espacios.
  425.  * @default
  426.  *
  427.  * @param Column3
  428.  * @desc Nombres básicos de los parámetros separados por espacios.
  429.  * @default
  430.  *
  431.  * @param Equip Column
  432.  * @desc Nombres básicos de los parámetros separados por espacios.
  433.  * @default atk def mat mdf agi luk
  434.  *
  435.  * @param Percentage params
  436.  * @desc Indica qué parámetros serán tratados como porcentajes.
  437.  * @default
  438.  *
  439.  * @param Use New Param System
  440.  * @desc Usar el nuevo modo de crear fórmulas.
  441.  * @default true
  442.  *
  443.  * @param Evaluables
  444.  * @desc Obteniendo valores a través de fórmulas.
  445.  * @type struct<Evals>[]
  446.  * @default ["{\"Name\":\"Algo aleatorio\",\"Formula\":\"Math.trunc(Math.random() * 100)\"}"]
  447.  *
  448.  * @param Percentages
  449.  * @desc Obteniendo valores porcentuales a través de fórmulas.
  450.  * @type struct<Percents>[]
  451.  * @default ["{\"Name\":\"Algo aleatorio\",\"Formula\":\"Math.random()\"}"]
  452.  *
  453.  * @param Gauges
  454.  * @desc Obteniendo barras de medición a través de fórmulas.
  455.  * @type struct<Gauges>[]
  456.  * @default ["{\"Name\":\"Medidor aleatorio\",\"Current\":\"Math.trunc(Math.random() * 100)\",\"Max\":\"100\",\"Color1\":\"#e99\",\"Color2\":\"17\",\"Show Current and Max\":\"false\"}"]
  457.  *
  458.  * @param Eval0 Name
  459.  * @desc Nombre a mostrar en el menú de estado.
  460.  * @default Algo aleatorio
  461.  *
  462.  * @param Eval0 Formula
  463.  * @desc Fórmula personalizada para obtener un valor.
  464.  * @default Math.trunc(Math.random() * 100)
  465.  *
  466.  * @param Eval1 Name
  467.  * @desc Nombre a mostrar en el menú de estado.
  468.  * @default
  469.  *
  470.  * @param Eval1 Formula
  471.  * @desc Fórmula personalizada para obtener un valor.
  472.  * @default
  473.  *
  474.  * @param Eval2 Name
  475.  * @desc Nombre a mostrar en el menú de estado.
  476.  * @default
  477.  *
  478.  * @param Eval2 Formula
  479.  * @desc Fórmula personalizada para obtener un valor.
  480.  * @default
  481.  *
  482.  * @param Eval3 Name
  483.  * @desc Nombre a mostrar en el menú de estado.
  484.  * @default
  485.  *
  486.  * @param Eval3 Formula
  487.  * @desc Fórmula personalizada para obtener un valor.
  488.  * @default
  489.  *
  490.  * @param Eval4 Name
  491.  * @desc Nombre a mostrar en el menú de estado.
  492.  * @default
  493.  *
  494.  * @param Eval4 Formula
  495.  * @desc Fórmula personalizada para obtener un valor.
  496.  * @default
  497.  *
  498.  * @param Eval5 Name
  499.  * @desc Nombre a mostrar en el menú de estado.
  500.  * @default
  501.  *
  502.  * @param Eval5 Formula
  503.  * @desc Fórmula personalizada para obtener un valor.
  504.  * @default
  505.  *
  506.  * @param Eval6 Name
  507.  * @desc Nombre a mostrar en el menú de estado.
  508.  * @default
  509.  *
  510.  * @param Eval6 Formula
  511.  * @desc Fórmula personalizada para obtener un valor.
  512.  * @default
  513.  *
  514.  * @param Eval7 Name
  515.  * @desc Nombre a mostrar en el menú de estado.
  516.  * @default
  517.  *
  518.  * @param Eval7 Formula
  519.  * @desc Fórmula personalizada para obtener un valor.
  520.  * @default
  521.  *
  522.  * @param Eval8 Name
  523.  * @desc Nombre a mostrar en el menú de estado.
  524.  * @default
  525.  *
  526.  * @param Eval8 Formula
  527.  * @desc Fórmula personalizada para obtener un valor.
  528.  * @default
  529.  *
  530.  * @param Eval9 Name
  531.  * @desc Nombre a mostrar en el menú de estado.
  532.  * @default
  533.  *
  534.  * @param Eval9 Formula
  535.  * @desc Fórmula personalizada para obtener un valor.
  536.  * @default
  537.  *
  538.  * @param Percentage0 Name
  539.  * @desc Nombre a mostrar en el menú de estado.
  540.  * @default Algo aleatorio
  541.  *
  542.  * @param Percentage0 Formula
  543.  * @desc Fórmula personalizada para obtener un valor porcentual.
  544.  * @default Math.random()
  545.  *
  546.  * @param Percentage1 Name
  547.  * @desc Nombre a mostrar en el menú de estado.
  548.  * @default
  549.  *
  550.  * @param Percentage1 Formula
  551.  * @desc Fórmula personalizada para obtener un valor porcentual.
  552.  * @default
  553.  *
  554.  * @param Percentage2 Name
  555.  * @desc Nombre a mostrar en el menú de estado.
  556.  * @default
  557.  *
  558.  * @param Percentage2 Formula
  559.  * @desc Fórmula personalizada para obtener un valor porcentual.
  560.  * @default
  561.  *
  562.  * @param Percentage3 Name
  563.  * @desc Nombre a mostrar en el menú de estado.
  564.  * @default
  565.  *
  566.  * @param Percentage3 Formula
  567.  * @desc Fórmula personalizada para obtener un valor porcentual.
  568.  * @default
  569.  *
  570.  * @param Percentage4 Name
  571.  * @desc Nombre a mostrar en el menú de estado.
  572.  * @default
  573.  *
  574.  * @param Percentage4 Formula
  575.  * @desc Fórmula personalizada para obtener un valor porcentual.
  576.  * @default
  577.  *
  578.  * @param Percentage5 Name
  579.  * @desc Nombre a mostrar en el menú de estado.
  580.  * @default
  581.  *
  582.  * @param Percentage5 Formula
  583.  * @desc Fórmula personalizada para obtener un valor porcentual.
  584.  * @default
  585.  *
  586.  * @param Percentage6 Name
  587.  * @desc Nombre a mostrar en el menú de estado.
  588.  * @default
  589.  *
  590.  * @param Percentage6 Formula
  591.  * @desc Fórmula personalizada para obtener un valor porcentual.
  592.  * @default
  593.  *
  594.  * @param Percentage7 Name
  595.  * @desc Nombre a mostrar en el menú de estado.
  596.  * @default
  597.  *
  598.  * @param Percentage7 Formula
  599.  * @desc Fórmula personalizada para obtener un valor porcentual.
  600.  * @default
  601.  *
  602.  * @param Percentage8 Name
  603.  * @desc Nombre a mostrar en el menú de estado.
  604.  * @default
  605.  *
  606.  * @param Percentage8 Formula
  607.  * @desc Fórmula personalizada para obtener un valor porcentual.
  608.  * @default
  609.  *
  610.  * @param Percentage9 Name
  611.  * @desc Nombre a mostrar en el menú de estado.
  612.  * @default
  613.  *
  614.  * @param Percentage9 Formula
  615.  * @desc Fórmula personalizada para obtener un valor porcentual.
  616.  * @default
  617.  *
  618.  * @param XParam0 Full Name
  619.  * @desc Nombre mostrado para este parámetro extra.
  620.  * @default Puntería
  621.  *
  622.  * @param XParam1 Full Name
  623.  * @desc Nombre mostrado para este parámetro extra.
  624.  * @default Evasión
  625.  *
  626.  * @param XParam2 Full Name
  627.  * @desc Nombre mostrado para este parámetro extra.
  628.  * @default Probabilidad de crítico
  629.  *
  630.  * @param XParam3 Full Name
  631.  * @desc Nombre mostrado para este parámetro extra.
  632.  * @default Evadir crítico
  633.  *
  634.  * @param XParam4 Full Name
  635.  * @desc Nombre mostrado para este parámetro extra.
  636.  * @default Evasión mágica
  637.  *
  638.  * @param XParam5 Full Name
  639.  * @desc Nombre mostrado para este parámetro extra.
  640.  * @default Reflejo mágico
  641.  *
  642.  * @param XParam6 Full Name
  643.  * @desc Nombre mostrado para este parámetro extra.
  644.  * @default Contraataque
  645.  *
  646.  * @param XParam7 Full Name
  647.  * @desc Nombre mostrado para este parámetro extra.
  648.  * @default Regenerar vida
  649.  *
  650.  * @param XParam8 Full Name
  651.  * @desc Nombre mostrado para este parámetro extra.
  652.  * @default Regenerar magia
  653.  *
  654.  * @param XParam9 Full Name
  655.  * @desc Nombre mostrado para este parámetro extra.
  656.  * @default Regenerar turbo
  657.  *
  658.  * @param SParam0 Full Name
  659.  * @desc Nombre mostrado para este parámetro especial.
  660.  * @default Ser el objetivo
  661.  *
  662.  * @param SParam1 Full Name
  663.  * @desc Nombre mostrado para este parámetro especial.
  664.  * @default Efecto defensivo
  665.  *
  666.  * @param SParam2 Full Name
  667.  * @desc Nombre mostrado para este parámetro especial.
  668.  * @default Efecto de recuperación
  669.  *
  670.  * @param SParam3 Full Name
  671.  * @desc Nombre mostrado para este parámetro especial.
  672.  * @default Farmacología
  673.  *
  674.  * @param SParam4 Full Name
  675.  * @desc Nombre mostrado para este parámetro especial.
  676.  * @default Coste de mp
  677.  *
  678.  * @param SParam5 Full Name
  679.  * @desc Nombre mostrado para este parámetro especial.
  680.  * @default Coste de tp
  681.  *
  682.  * @param SParam6 Full Name
  683.  * @desc Nombre mostrado para este parámetro especial.
  684.  * @default Daño físico recibido
  685.  *
  686.  * @param SParam7 Full Name
  687.  * @desc Nombre mostrado para este parámetro especial.
  688.  * @default Daño mágico recibido
  689.  *
  690.  * @param SParam8 Full Name
  691.  * @desc Nombre mostrado para este parámetro especial.
  692.  * @default Daño por el terreno
  693.  *
  694.  * @param SParam9 Full Name
  695.  * @desc Nombre mostrado para este parámetro especial.
  696.  * @default Experiencia obtenible
  697.  *
  698.  * @help
  699.  * ============================================================================
  700.  * Introducción
  701.  * ============================================================================
  702.  *
  703.  * Este plugin está hecho para su uso con el ICF-Soft Params Core pero puede
  704.  * usarse solo.
  705.  *
  706.  * Permite mostrar los parámetros en hasta tres columnas aparte del
  707.  * equipamiento aprovechando todo el ancho.
  708.  *
  709.  * Puedes utilizar código javascript que se ejecutará para obtener un valor
  710.  * y además cambiar columnas para personajes específicos.
  711.  *
  712.  * Iré añadiendo más características.
  713.  *
  714.  * ============================================================================
  715.  * Uso
  716.  * ============================================================================
  717.  *
  718.  * Puedes alterar las columnas para personajes específicos con la
  719.  * siguiente etiqueta:
  720.  *
  721.  * <STATUS MENU COL x param param param>
  722.  *
  723.  * Debes especificar una columna entre la 1 y la 3 que será reemplazada
  724.  * y los parámetros separados por espacios.
  725.  * Permite param, nparam, pparam, xparam, sparam, evaluables, porcentajes y
  726.  * barras.
  727.  *
  728.  * <EQUIP STATUS MENU COL param param param>
  729.  *
  730.  * Reemplaza los parámetros a mostrar en el menú de equipamiento.
  731.  * Permite param, nparam, pparam, xparam, sparam, evaluables y porcentajes.
  732.  *
  733.  * ============================================================================
  734.  * Parámetros
  735.  * ============================================================================
  736.  *
  737.  * Use New Param System: Con la llegada de la versión 1.5.0 del MV se ha
  738.  * introducido un nuevo modo de configurar los parámetros del plugin que
  739.  * pretendo aprovechar.
  740.  * Puedes crear todos los evaluables y medidores que necesites con índices a
  741.  * partir de 0.
  742.  * El sistema antiguo permite hasta 10 evals y porcentajes con índices de 0 a 9.
  743.  * Dicho sistema se eliminará en una versión futura.
  744.  *
  745.  * ColumnX: Para colocar los nombres básicos de los parámetros separados por
  746.  * espacios. Hay hasta 3 columnas repartidas entre el ancho de la ventana.
  747.  * Funciona con todos los ya mostrados.
  748.  *
  749.  * Equip Column: Para colocar los nombres básicos de los parámetros en el menú
  750.  * de equipamiento separados por espacios.
  751.  * No usa barras de medición.
  752.  *
  753.  * Percentage params: Indica qué parámetros serán tratados como porcentajes.
  754.  * Usa dos decimales. De momento solo para los pparam.
  755.  *
  756.  * Modo actual:
  757.  * Evaluables: Nombre y fórmula para obtener un valor.
  758.  * Se utiliza eval0, eval1, eval2 ... etc.
  759.  *
  760.  * Percentages: Nombre y fórmula para obtener un valor porcentual.
  761.  * Se utiliza percentage0, percentage1, percentage2 ... etc.
  762.  *
  763.  * Gauges: Coloca una barra de medición similar a las de vida. Puedes
  764.  * configurar el nómbre, fórmulas para los valores actual y máximo, colores de
  765.  * la barra si mostrar ambos valores o solo el actual.
  766.  * Se utiliza gauge0, gauge1, gauge2 ... etc.
  767.  *
  768.  * Modo antiguo:
  769.  * EvalX/PercentageX Name: Un nombre a mostrar dentro del menú de estado
  770.  * para representar el código javascript.
  771.  *
  772.  * EvalX/PercentageX Formula: Fórmulas personalizadas de donde obtener un
  773.  * valor. Los códigos eval permiten el uso de strings como resultado
  774.  * mientras que los percentage requieren un número de donde sacar un
  775.  * porcentaje.
  776.  *
  777.  * El sistema antiguo no utiliza barras medidoras.
  778.  *
  779.  * ============================================================================
  780.  * Incompatibilidades
  781.  * ============================================================================
  782.  *
  783.  * Puede ser incompatible con otros plugins similares.
  784.  *
  785.  * ============================================================================
  786.  * Problemas conocidos
  787.  * ============================================================================
  788.  *
  789.  * Puede interferir con otros plugins similares. Pero puede combinarse
  790.  * con otros.
  791.  *
  792.  * ============================================================================
  793.  * Historial de versiones
  794.  * ============================================================================
  795.  *
  796.  * Versión 1.03:
  797.  * - Añadida columna para el menú de equipamiento.
  798.  * - Añadidas fórmulas personalizadas para obtener valores de medición.
  799.  * - Uso del sistema de parámetros del 1.5.0.
  800.  *
  801.  * Versión 1.02:
  802.  * - Añadidas fórmulas personalizadas para obtener valores.
  803.  * - Añadidas columnas personalizadas para personajes específicos.
  804.  *
  805.  * Versión 1.01:
  806.  * - Permite mostrar los parámetros especiales y extra.
  807.  *
  808.  * Versión 1.00:
  809.  * - Complemento terminado.
  810.  *
  811.  * ============================================================================
  812.  *
  813.  * Para juegos comerciales y no comerciales.
  814.  * Se debe incluir a ICF-Soft en los créditos.
  815.  * Esta cabecera debe incluirse íntegramente con el plugin.
  816.  *
  817.  * ============================================================================
  818. */
  819. /*~struct~Evals:
  820.  * @param Name
  821.  * @desc A name to show inside status menu.
  822.  * @default
  823.  *
  824.  * @param Formula
  825.  * @desc Custom formula to show a value.
  826.  * @default
  827.  *
  828.  */
  829. /*~struct~Percents:
  830.  * @param Name
  831.  * @desc A name to show inside status menu.
  832.  * @default
  833.  *
  834.  * @param Formula
  835.  * @desc Custom formula to show a percentage value.
  836.  * @default
  837.  *
  838.  */
  839. /*~struct~Gauges:
  840.  * @param Name
  841.  * @desc A name to show inside status menu.
  842.  * @default
  843.  *
  844.  * @param Current
  845.  * @desc Custom formula to show a percentage value.
  846.  * @default
  847.  *
  848.  * @param Max
  849.  * @desc Custom formula to show a percentage value.
  850.  * @default
  851.  *
  852.  * @param Color1
  853.  * @desc First color for gauge. Can be a html code or a number.
  854.  * @default
  855.  *
  856.  * @param Color2
  857.  * @desc Second color for gauge. Can be a html code or a number.
  858.  * @default
  859.  *
  860.  * @param Show Current and Max
  861.  * @desc When true it shows current and max values.
  862.  * @default true
  863.  *
  864.  */
  865. /*~struct~Evals:es
  866.  * @param Name
  867.  * @desc Nombre a mostrar en el menú de estado.
  868.  * @default
  869.  *
  870.  * @param Formula
  871.  * @desc Fórmula personalizada para obtener un valor.
  872.  * @default
  873.  *
  874.  */
  875. /*~struct~Percents:es
  876.  * @param Name
  877.  * @desc Nombre a mostrar en el menú de estado.
  878.  * @default
  879.  *
  880.  * @param Formula
  881.  * @desc Fórmula personalizada para obtener un valor porcentual.
  882.  * @default
  883.  *
  884.  */
  885. /*~struct~Gauges:es
  886.  * @param Name
  887.  * @desc Nombre a mostrar en el menú de estado.
  888.  * @default
  889.  *
  890.  * @param Current
  891.  * @desc Fórmula personalizada para obtener un valor actual.
  892.  * @default
  893.  *
  894.  * @param Max
  895.  * @desc Fórmula personalizada para obtener un valor máximo.
  896.  * @default
  897.  *
  898.  * @param Color1
  899.  * @desc Primer color de la barra. Se puede usar un color html o un número.
  900.  * @default
  901.  *
  902.  * @param Color2
  903.  * @desc Segundo color de la barra. Se puede usar un color html o un número.
  904.  * @default
  905.  *
  906.  * @param Show Current and Max
  907.  * @desc Si está activado mostrará los valores actual y máximo.
  908.  * @default true
  909.  *
  910.  */
  911. //=============================================================================
  912.  
  913. //=============================================================================
  914. // Parameter Variables
  915. //=============================================================================
  916.  
  917. ICF.Parameters = PluginManager.parameters('ICFSoft_StatusMenu');
  918. ICF.Param = ICF.Param || {};
  919.  
  920. ICF.Param.StatusMenuCol1 = ICF.Parameters['Column1'].toLowerCase().trim().split(/\s+/);
  921. ICF.Param.StatusMenuCol2 = ICF.Parameters['Column2'].toLowerCase().trim().split(/\s+/);
  922. ICF.Param.StatusMenuCol3 = ICF.Parameters['Column3'].toLowerCase().trim().split(/\s+/);
  923. ICF.Param.EquipStatusMenuCol = ICF.Parameters['Equip Column'].toLowerCase().trim().split(/\s+/);
  924. ICF.Param.PercentageParams = ICF.Parameters['Percentage params'].toLowerCase().split(/\s+/);
  925.  
  926. if (ICF.Param.StatusMenuCol1[0] == "") ICF.Param.StatusMenuCol1.shift();
  927. if (ICF.Param.StatusMenuCol2[0] == "") ICF.Param.StatusMenuCol2.shift();
  928. if (ICF.Param.StatusMenuCol3[0] == "") ICF.Param.StatusMenuCol3.shift();
  929. if (ICF.Param.EquipStatusMenuCol[0] == "") ICF.Param.EquipStatusMenuCol.shift();
  930.  
  931. if (!Imported.ICFSoft_ParamCore) {
  932.     ICF.Param.NParams = [];
  933.     ICF.Param.PParams = [];
  934.     ICF.Param.BParams = ["mhp", "mmp", "atk", "def", "mat", "mdf", "agi", "luk"];
  935.     ICF.Param.XParamsFullName = [];
  936.     ICF.Param.XParams = ["hit", "eva", "cri", "cev", "mev", "mrf", "cnt", "hrg", "mrg", "trg"];
  937.     ICF.Param.SParamsFullName = [];
  938.     ICF.Param.SParams = ["tgr", "grd", "rec", "pha", "mcr", "tcr", "pdr", "mdr", "fdr", "exr"];
  939.  
  940.     for (var i = 0; i < 10; i++) {
  941.         ICF.Param.XParamsFullName[i] = String(ICF.Parameters['XParam' + i + ' Full Name']);
  942.         ICF.Param.SParamsFullName[i] = String(ICF.Parameters['SParam' + i + ' Full Name']);
  943.     }
  944.  
  945. }
  946.  
  947. ICF.Param.EvalParams = [];
  948. ICF.Param.EvalPercentParams = [];
  949. ICF.Param.EvalGauges = [];
  950.  
  951. if (ICF.Parameters['Use New Param System'].toLowerCase() === "true") {
  952.     ICF.temp = JSON.parse(ICF.Parameters['Evaluables']);
  953.     for (var i = 0; i < ICF.temp.length; i++) {
  954.     ICF.temp[i] = JSON.parse(ICF.temp[i]);
  955.     ICF.Param.EvalParams[i] = [];
  956.     ICF.Param.EvalParams[i][0] = ICF.temp[i]['Name'];
  957.     ICF.Param.EvalParams[i][1] = ICF.temp[i]['Formula'];
  958.     }
  959.     ICF.temp = JSON.parse(ICF.Parameters['Percentages']);
  960.     for (var i = 0; i < ICF.temp.length; i++) {
  961.     ICF.temp[i] = JSON.parse(ICF.temp[i]);
  962.     ICF.Param.EvalPercentParams[i] = [];
  963.     ICF.Param.EvalPercentParams[i][0] = ICF.temp[i]['Name'];
  964.     ICF.Param.EvalPercentParams[i][1] = ICF.temp[i]['Formula'];
  965.     }
  966.     ICF.temp = JSON.parse(ICF.Parameters['Gauges']);
  967.     for (var i = 0; i < ICF.temp.length; i++) {
  968.     ICF.temp[i] = JSON.parse(ICF.temp[i]);
  969.     ICF.Param.EvalGauges[i] = [];
  970.     ICF.Param.EvalGauges[i][0] = ICF.temp[i]['Name'];
  971.     ICF.Param.EvalGauges[i][1] = ICF.temp[i]['Current'];
  972.     ICF.Param.EvalGauges[i][2] = ICF.temp[i]['Max'];
  973.     ICF.Param.EvalGauges[i][3] = isNaN(ICF.temp[i]['Color1'])? ICF.temp[i]['Color1'] : Number(ICF.temp[i]['Color1']);
  974.     ICF.Param.EvalGauges[i][4] = isNaN(ICF.temp[i]['Color2'])? ICF.temp[i]['Color2'] : Number(ICF.temp[i]['Color2']);
  975.     ICF.Param.EvalGauges[i][5] = ICF.temp[i]['Show Current and Max'].toLowerCase() === "true";
  976.     }
  977. } else {
  978.     for (var i = 0; i < 10; i++) {
  979.     ICF.Param.EvalParams[i] = [];
  980.     ICF.Param.EvalParams[i][0] = String(ICF.Parameters['Eval' + i + ' Name']);
  981.     ICF.Param.EvalParams[i][1] = String(ICF.Parameters['Eval' + i + ' Formula']);
  982.     ICF.Param.EvalPercentParams[i] = [];
  983.     ICF.Param.EvalPercentParams[i][0] = String(ICF.Parameters['Percentage' + i + ' Name']);
  984.     ICF.Param.EvalPercentParams[i][1] = String(ICF.Parameters['Percentage' + i + ' Formula']);
  985.     }
  986. }
  987.  
  988. //=============================================================================
  989. // DataManager
  990. //=============================================================================
  991.  
  992. ICF.StatusMenu.DataManager_isDatabaseLoaded = DataManager.isDatabaseLoaded;
  993. DataManager.isDatabaseLoaded = function() {
  994.     if (!ICF.StatusMenu.DataManager_isDatabaseLoaded.call(this)) return false;
  995.     if (!ICF.StatusMenu.Procesed) {
  996.     ICF.NotetagsProcessor.statusMenu($dataActors);
  997.     ICF.StatusMenu.Procesed = true;
  998.     }
  999.     return true;
  1000. };
  1001.  
  1002. ICF.NotetagsProcessor.statusMenu = function(group) {
  1003.     var note1 = /<(?:STATUS[-_ ]MENU[-_ ]COL[-_ ])(\d)[ ]+((?:[\w-_]+\s*)+)>/i;
  1004.     var note2 = /<(?:EQUIP[-_ ]STATUS[-_ ]MENU[-_ ]COL)[ ]+((?:[\w-_]+\s*)+)>/i;
  1005.  
  1006.     for (var n = 1; n < group.length; n++) {
  1007.     var obj = group[n];
  1008.     var notedata = obj.note.split(/[\r\n]+/);
  1009.  
  1010.     obj.StatusMenuCols = [];
  1011.     obj.EquipStatusMenuCol = [];
  1012.  
  1013.         for (var i = 0; i < notedata.length; i++) {
  1014.         var line = notedata[i];
  1015.         if (line.match(note1)) {
  1016.             obj.StatusMenuCols[Number(RegExp.$1)] = RegExp.$2.toLowerCase().trim().split(/\s+/);
  1017.         } else if (line.match(note2)) {
  1018.             obj.EquipStatusMenuCol = RegExp.$1.toLowerCase().trim().split(/\s+/);
  1019.         }
  1020.         }
  1021.     }
  1022. };
  1023.  
  1024. //=============================================================================
  1025. // Game_Actor
  1026. //=============================================================================
  1027.  
  1028. Game_Actor.prototype.statusMenuCols = function() {
  1029.     var st0 = $dataActors[this._actorId].StatusMenuCols;
  1030.     var st1 = [];
  1031.     st1[1] = st0[1] || ICF.Param.StatusMenuCol1;
  1032.     st1[2] = st0[2] || ICF.Param.StatusMenuCol2;
  1033.     st1[3] = st0[3] || ICF.Param.StatusMenuCol3;
  1034.     return st1;
  1035. };
  1036.  
  1037. Game_Actor.prototype.eqStatusMenuCols = function() {
  1038.     var st0 = $dataActors[this._actorId].EquipStatusMenuCol;
  1039.     var st1 = (st0.length > 0)? st0 : ICF.Param.EquipStatusMenuCol;
  1040.     return st1;
  1041. };
  1042.  
  1043. //=============================================================================
  1044. // Window_Status
  1045. //=============================================================================
  1046.  
  1047. Window_Status.prototype.drawBlock3 = function(y) {
  1048.     var st = this._actor.statusMenuCols();
  1049.  
  1050.     if (st[1].length == 0) {
  1051.     this.drawEquipments(this.contentsWidth()/2, y);
  1052.     } else if (st[2].length == 0) {
  1053.     var width = this.contentsWidth() / 2 - this.textPadding() * 3;
  1054.     this.drawParameters(this.textPadding(), y, width, st[1]);
  1055.     this.drawEquipments(this.contentsWidth()/2 + this.textPadding(), y);
  1056.     } else if (st[3].length == 0) {
  1057.     var width = this.contentsWidth() / 3 - this.textPadding() * 4;
  1058.     this.drawParameters(this.textPadding(), y, width, st[1]);
  1059.     this.drawParameters(this.contentsWidth()/3 + this.textPadding(), y, width, st[2]);
  1060.     this.drawEquipments(this.contentsWidth()*2/3 + this.textPadding(), y);
  1061.     } else {
  1062.     var width = this.contentsWidth() / 4 - this.textPadding() * 5;
  1063.     this.drawParameters(this.textPadding(), y, width, st[1]);
  1064.     this.drawParameters(this.contentsWidth()/4 + this.textPadding(), y, width, st[2]);
  1065.     this.drawParameters(this.contentsWidth()*2/4 + this.textPadding(), y, width, st[3]);
  1066.     this.drawEquipments(this.contentsWidth()*3/4 + this.textPadding(), y);
  1067.     }
  1068. };
  1069.  
  1070. ICF.StatusMenu.drawParamsOldStyle = Window_Status.prototype.drawParameters;
  1071. Window_Status.prototype.drawParameters = function(x, y, width, ary) {
  1072.     if ((width == undefined)||(ary == undefined)) {
  1073.     ICF.StatusMenu.drawParamsOldStyle.call(this, x, y);
  1074.     return;
  1075.     }
  1076.     var lineHeight = this.lineHeight();
  1077.     var y2 = y;
  1078.     var actor = this._actor;
  1079.     for (var i = 0; i < ary.length; i++) {
  1080.         var param = [];
  1081.         var gauge = false;
  1082.     if (ICF.Param.NParams.indexOf(ary[i]) > -1) {
  1083.         var paramId = ICF.Param.NParams.indexOf(ary[i]);
  1084.         param.push(ICF.Param.NParamsFullName[paramId]);
  1085.         param.push(actor.NParam(paramId));
  1086.     } else if (ICF.Param.PParams.indexOf(ary[i]) > -1) {
  1087.         var paramId = ICF.Param.PParams.indexOf(ary[i]);
  1088.         param.push(ICF.Param.PParamsFullName[paramId]);
  1089.         if (ICF.Param.PercentageParams.indexOf(ary[i]) > -1) {
  1090.             param.push((actor.PParam(paramId)*100).toFixed(2) + "%");
  1091.         } else {
  1092.             param.push(Math.trunc(actor.PParam(paramId)));
  1093.         }
  1094.     } else if (ICF.Param.BParams.indexOf(ary[i]) > -1) {
  1095.         var paramId = ICF.Param.BParams.indexOf(ary[i]);
  1096.         param.push(TextManager.param(paramId));
  1097.         param.push(actor.param(paramId));
  1098.     } else if (ICF.Param.XParams.indexOf(ary[i]) > -1) {
  1099.         var paramId = ICF.Param.XParams.indexOf(ary[i]);
  1100.         param.push(ICF.Param.XParamsFullName[paramId]);
  1101.         param.push((actor.xparam(paramId)*100).toFixed(2) + "%");
  1102.     } else if (ICF.Param.SParams.indexOf(ary[i]) > -1) {
  1103.         var paramId = ICF.Param.SParams.indexOf(ary[i]);
  1104.         param.push(ICF.Param.SParamsFullName[paramId]);
  1105.         param.push((actor.sparam(paramId)*100).toFixed(2) + "%");
  1106.     } else if (ary[i].match(/(?:eval)(\d+)/i)) {
  1107.         var paramId = ICF.Param.EvalParams[RegExp.$1];
  1108.         param.push(paramId[0]);
  1109.         param.push(eval(paramId[1]));
  1110.     } else if (ary[i].match(/(?:percentage)(\d+)/i)) {
  1111.         var paramId = ICF.Param.EvalPercentParams[RegExp.$1];
  1112.         param.push(paramId[0]);
  1113.         param.push((eval(paramId[1])*100).toFixed(2) + "%");
  1114.     } else if (ary[i].match(/(?:gauge)(\d+)/i)) {
  1115.         var paramId = ICF.Param.EvalGauges[RegExp.$1];
  1116.         param.push(paramId[0]);
  1117.         param.push(eval(paramId[1]));
  1118.         param.push(eval(paramId[2]));
  1119.         param.push(paramId[3]);
  1120.         param.push(paramId[4]);
  1121.         param.push(paramId[5]);
  1122.         gauge = true;
  1123.     }
  1124.     if (gauge) {
  1125.         var color1 = isNaN(param[3])? param[3] : this.textColor(param[3]);
  1126.         var color2 = isNaN(param[4])? param[4] : this.textColor(param[4]);
  1127.         this.drawGauge(x, y2, width, (param[1] / param[2]).clamp(0.0, 1.0), color1, color2);
  1128.         if (param[5]) {
  1129.             this.changeTextColor(this.systemColor());
  1130.             this.drawText(param[0], x, y2, width / 3);
  1131.             this.drawCurrentAndMax(param[1], param[2], x + width / 3 - this.textWidth('HP'), y2,
  1132.                            width * 2 / 3 + this.textWidth('HP'), this.normalColor(), this.normalColor());
  1133.         } else {
  1134.             this.changeTextColor(this.systemColor());
  1135.             this.drawText(param[0], x, y2, width * 2 / 3);
  1136.             this.resetTextColor();
  1137.             this.drawText(param[1], x + width * 2 / 3, y2, width / 3, 'right');
  1138.         }
  1139.     } else if (param.length > 0) {
  1140.         this.changeTextColor(this.systemColor());
  1141.         this.drawText(param[0], x, y2, width * 2 / 3);
  1142.         this.resetTextColor();
  1143.         this.drawText(param[1], x + width * 2 / 3, y2, width / 3, 'right');
  1144.     }
  1145.     y2 += lineHeight;
  1146.     }
  1147. };
  1148.  
  1149. //=============================================================================
  1150. // Window_EquipStatus
  1151. //=============================================================================
  1152.  
  1153. Window_EquipStatus.prototype.refresh = function() {
  1154.     this.contents.clear();
  1155.     var st = [];
  1156.     if (this._actor) st = this._actor.eqStatusMenuCols();
  1157.     if (st.length > 0) {
  1158.         this.drawActorName(this._actor, this.textPadding(), 0);
  1159.         for (var i = 0; i < st.length; i++) {
  1160.         var param = null;
  1161.         var paramId = null;
  1162.         var percentage = false;
  1163.         var evaluate = null;
  1164.         if (ICF.Param.NParams.indexOf(st[i]) > -1) {
  1165.         paramId = ICF.Param.NParams.indexOf(st[i]);
  1166.         param = ICF.Param.NParams[paramId];
  1167.         paramId = ICF.Param.NParamsFullName[paramId];
  1168.         } else if (ICF.Param.PParams.indexOf(st[i]) > -1) {
  1169.         paramId = ICF.Param.PParams.indexOf(st[i]);
  1170.         param = ICF.Param.PParams[paramId];
  1171.         if (ICF.Param.PercentageParams.indexOf(st[i]) > -1) percentage = true;
  1172.         paramId = ICF.Param.PParamsFullName[paramId];
  1173.         } else if (ICF.Param.BParams.indexOf(st[i]) > -1) {
  1174.         paramId = ICF.Param.BParams.indexOf(st[i]);
  1175.         param = ICF.Param.BParams[paramId];
  1176.         paramId = TextManager.param(paramId);
  1177.         } else if (ICF.Param.XParams.indexOf(st[i]) > -1) {
  1178.         paramId = ICF.Param.XParams.indexOf(st[i]);
  1179.         param = ICF.Param.XParams[paramId];
  1180.         paramId = ICF.Param.XParamsFullName[paramId];
  1181.         percentage = true;
  1182.         } else if (ICF.Param.SParams.indexOf(st[i]) > -1) {
  1183.         paramId = ICF.Param.SParams.indexOf(st[i]);
  1184.         param = ICF.Param.SParams[paramId];
  1185.         paramId = ICF.Param.SParamsFullName[paramId];
  1186.         percentage = true;
  1187.         } else if (st[i].match(/(?:eval)(\d+)/i)) {
  1188.         paramId = ICF.Param.EvalParams[RegExp.$1];
  1189.         param = paramId[0];
  1190.         evaluate = paramId[1];
  1191.         paramId = param;
  1192.         } else if (st[i].match(/(?:percentage)(\d+)/i)) {
  1193.         paramId = ICF.Param.EvalPercentParams[RegExp.$1];
  1194.         param = paramId[0];
  1195.         evaluate = paramId[1];
  1196.         paramId = param;
  1197.         percentage = true;
  1198.         }
  1199.         if (param !== null) {
  1200.         this.drawItem(0, this.lineHeight() * (1 + i), paramId, param, percentage, evaluate);
  1201.         }
  1202.         }
  1203.     }
  1204.     this.resetTextColor();
  1205. };
  1206.  
  1207. Window_EquipStatus.prototype.drawItem = function(x, y, paramId, paramName, percentage, evaluate) {
  1208.     this.changeTextColor(this.systemColor());
  1209.     this.drawText(paramId, x + this.textPadding(), y, 120);
  1210.     this.resetTextColor();
  1211.     if (this._actor) {
  1212.         this.drawCurrentParam(x + 140, y, paramId, paramName, percentage, evaluate);
  1213.     }
  1214.     this.drawRightArrow(x + 188, y);
  1215.     if (this._tempActor) {
  1216.         this.drawNewParam(x + 222, y, paramId, paramName, percentage, evaluate);
  1217.     }
  1218. };
  1219.  
  1220. Window_EquipStatus.prototype.drawCurrentParam = function(x, y, paramId, paramName, percentage, evaluate) {
  1221.     this.resetTextColor();
  1222.     var actor = this._actor;
  1223.     var text = (evaluate !== null)? eval(evaluate) : this._actor[paramName];
  1224.     if (percentage) text = (text * 100).toFixed((text < 0.10)? 2 : (text < 0.50)? 1 : 0) + "%";
  1225.     else text = Math.trunc(text);
  1226.     this.drawText(text, x, y, 48, 'right');
  1227. };
  1228.  
  1229. Window_EquipStatus.prototype.drawNewParam = function(x, y, paramId, paramName, percentage, evaluate) {
  1230.     var actor = this._tempActor;
  1231.     var newValue = (evaluate !== null)? eval(evaluate) : this._tempActor[paramName];
  1232.     actor = this._actor;
  1233.     var oldValue = (evaluate !== null)? eval(evaluate) : this._actor[paramName];
  1234.     this.changeTextColor(this.paramchangeTextColor(newValue - oldValue));
  1235.     if (percentage) newValue = (newValue * 100).toFixed((newValue < 0.10)? 2 : (newValue < 0.50)? 1 : 0) + "%";
  1236.     else newValue = Math.trunc(newValue);
  1237.     this.drawText(newValue, x, y, 48, 'right');
  1238. };
  1239.  
  1240. //=============================================================================
  1241. // End of File
  1242. //=============================================================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement