-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
メニュー画面でスキルを使用するとエラーになる不具合を修正 #1
Conversation
@@ -198,6 +198,7 @@ | |||
*/ | |||
|
|||
(() => { | |||
'use strict'; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
strictモードを使用していないようだったので、使用してはどうか、という提案になります。
@@ -211,7 +212,7 @@ | |||
PluginManager_Parser.prototype.parse = function (params) { | |||
if (this.isObject(params, "string")) { | |||
try { | |||
parseParams = JSON.parse(params) | |||
const parseParams = JSON.parse(params) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
宣言なしに変数を使おうとしているため、strictモードでは意図通りに動かないコードになっています。
try-catch で例外を握りつぶしているのでぱっと見わかりにくいですが、問答無用で convertNumber
に渡されてしまいます。
@@ -339,7 +340,7 @@ | |||
} | |||
|
|||
if (inspirationSkills.length) { | |||
inspirationSkill = inspirationSkills[Math.floor( Math.random() * inspirationSkills.length )]; | |||
const inspirationSkill = inspirationSkills[Math.floor( Math.random() * inspirationSkills.length )]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
parseParams
同様です。
@@ -339,7 +340,7 @@ | |||
} | |||
|
|||
if (inspirationSkills.length) { | |||
inspirationSkill = inspirationSkills[Math.floor( Math.random() * inspirationSkills.length )]; | |||
const inspirationSkill = inspirationSkills[Math.floor( Math.random() * inspirationSkills.length )]; | |||
subject.currentAction()._item._itemId = inspirationSkill; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
カプセル化を無視しておりバグの温床となるため、 Game_Action 側に操作を抽象化したメソッドを生やす等、何らかの対処を推奨します。
_inspirationFlag
についても同様です。
@@ -402,7 +403,7 @@ | |||
|
|||
const _Game_BattlerBase_PaySkillCost = Game_BattlerBase.prototype.paySkillCost | |||
Game_BattlerBase.prototype.paySkillCost = function(skill) { | |||
if (!this.currentAction()._inspirationFlag) { | |||
if (!this.currentAction()?._inspirationFlag) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
currentAction
が undefined
を返した場合にエラーになっていたので、修正しました。
具体的な仕様がコードから読み取れなかったのでノータッチですが、 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
不具合の確認及び修正有難うございます。
strictモードについてはJavaの感覚で組んでいたので完全にjavascriptについての認識不足でした。
カプセル化も考慮せずに組んでいました・・・。
getter/setterのようなオブジェクトを作ってカプセル化にするべきでした。
ご指摘ありがとうございました。
メニュー画面では
Game_Battler.prototype.currentAction
からGame_Action
インスタンスではなくundefined
が返るため、メニュー画面で回復スキルなどを使用した際にエラーになります。これを修正するPRになります。