/*
* @title 近接戦闘マスター
* @description アイコンサイズを小さくして近接戦闘を非運ゲー化する
* @private
*/
javascript:(function(){
/* 1. 描画コンテキストを取得 */
const cvs = document.querySelector('canvas');
if(!cvs) return;
const ctx = cvs.getContext('2d');
/* 2. 円を描く関数(arc)を一時的に縮小するハック */
/* プレイヤーの本体は arc で描かれていることが多いので、ここを狙います */
const originalArc = ctx.arc;
ctx.arc = function(x, y, radius, startAngle, endAngle, anticlockwise) {
let newRadius = radius;
/* プレイヤーアイコンと思われるサイズ(例: 10〜40px程度)なら縮小 */
/* 線の太さや背景の巨大な円には干渉しないように調整 */
if (radius > 5 && radius < 60) {
newRadius = radius * 0.5; // ★ここでサイズを半分(0.5)にしています
}
return originalArc.call(this, x, y, newRadius, startAngle, endAngle, anticlockwise);
};
/* 3. 画像(drawImage)も縮小するハック */
/* アイコンに画像を使っているプレイヤー対策 */
const originalDrawImage = ctx.drawImage;
ctx.drawImage = function(img, sx, sy, sw, sh, dx, dy, dw, dh) {
/* 引数の数によって挙動が変わるため、描画先のサイズ(dw, dh)を調整 */
if (arguments.length >= 9) {
let newDW = dw * 0.5;
let newDH = dh * 0.5;
/* 縮小した分、中心がズレないように位置を補正 */
let newDX = dx + (dw - newDW) / 2;
let newDY = dy + (dh - newDH) / 2;
return originalDrawImage.call(this, img, sx, sy, sw, sh, newDX, newDY, newDW, newDH);
}
return originalDrawImage.apply(this, arguments);
};
console.log('近接特化パッチ:アイコンを50%に縮小しました。');
alert('【視界クリア】プレイヤーアイコンを小さくしました。\n短い線が見やすくなっているはずです!');
})();