Created
June 9, 2016 09:08
-
-
Save teramotodaiki/5aacde4f10f45bfb60303d60b2ef40f1 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Module check | |
(function (mod) { | |
if (typeof define === "function" && define.amd) { | |
define(function (require, exports, module) { | |
require('enchantjs/enchant'); | |
require('enchantjs/ui.enchant'); | |
require('hackforplay/hack'); | |
mod(); | |
}); | |
} else { | |
window.addEventListener('load', mod); | |
} | |
})(function () { | |
Hack.smartAsset.append({ | |
id: 1, | |
title: 'マップ の すうじ (enchantjs/x2/dotmat.gif)', | |
image: 'img/mapTipIndex.jpg', | |
query: 'toggle', | |
media: 'img/mapTipIndex.jpg' | |
}, { | |
id: 2, | |
title: 'つぎのマップ(そうげん)', | |
image: 'enchantjs/x2/dotmat.gif', | |
trim: { x: 0, y: 0, width: 32*4, height: 32*4 }, | |
query: 'embed', | |
caption: 'そうげんのマップが ついかされる。「くだりかいだん」をつかうと、つぎのマップに いけるようになる。はな や き と、あいしょうがいい', | |
identifier: '<>', | |
counters: ['__cntMap'], | |
code: function () { | |
// map__cntMap | |
Hack.maps['map__cntMap'] = new RPGMap(32, 32, 15, 10); | |
Hack.maps['map__cntMap'].imagePath = 'enchantjs/x2/dotmat.gif'; | |
Hack.maps['map__cntMap'].type = 'grassland'; | |
} | |
}, { | |
id: 3, | |
title: 'つぎのマップ(どうくつ)', | |
image: 'enchantjs/x2/dotmat.gif', | |
trim: { x: 10*32, y: 0, width: 32*4, height: 32*4 }, | |
query: 'embed', | |
caption: 'どうくつのマップが ついかされる。「くだりかいだん」をつかうと、つぎのマップに いけるようになる。いわ や いしかべ と、あいしょうがいい', | |
identifier: '<>', | |
counters: ['__cntMap'], | |
code: function () { | |
// map__cntMap | |
Hack.maps['map__cntMap'] = new RPGMap(32, 32, 15, 10); | |
Hack.maps['map__cntMap'].imagePath = 'enchantjs/x2/dotmat.gif'; | |
Hack.maps['map__cntMap'].type = 'claySoil'; | |
} | |
}, { | |
id: 4, | |
title: 'つぎのマップ(シルバー)', | |
image: 'enchantjs/x2/dotmat.gif', | |
trim: { x: 10*32, y: 4*32, width: 32*4, height: 32*4 }, | |
query: 'embed', | |
caption: 'どうくつのマップが ついかされる。「くだりかいだん」をつかうと、つぎのマップに いけるようになる。シンプルすぎて どうつかえばいいんだろう…', | |
identifier: '<>', | |
counters: ['__cntMap'], | |
code: function () { | |
// map__cntMap | |
Hack.maps['map__cntMap'] = new RPGMap(32, 32, 15, 10); | |
Hack.maps['map__cntMap'].imagePath = 'enchantjs/x2/dotmat.gif'; | |
Hack.maps['map__cntMap'].type = 'flatGray'; | |
} | |
}, { | |
id: 5, | |
title: 'くだりかいだん', | |
image: 'enchantjs/x2/dotmat.gif', | |
trim: { frame: 422, width: 32, height: 32 }, | |
query: 'embed', | |
caption: 'つぎのマップに つながっている くだりせんようの かいだん。カイゾウすると、つぎのマップから つぎのつぎのマップに つなげることも…', | |
identifier: '()', | |
variables: ['item'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// かいだん | |
var item = new MapObject('downStair'); | |
item.locate(__cnt15, __cnt10, 'map1'); | |
item.layer = RPGMap.Layer.Under; | |
item.onplayerenter = function () { | |
Hack.changeMap('map2'); | |
}; | |
} | |
}, { | |
id: 6, | |
title: 'ワープゾーン', | |
image: 'enchantjs/x2/dotmat.gif', | |
trim: { frame: 324, width: 32, height: 32 }, | |
query: 'embed', | |
caption: 'ふむとワープできる すごいゆか。あかいろや みどりいろも そんざいするという うわさ', | |
identifier: '()', | |
variables: ['item'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// ワープ | |
var item = new MapObject('warp'); | |
item.locate(__cnt15, __cnt10, 'map1'); | |
item.layer = RPGMap.Layer.Under; | |
item.onplayerenter = function () { | |
Hack.player.locate(11, 5); | |
}; | |
} | |
}, { | |
id: 7, | |
title: 'ゴールちてん', | |
image: 'enchantjs/x2/dotmat.gif', | |
trim: { frame: 500, width: 32, height: 32 }, | |
query: 'embed', | |
caption: 'あなたのかえりを まちわびている おしろ。ここへ たどりつくと ゲームクリアになる', | |
identifier: '()', | |
variables: ['item'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// ゴール | |
var item = new MapObject('castle'); | |
item.locate(__cnt15, __cnt10, 'map1'); | |
item.onplayerenter = function () { | |
// ゲームクリア | |
Hack.gameclear(); | |
Hack.player.destroy(); | |
Hack.log('ゲームクリアです。おめでとう!'); | |
}; | |
} | |
}, { | |
id: 8, | |
title: 'おはなばたけ', | |
image: 'enchantjs/x2/dotmat.gif', | |
trim: { frame: 421, width: 32, height: 32 }, | |
query: 'embed', | |
caption: 'まえで こうげきすると ちってしまう はかないはな。うえを あるくことができる', | |
identifier: '()', | |
variables: ['item'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// はな | |
var item = new MapObject('flower'); | |
item.locate(__cnt15, __cnt10, 'map1'); | |
item.layer = RPGMap.Layer.Under; | |
item.collisionFlag = false; | |
item.onattacked = function () { | |
this.destroy(); | |
}; | |
} | |
}, { | |
id: 9, | |
title: 'キ', | |
image: 'enchantjs/x2/dotmat.gif', | |
trim: { frame: 520, width: 32, height: 32 }, | |
query: 'embed', | |
caption: 'まえで こうげきすると あっけなく おれてしまう キ。うえをあるくことは でキない', | |
identifier: '()', | |
variables: ['item'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// き | |
var item = new MapObject('tree'); | |
item.locate(__cnt15, __cnt10, 'map1'); | |
item.hp = 1; | |
} | |
}, { | |
id: 10, | |
title: 'バクダンいわ', | |
image: 'enchantjs/x2/dotmat.gif', | |
trim: { frame: 401, width: 32, height: 32 }, | |
query: 'embed', | |
caption: 'しげきを あたえると ばくはつするぞ!おすなよ ぜったいに おすなよ!', | |
identifier: '()', | |
variables: ['item'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// いわ | |
var item = new MapObject('rock'); | |
item.locate(__cnt15, __cnt10, 'map1'); | |
item.onattacked = function () { | |
// ばくえん | |
var effect = new Effect(0, -1, 40); | |
effect.locate(this.mapX, this.mapY); | |
effect.collisionFlag = false; | |
effect.scale(2, 2); | |
effect.ontriggerenter = function (event) { | |
Hack.Attack.call(this, event.mapX, event.mapY, 99); | |
}; | |
this.destroy(); | |
}; | |
} | |
}, { | |
id: 11, | |
title: 'いわかんのあるかべ', | |
image: 'enchantjs/x2/dotmat.gif', | |
trim: { frame: 340, width: 32, height: 32 }, | |
query: 'embed', | |
caption: 'むこうがわが すけてみえる ふしぎなかべ。 opacity (オパシティ)を 0 にすると きえてしまう', | |
identifier: '()', | |
variables: ['item'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// いわかべ | |
var item = new MapObject('clayWall'); | |
item.locate(__cnt15, __cnt10, 'map1'); | |
item.opacity = 0.5; | |
} | |
}, { | |
id: 12, | |
title: 'いしをもつかべ', | |
image: 'enchantjs/x2/dotmat.gif', | |
trim: { frame: 341, width: 32, height: 32 }, | |
query: 'embed', | |
caption: 'まえで こうげきすると しゃべる ふしぎなかべ。いっせつによると おおむかしの ざいにんが とじこめられている とか', | |
identifier: '()', | |
variables: ['item'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// いしかべ | |
var item = new MapObject('stoneWall'); | |
item.locate(__cnt15, __cnt10, 'map1'); | |
item.onattacked = function () { | |
Hack.log('どうだ おれさまは かたいだろう!'); | |
}; | |
} | |
}, { | |
id: 13, | |
title: 'からばこ', | |
image: 'enchantjs/x2/dotmat.gif', | |
trim: { frame: 522, width: 32, height: 32 }, | |
query: 'embed', | |
caption: 'まえで こうげきすると かぱっとひらく (た)からばこ。なかに なにか いれられると いいんだけどね', | |
identifier: '()', | |
variables: ['item'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// たからばこ | |
var item = new MapObject('box'); | |
item.locate(__cnt15, __cnt10, 'map1'); | |
item.onattacked = function () { | |
delete item.onattacked; | |
this.name = 'openedBox'; | |
// 出てくるもの → | |
}; | |
} | |
}, { | |
id: 14, | |
title: 'ふしぎなツボ', | |
image: 'enchantjs/x2/dotmat.gif', | |
trim: { frame: 400, width: 32, height: 32 }, | |
query: 'embed', | |
caption: 'ランダムなアイテムがでてくる ふしぎなツボ。なんでも だせる という ウワサ', | |
identifier: '()', | |
variables: ['item', 'effect'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// ツボ | |
var item = new MapObject('pot'); | |
item.locate(__cnt15, __cnt10, 'map1'); | |
var effect; | |
item.onattacked = function () { | |
// ランダムなアイテムをだす | |
var name = random(['diamond', 'sapphire', 'ruby']); | |
effect = new MapObject(name); | |
effect.locate(this.mapX, this.mapY); | |
effect.onplayerenter = function () { | |
this.velocity(0, -8); | |
this.force(0, 0.8); | |
this.destroy(16); | |
}; | |
this.destroy(); | |
}; | |
} | |
}, { | |
id: 15, | |
title: 'ただのひと', | |
image: 'enchantjs/x1.5/chara0.png', | |
trim: { x: 4*48, y: 8, width: 48, height: 48 }, | |
query: 'embed', | |
caption: 'しゃべる ひと。ふだんは、うけつけのしごとを しているらしい。ずっと おなじセリフしか いえないのかな?', | |
identifier: '()', | |
variables: ['item'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// 女の人 | |
var item = new Woman(); | |
item.locate(__cnt15, __cnt10, 'map1'); | |
item.oncollided = function () { | |
Hack.log('こんにちは。ここは 1F です'); | |
}; | |
} | |
}, { | |
id: 16, | |
title: 'アントレプレナー', | |
image: 'enchantjs/x1.5/chara0.png', | |
trim: { x: 1*48, y: 8, width: 48, height: 48 }, | |
query: 'embed', | |
caption: 'ひたすら はしりつづける おとこのこ。めざしているところは じぶんでも よくわかっていない', | |
identifier: '()', | |
variables: ['item'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// おとこのこ | |
var item = new Boy(); | |
item.locate(__cnt15, __cnt10, 'map1'); | |
item.onbecomeidle = function () { | |
this.walk(); | |
}; | |
item.oncollided = function () { | |
this.turn(); | |
this.walk(); | |
}; | |
} | |
}, { | |
id: 17, | |
title: 'バイオレンスライム', | |
image: 'enchantjs/monster4.gif', | |
trim: { x: 2*48-4, y: 1*48, width: 48, height: 48 }, | |
query: 'embed', | |
caption: 'ムチのように からだをふりまわす、キケンなスライム。idle(まっている)→attack(こうげきする)→idle…を えいえんにくりかえすだけの あわれなそんざい', | |
identifier: '()', | |
variables: ['enemy'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// スライム | |
var enemy = new BlueSlime(); | |
enemy.locate(__cnt15, __cnt10, 'map1'); | |
enemy.onbecomeidle = function () { | |
this.attack(); | |
}; | |
enemy.onbecomedead = function () { | |
Hack.score += 1; | |
}; | |
} | |
}, { | |
id: 18, | |
title: 'よわインセクト', | |
image: 'enchantjs/monster1.gif', | |
trim: { frame: 2, width: 48, height: 48 }, | |
query: 'embed', | |
caption: 'にげあしは おいらの とくぎなのさ。すばやく turn(ターン)して walk(あるく)のが ひけつさ', | |
identifier: '()', | |
variables: ['enemy'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// インセクト | |
var enemy = new Insect(); | |
enemy.locate(__cnt15, __cnt10, 'map1'); | |
enemy.onbecomeidle = function () { | |
this.turn(); | |
this.walk(); | |
}; | |
enemy.onbecomedead = function () { | |
Hack.score += 1; | |
}; | |
} | |
}, { | |
id: 19, | |
title: 'じごくからのツカイ', | |
image: 'enchantjs/monster3.gif', | |
trim: { frame: 2, width: 48, height: 48 }, | |
query: 'embed', | |
caption: 'ねらいをつけて おそってくる おそろしいコウモリ。 target に、むかってくる らしい', | |
identifier: '()', | |
variables: ['enemy'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// コウモリ | |
var enemy = new Bat(); | |
enemy.locate(__cnt15, __cnt10, 'map1'); | |
enemy.onbecomeidle = function () { | |
var target = Hack.player; | |
var moveX = 32 * Math.sign(target.mapX - this.mapX); | |
var moveY = 32 * Math.sign(target.mapY - this.mapY); | |
this.direction = moveX; | |
this.tl.become('walk').moveBy(moveX, moveY, 30).then(function () { | |
Hack.Attack.call(this, this.mapX, this.mapY, this.atk); | |
}).become('attack', 20).become('idle'); | |
}; | |
enemy.onbecomedead = function () { | |
Hack.score += 1; | |
}; | |
} | |
}, { | |
id: 20, | |
title: 'ふむと いてっ!><', | |
image: 'enchantjs/x2/dotmat.gif', | |
trim: { frame: 440, width: 32, height: 32 }, | |
query: 'embed', | |
caption: 'ふむとダメージをうける めいわくなゆか。でも たった1ダメージだね。カイゾウすると なんダメージにも できるらしい', | |
identifier: '()', | |
variables: ['item'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// トゲのワナ | |
var item = new MapObject('trap'); | |
item.locate(__cnt15, __cnt10, 'map1'); | |
item.layer = RPGMap.Layer.Under; | |
item.onplayerenter = function () { | |
this.name = 'usedTrap'; | |
Hack.player.hp -= 1; | |
Hack.player.damageTime = 30; | |
}; | |
item.onplayerexit = function () { | |
this.name = 'trap'; | |
}; | |
} | |
}, { | |
id: 21, | |
title: 'ハート', | |
image: 'enchantjs/x2/dotmat.gif', | |
trim: { frame: 563, width: 32, height: 32 }, | |
query: 'embed', | |
caption: 'ライフを かいふくする うれしいアイテム! += にすると プラスされる。ところで -= にすると どうなるのだろうか', | |
identifier: '()', | |
variables: ['item'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// ハート | |
var item = new MapObject('heart'); | |
item.locate(__cnt15, __cnt10, 'map1'); | |
item.onplayerenter = function () { | |
Hack.player.hp += 1; | |
this.destroy(); | |
}; | |
} | |
}, { | |
id: 22, | |
title: 'タタリ', | |
image: 'enchantjs/x2/dotmat.gif', | |
trim: { frame: 564, width: 32, height: 32 }, | |
query: 'embed', | |
caption: 'ぜったいに ふんづけたり こうげきしたり してはいけない。ぜったいにだ', | |
identifier: '()', | |
variables: ['item'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// ドクロ | |
var item = new MapObject('skull'); | |
item.locate(__cnt15, __cnt10, 'map1'); | |
item.onplayerenter = function () { | |
Hack.player.hp = 0; | |
}; | |
item.onattacked = function (event) { | |
event.attacker.hp = 0; | |
}; | |
} | |
}, { | |
id: 22, | |
title: 'チャリンチャリン', | |
image: 'enchantjs/x2/dotmat.gif', | |
trim: { frame: 565, width: 32, height: 32 }, | |
query: 'embed', | |
caption: 'がめんを はねまわる コイン。', | |
identifier: '()', | |
variables: ['effect'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// コイン | |
var effect = new MapObject('coin'); | |
effect.locate(__cnt15, __cnt10, 'map1'); | |
effect.velocity(1, 0); | |
effect.force(0, 0.5); | |
effect.ontriggerenter = function () { | |
this.destroy(); | |
Hack.score += 1; | |
}; | |
} | |
}, { | |
id: 23, | |
title: 'れいの アレ', | |
image: 'enchantjs/x2/dotmat.gif', | |
trim: { frame: 566, width: 32, height: 32 }, | |
query: 'embed', | |
caption: 'ひろってから 3びょうちょい むてきになれる アイテム。3びょうちょい=100フレーム? これも、カイゾウできるらしい', | |
identifier: '()', | |
variables: ['item'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// スター(むてき) | |
var item = new MapObject('star'); | |
item.locate(__cnt15, __cnt10, 'map1'); | |
item.onplayerenter = function () { | |
var onattacked = Hack.player.onattacked; | |
Hack.player.setTimeout(function () { | |
Hack.player.onattacked = onattacked; | |
Hack.player.opacity = 1; | |
}, 100); | |
Hack.player.onattacked = null; | |
Hack.player.opacity = 0.5; | |
this.destroy(); | |
}; | |
} | |
}, { | |
id: 24, | |
title: 'ふしぎなかぎ', | |
image: 'enchantjs/x2/dotmat.gif', | |
trim: { frame: 567, width: 32, height: 32 }, | |
query: 'embed', | |
caption: 'いつも ちがうところに でてくる ふしぎなかぎ。なにかと くみあわせて つかえそうだ', | |
identifier: '()', | |
variables: ['item'], | |
code: function () { | |
// かぎ | |
var item = new MapObject('key'); | |
item.locate(random(0, 15), random(0, 10), 'map1'); | |
item.onplayerenter = function () { | |
Hack.log('カチャリ という おと が きこえた'); | |
this.destroy(); | |
}; | |
} | |
}, { | |
id: 25, | |
title: 'のぼりかいだん', | |
image: 'enchantjs/x2/dotmat.gif', | |
trim: { frame: 402, width: 32, height: 32 }, | |
query: 'embed', | |
caption: 'まえのマップに つながっている のぼりせんようの かいだん。なかみは くだりかいだんと たいしてかわらない', | |
identifier: '()', | |
variables: ['item'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// かいだん | |
var item = new MapObject('upStair'); | |
item.locate(__cnt15, __cnt10, 'map2'); | |
item.layer = RPGMap.Layer.Under; | |
item.onplayerenter = function () { | |
Hack.changeMap('map1'); | |
}; | |
} | |
}, { | |
id: 26, | |
title: 'じげんばくだん', | |
image: 'enchantjs/x2/dotmat.gif', | |
trim: { frame: 580, width: 32, height: 32 }, | |
query: 'embed', | |
caption: 'じげんしき ばくだん と たちのぼる ばくはつの エフェクト。じかん を ちょうせい できる', | |
identifier: '()', | |
variables: ['item', 'effect'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// ボム | |
var item = new MapObject('bomb'); | |
item.locate(__cnt15, __cnt10, 'map1'); | |
item.time = 3.0; | |
item.setTimeout(function () { | |
// ばくえん | |
var effect = new Effect(0, -1, 40); | |
effect.locate(this.mapX, this.mapY); | |
effect.collisionFlag = false; | |
effect.scale(2, 2); | |
effect.ontriggerenter = function (event) { | |
Hack.Attack.call(this, event.mapX, event.mapY, 99); | |
}; | |
this.destroy(); | |
}, item.time * game.fps); | |
} | |
}, { | |
id: 27, | |
title: 'ごくえんのドラゴン', | |
image: 'enchantjs/bigmonster1.gif', | |
trim: { frame: 10, width: 80, height: 80 }, | |
query: 'embed', | |
caption: 'やつが この めいきゅうの あるじ 獄炎(ごくえん) の ドラゴン だ!', | |
identifier: '()', | |
variables: ['enemy', 'effect'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// ドラゴン | |
var enemy = new Dragon(); | |
enemy.hp = 10; | |
enemy.locate(__cnt15, __cnt10, 'map1'); | |
enemy.scale(2, 2); | |
enemy.setFrame('Idle', [10]); | |
enemy.onbecomedead = function () { | |
Hack.gameclear(); | |
}; | |
enemy.setInterval(function () { | |
// ばくえん | |
var effect = new Effect(-5, 5, 40, true); | |
effect.collisionFlag = false; | |
effect.locate(this.mapX - 2, this.mapY - 1); | |
effect.force(0.1, -0.1); | |
effect.ontriggerenter = function (event) { | |
Hack.Attack.call(this, event.mapX, event.mapY, 1); | |
}; | |
}, 1); | |
} | |
}, { | |
id: 28, | |
title: 'SoundCloud API', | |
image: 'service/soundcloud-icon.png', | |
trim: { x: 0, y: 0, width: 32, height: 32 }, | |
query: 'replace', | |
caption: 'サウンドクラウドのAPI(エーピーアイ)をつかって、ゲームのなかで サウンドをならそう!', | |
identifier: '()', | |
pattern: /Hack\.openSoundCloud\(.*\)\;?/g.source, | |
code: function () { | |
Hack.openSoundCloud('https://soundcloud.com/nelward/splatoon-main-theme-snes-ey-remix'); | |
} | |
}, { | |
id: 29, | |
title: 'SoundCloud 埋め込みプレーヤー', | |
image: 'service/soundcloud-icon-black.png', | |
trim: { x: 10, y: 0, width: 43, height: 43 }, | |
query: 'replace', | |
caption: 'サウンドクラウドの埋め込みプレーヤーをつかって、サウンドをならそう! APIでは再生できない曲も こっちでは再生できることがあるぞ。', | |
identifier: '()', | |
pattern: /Hack\.openExternal\(\'https?:\/\/soundcloud\.com.*\)\;?/g.source, | |
code: function () { | |
Hack.openExternal('https://soundcloud.com/john-sevenight/pokemon-dubstep-remix'); | |
} | |
}, { | |
id: 30, | |
title: 'うれしいダイヤモンド', | |
image: 'enchantjs/x2/dotmat.gif', | |
trim: { frame: 560, width: 32, height: 32 }, | |
query: 'embed', | |
caption: 'ゲットすると、スコアになる', | |
identifier: '()', | |
variables: ['item'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// ダイヤモンド | |
var item = new MapObject('diamond'); | |
item.locate(__cnt15, __cnt10, 'map1'); | |
item.onplayerenter = function () { | |
this.destroy(); | |
Hack.score += 1; | |
}; | |
} | |
}, { | |
id: 31, | |
title: 'スコアでゲームクリア', | |
image: 'hackforplay/clear.png', | |
trim: { x: 80, y: 0, width: 320, height: 320 }, | |
query: 'embed', | |
caption: 'スコア10以上のとき、ゲームクリアにせっていする', | |
identifier: '[]', | |
code: function () { | |
// スコアでゲームクリア | |
if (Hack.score >= 10) { | |
Hack.gameclear(); | |
} | |
} | |
}, { | |
id: 32, | |
title: 'スコアで光るまほうじん', | |
image: 'enchantjs/x2/dotmat.gif', | |
trim: { frame: 329, width: 32, height: 32 }, | |
query: 'embed', | |
caption: 'スコア7以上のとき うえにのると、まほうじんが光る(だけ)', | |
identifier: '()', | |
variables: ['item'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// まほうじん | |
var item = new MapObject('magic'); | |
item.locate(__cnt15, __cnt10, 'map1'); | |
item.layer = RPGMap.Layer.Under; | |
item.onplayerenter = function () { | |
if (Hack.score >= 7) { | |
this.frame = MapObject.dictionary.usedMagic; | |
} | |
}; | |
} | |
}, { | |
id: 33, | |
title: 'よのなか、マネー(おカネ)だ!', | |
image: 'enchantjs/font0.png', | |
trim: { x: 206, y: 30, width: 16, height: 16 }, | |
query: 'embed', | |
caption: 'スコアをマネーにして、さいしょから 100 だけ もっているようにする', | |
identifier: '<>', | |
variables: ['item'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// マネー(おカネ)にする | |
Hack.scoreLabel.label = 'MONEY:'; | |
Hack.score = 100; | |
} | |
}, { | |
id: 34, | |
title: 'かたいからばこ', | |
image: 'enchantjs/x2/dotmat.gif', | |
trim: { frame: 420, width: 32, height: 32 }, | |
query: 'embed', | |
caption: 'スコアが足りないときは びくともしない ただの からばこ', | |
identifier: '()', | |
variables: ['item'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// かたいたからばこ | |
var item = new MapObject('box'); | |
item.locate(__cnt15, __cnt10, 'map1'); | |
item.onattacked = function () { | |
if (Hack.score < 5) { | |
Hack.log('たからばこは びくともしない '); | |
} else { | |
this.frame = MapObject.dictionary.openedBox; | |
Hack.log('ガチャ!たからばこが あいた!'); | |
// 出てくるもの → | |
} | |
}; | |
} | |
}, { | |
id: 34, | |
title: 'おはなやさん', | |
image: 'enchantjs/x1.5/chara0.png', | |
trim: { frame: 7, width: 48, height: 48 }, | |
query: 'embed', | |
caption: 'おはなを うっている 女の子', | |
identifier: '()', | |
variables: ['chara', 'item'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// おはなやさん | |
var chara = new Girl(); | |
chara.locate(__cnt15, __cnt10, 'map1'); | |
chara.oncollided = function () { | |
if (Hack.score < 100) { | |
Hack.log('おはなは100エンです。おカネが たりないよ。'); | |
} else { | |
Hack.log('おはなは100エンです。はい、どうぞ'); | |
Hack.score -= 100; | |
// おはな | |
var item = new MapObject('flower'); | |
item.locate(this.mapX, this.mapY + 1, 'map1'); | |
item.layer = RPGMap.Layer.Under; | |
item.onplayerenter = function () { | |
this.destroy(); | |
}; | |
} | |
}; | |
} | |
}, { | |
id: 35, | |
title: 'YouTube 埋め込みプレーヤー', | |
image: 'service/youtube-icon.png', | |
trim: { x: 0, y: 0, width: 128, height: 128 }, | |
query: 'replace', | |
caption: 'YouTubeの埋め込みプレーヤーをつかって、ムービーを再生しよう!', | |
identifier: '()', | |
pattern: /Hack\.openExternal\(\'https?:\/\/(www\.)?youtube\.com.*\)\;?/g.source, | |
code: function () { | |
Hack.openExternal('https://www.youtube.com/watch?v=1mJ4X-hoCi8'); | |
} | |
}, { | |
id: 36, | |
title: '魔道書', | |
image: 'hackforplay/enchantbook.png', | |
trim: { x: 0, y: 0, width: 64, height: 64 }, | |
query: 'embed', | |
caption: '魔道書を使って、プレイヤーにもプログラミングさせよう!', | |
identifier: '()', | |
code: function () { | |
// 魔道書 | |
Hack.hint = function () { | |
// 君はこのステージをクリアできるか? | |
}; | |
} | |
}, { | |
id: 37, | |
title: 'アイテムになった魔道書', | |
image: 'hackforplay/madosyo_small.png', | |
trim: { x: 0, y: 0, width: 32, height: 32 }, | |
query: 'embed', | |
caption: '拾って使える魔道書。', | |
identifier: '()', | |
variables: ['item'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// アイテムになった魔道書 | |
var item = new RPGObject(32, 32, 0, 0); | |
item.image = game.assets['hackforplay/madosyo_small.png']; | |
item.locate(__cnt15, __cnt10); | |
item.onplayerenter = function () { | |
this.destroy(); | |
Hack.hint = function () { | |
// ...まだ なにも かかれていないようだ | |
}; | |
} | |
} | |
}, { | |
id: 38, | |
title: 'ルーレット', | |
image: 'enchantjs/x2/dotmat.gif', | |
trim: { frame: 562, width: 32, height: 32 }, | |
query: 'embed', | |
caption: 'こうげきすると、ルーレットがはじまる', | |
identifier: '()', | |
variables: ['item'], | |
counters: ['__cnt15', '__cnt10'], | |
code: function () { | |
// ルーレット | |
var item = new MapObject('ruby'); | |
item.locate(__cnt15, __cnt10, 'map1'); | |
item.flag = true; | |
item.onattacked = function () { | |
if (this.flag) { | |
// ルーレット開始! | |
this.stop = this.setInterval(function () { | |
this.name = random(['ruby','skull','poo']); | |
}, 4); | |
this.flag = false; | |
} else { | |
// ルーレット停止! | |
this.stop(); | |
if (this.name === 'ruby') { | |
Hack.score += 1; // rubyなら、SCORE + 1 | |
} | |
if (this.name === 'skull') { | |
Hack.score -= 1; // skullなら、SCORE - 1 | |
} | |
this.flag = true; | |
} | |
}; | |
} | |
}).setCounter({ | |
name: '__cnt15', | |
table: [7].concat(shuffle([0,1,2,3,4,5,6,8,9,10,11,12,13,14])) | |
}, { | |
name: '__cnt10', | |
table: [5].concat(shuffle([0,1,2,3,4,6,7,8,9].concat([(Math.random()*10) >> 0]))) // length=11 | |
}, { | |
name: '__cntMap', | |
table: fill(2, 100) | |
}); | |
function shuffle(array) { | |
var m = array.length, t, i; | |
while (m) { | |
i = Math.floor(Math.random() * m--); | |
t = array[m]; | |
array[m] = array[i]; | |
array[i] = t; | |
} | |
return array; | |
} | |
function fill (start, end) { | |
var array = []; | |
for (var i = start; i < end; i++) { | |
array.push(i); | |
} | |
return array; | |
} | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment