forked from ckcz123/mota-js
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathAPI列表.txt
2144 lines (1315 loc) · 83.6 KB
/
API列表.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
附录:API列表(V2.6版)
这里将列出所有被转发到core的API,没有被转发的函数此处不会列出,请自行在代码中查看。
本文档较大,如有什么需求请自行Ctrl+F进行搜索。
如有任何疑问,请联系小艾寻求帮助。
------------------------------------ [core.js] ------------------------------------
core.js中只有很少的几个函数,主要是游戏开始前的初始化等。
但是,core中定义了很多游戏运行时的状态,这些状态很多都会被使用到。
core.__SIZE__, core.__PIXELS__
游戏窗口大小;对于13x13的游戏而言这两个值分别是13和416,15x15来说分别是15和480。
core.material
游戏中的所有资源列表,具体分为如下内容:
core.material.animates (动画)
core.material.bgms (背景音乐)
core.material.enemys (怪物信息,来自于 project/enemys.js)
core.material.icons (图标信息,来自于 project/icons.js)
core.material.images (图片素材,存放了各项素材图片如items.png等)
core.material.images.autotile (所有的自动元件图片)
core.material.images.tilesets (所有的额外素材图片)
core.material.images.images (用户引入的其他图片)
core.material.items (道具信息)
core.material.sounds (音效)
core.animateFrame
主要是记录和requestAnimationFrame相关的一些数据,常用的如下:
core.animateFrame.totalTime (游戏总的运行时时间)
core.animateFrame.weather (当前的天气信息)
core.animateFrame.asyncId (当前的异步处理事件的内容)
core.musicStatus
主要是记录和音效相关的内容,常用的如下:
core.musicStatus.bgmStatus (音乐开启状态)
core.musicStatus.soundStatus (音效开启状态)
core.musicStatus.playingBgm (当前正在播放的BGM)
core.musicStatus.lastBgm (最近一次尝试播放的BGM)
core.musicStatus.volume (当前的音量)
core.musicStatus.cachedBgms (背景音乐的缓存内容)
core.musicStatus.cacheBgmCount (背景音乐的缓存数量,默认值是4)
core.platform
游戏平台相关信息,常见的几个如下:
core.platform.isPC (是否是电脑端)
core.platform.isAndroid (是否是安卓端)
core.platform.isIOS (是否是iOS端)
core.platform.useLocalForage (是否开启了新版存档)
core.platform.extendKeyBoard (是否开启了拓展键盘)
core.domStyle
游戏的界面信息,包含如下几个:
core.domStyle.scale (当前的放缩比)
core.domStyle.isVertical (当前是否是竖屏状态)
core.domStyle.showStatusBar (当前是否显示状态栏)
core.domStyle.toolbarBtn (当前是否显示工具栏)
core.bigmap
当前的地图的尺寸信息,主要包含如下几个
core.bigmap.width (当前地图的宽度)
core.bigmap.height (当前地图的高度)
core.bigmap.offsetX (当前地图针对窗口左上角的偏移像素x)
core.bigmap.offsetX (当前地图针对窗口左上角的偏移像素y)
core.bigmap.tempCanvas (一个临时画布,可以用来临时绘制很多东西)
core.saves
和存档相关的信息,包含如下几个:
core.saves.saveIndex (上次保存或读取的存档编号)
core.saves.ids (当前存在存档的编号列表)
core.saves.autosave (自动存档的信息)
core.saves.favorite (收藏的存档)
core.saves.favoriteNames (自定义存档的名称)
core.status
游戏的状态相关,是整个游戏中最重要的东西,其核心是如下几条:
请注意,每次重新开始、存档或读档时,core.status都会重新初始化。
core.status.played (当前是否在游戏中)
core.status.gameOver (当前是否已经游戏结束,即win或lose)
core.status.hero (勇士信息;此项和全塔属性中的hero大体是对应的)
core.status.hero.name 勇士名
core.status.hero.lv 当前等级
core.status.hero.hpmax 当前生命上限
core.status.hero.hp 当前生命值
core.status.hero.manamax 当前魔力上限
core.status.hero.mana 当前魔力值
core.status.hero.atk 当前攻击力
core.status.hero.def 当前防御力
core.status.hero.mdef 当前魔防值
core.status.hero.money 当前金币值
core.status.hero.experience 当前经验值
core.status.hero.loc 当前的位置信息
core.status.hero.equipment 当前装上的装备
core.status.hero.items 当前拥有的道具信息
core.status.hero.flags 当前的各项flag信息
core.status.hero.step 当前的步数值
core.status.hero.statistics 当前的统计信息
core.status.floorId (当前所在的楼层)
core.status.maps (所有的地图信息)
core.status.thisMap (当前的地图信息,等价于core.status.maps[core.status.floorId])
core.status.bgmaps (所有背景层的信息)
core.status.fgmaps (所有的前景层的信息)
core.status.checkBlock (地图上的阻激夹域信息,也作为光环的缓存)
core.status.lockControl (当前是否是控制锁定状态)
core.status.automaticRoute (当前的自动寻路信息)
core.status.route (当前记录的录像)
core.status.replay (录像回放时要用到的信息)
core.status.shops (所有全局商店信息)
core.status.textAttribute (当前的文字属性,如颜色、背景等信息,和setText事件对应)
core.status.globalAttribute (当前的全局属性,如边框色、装备栏等)
core.status.curtainColor (当前色调层的颜色)
core.status.globalAnimateObjs (当前的全局帧动画效果)
core.status.floorAnimateObjs (当前的楼层贴图帧动画效果)
core.status.boxAnimateObjs (当前的盒子帧动画效果,例如怪物手册中的怪物)
core.status.autotileAnimateObjs (当前楼层的自动元件动画效果)
core.status.globalAnimateStatus (当前的帧动画的状态)
core.status.animateObjs (当前的播放动画信息)
core.floorIds
一个数组,表示所有的楼层ID,和全塔属性中的floorIds一致。
core.floors
从楼层文件中读取全部的地图数据。
和core.status.maps不同的是,后者在每次重新开始和读档时都会重置,也允许被修改(会存入存档)。
而core.floors全程唯一,不允许被修改。
core.statusBar
状态栏信息,例如状态栏图片,图标,以及各个内容的DOM定义等。
core.statusBar.images (所有的系统图标,和icons.png对应)
core.statusBar.icons (状态栏中绘制的图标内容)
core.values
所有的全局数值信息,和全塔属性中的values一致。
此项允许被直接修改,会存入存档。
core.flags
所有的全塔开关,和全塔属性中的flags一致。
此项不允许被直接修改,如有需要请使用“设置系统开关”事件,或者调用core.setGlobalFlag这个API。
core.plugin
定义的插件函数。
core.doFunc(func, _this)
执行一个函数,func为函数体或者插件中的函数名,_this为使用的this。
如果func为一个字符串,则视为插件中的函数名,同时_this将被设置成core.plugin。
此函数剩余参数将作为参数被传入func。
------------------------------------ [actions.js] ------------------------------------
actions.js主要是处理一些和用户交互相关的内容。
core.registerAction(action, name, func, priority)
注册一个用户交互行为。
action:要注册的交互类型,如 ondown, onclick, keyDown 等等。
name:你的自定义名称,可被注销使用;同名重复注册将后者覆盖前者。
func:执行函数;可以是一个具体的函数体,或者是一个插件中的函数名。
priority:优先级;优先级高的被注册项将会被执行。此项可不填,默认为0。
返回:如果func返回true,则不会再继续执行其他的交互函数;否则会继续执行其他的交互函数。
core.unregisterAction(action, name)
注销一个用户交互行为。
core.doRegisteredAction(action)
执行一个用户交互行为。
此函数将在该交互行为所注册的所有函数中,按照优先级从高到底依次执行。
此函数剩余的参数将会作为参数传入该执行函数中。
当某个执行函数返回true时将终止这一过程。
core.onkeyDown(e)
当按下某个键时的操作,e为KeyboardEvent。
请勿直接覆盖或调用此函数,如有需要请注册一个"onkeyDown"的交互函数。
core.onkeyUp(e)
当放开某个键时的操作,e为KeyboardEvent。
请勿直接覆盖或调用此函数,如有需要请注册一个"onkeyUp"的交互函数。
core.pressKey(keyCode)
当按住某个键不动时的操作,目前只对方向键有效。
如果需要添加对于其他键的长按,请复写_sys_onkeyDown和_sys_onkeyUp。
请勿直接覆盖或调用此函数,如有需要请注册一个"pressKey"的交互函数。
core.keyDown(keyCode)
当按下某个键时的操作,参数为该键的keyCode值。
请勿直接覆盖或调用此函数,如有需要请注册一个"keyDown"的交互函数。
core.keyUp(keyCode, altKey, fromReplay)
当按下某个键时的操作,参数为该键的keyCode值。
altKey标志了Alt键是否同时被按下,fromReplay表示是否是从录像回放中调用的。
请勿直接覆盖或调用此函数,如有需要请注册一个"keyUp"的交互函数。
core.ondown(loc)
当点击屏幕时的操作。loc为点击的信息。
请勿直接覆盖或调用此函数,如有需要请注册一个"ondown"的交互函数。
注册的ondown交互函数需要接受x, y, px, py四个参数,代表点击的位置和像素坐标。
core.onmove(loc)
当在屏幕上滑动时的操作。loc为当前的坐标信息。
请勿直接覆盖或调用此函数,如有需要请注册一个"onmove"的交互函数。
注册的onmove交互函数需要接受x, y, px, py四个参数,代表当前的的位置和像素坐标。
core.onup()
当从屏幕上离开时的操作。请注意此函数是没有参数的。
请勿直接覆盖或调用此函数,如有需要请注册一个"onup"的交互函数。
core.onclick(x, y)
当点击屏幕上的某点位置时执行的操作,请注意这里的x和y是位置坐标。
一般而言,一个完整的ondown到onup将触发一个onclick事件。
请勿直接覆盖或调用此函数,如有需要请注册一个"onclick"的交互函数。
core.onmousewheel(direct)
当滚动鼠标滑轮时执行的操作。direct为滑轮方向,上为1,下为-1。
请勿直接覆盖或调用此函数,如有需要请注册一个"onmousewheel"的交互函数。
core.keyDownCtrl()
当长按Ctrl键不动时执行的操作。
请勿直接覆盖或调用此函数,如有需要请注册一个"keyDownCtrl"的交互函数。
core.longClick()
当长按住屏幕时执行的操作。
请勿直接覆盖或调用此函数,如有需要请注册一个"keyDownCtrl"的交互函数。
注册的交互函数如果某一项返回true,则之后仍然会继续触发该长按,
如果全部返回false则将停止本次长按行为,直到手指离开屏幕并重新进行长按为止。
------------------------------------ [control.js] ------------------------------------
control.js将负责整个游戏的核心控制系统,分为如下几个部分:
- requestAnimationFrame相关
- 标题界面,开始和重新开始游戏
- 自动寻路和人物行走相关
- 画布、位置、阻激夹域、显伤等相关
- 录像的回放相关
- 存读档,自动存档,同步存档等相关
- 人物属性和状态、位置、变量等相关
- 天气、色调、音乐和音效的播放
- 状态栏和工具栏相关
- 界面resize相关
// ------ requestAnimationFrame 相关 ------ //
core.registerAnimationFrame(name, needPlaying, func)
注册一个animationFrame。它将在每次浏览器的帧刷新时(约16.6ms)被执行。
name:你的自定义名称,可被注销使用;同名重复注册将后者覆盖前者。
needPlaying:如果此项为true,则仅在游戏开始后才会被执行(标题界面不执行)
func:执行函数;可以是一个具体的函数体,或者是一个插件中的函数名。
func可以接受一个timestamp作为参数,表示从整个页面加载完毕到当前时刻所经过的毫秒数。
如果func执行报错,将在控制台打出一条信息,并自动进行注销。
core.unregisterAnimationFrame(name)
注销一个animationFrame,参数是你的上面的自定义名称。
// ------ 开始界面相关 ------ //
core.showStartAnimate(noAnimate, callback)
重置所有内容并显示游戏标题界面。
noAnimate如果为true则不会有淡入动画,callback为执行完毕的回调。
core.hideStartAnimate(callback)
淡出隐藏游戏标题界面,callback为执行完毕的回调。
core.isPlaying()
当前是否正在游戏中。
core.clearStatus()
清除所有的游戏状态和数据,包括状态栏的显示。
// ------ 自动寻路、人物行走 ------ //
core.stopAutomaticRoute()
停止自动寻路的操作
core.saveAndStopAutomaticRoute()
保存剩下的寻路路线并停止自动寻路操作。主要用于打怪开门后继续寻路使用。
core.continueAutomaticRoute()
继续剩下的自动寻路操作。主要用于打怪开门后继续寻路使用。
core.clearContinueAutomaticRoute()
清空剩下的自动寻路操作。
core.setAutomaticRoute(destX, destY, stepPostfix)
尝试开始进行一个自动寻路。stepPostfix是鼠标拖动的路径。
此函数将检测是否在寻路中(在则停止或双击瞬移),检测是否点击自己(转身或轻按),
检测是否能单击瞬移,最后找寻自动寻路路线并开始寻路。
core.setAutoHeroMove(steps)
设置勇士的自动行走路线,并立刻开始行走。
core.setHeroMoveInterval(callback)
设置勇士行走动画。callback是每一步行走完毕后的回调。
core.moveOneStep(x, y)
每走完一步后执行的操作,被转发到了脚本编辑中。
core.moveAction(callback)
尝试执行单步行走。callback是执行完毕的回调。
如果勇士面对的方向是noPass的,将直接触发事件并执行回调。
core.moveHero(direction, callback)
令勇士朝一个方向行走。如果设置了callback,则只会行走一步,并执行回调。
否则,将一直朝该方向行走,直到core.status.heroStop为true为止。
core.isMoving()
当前是否正在处于行走状态
core.waitHeroToStop(callback)
停止勇士的行走,等待行动结束后,再异步执行回调。
core.turnHero(direction)
转向。如果设置了direction则会转到该方向,否则会右转。该函数会自动计入录像。
core.moveDirectly(destX, destY)
尝试瞬间移动到某点,被转发到了脚本编辑中。
此函数返回非负值代表成功进行瞬移,返回值是省略的步数;如果返回-1则代表没有成功瞬移。
core.tryMoveDirectly(destX, destY)
尝试单击瞬移到某点。
如果该点可被直接瞬间移动到,则直接瞬移到该点;否则尝试瞬移到相邻的上下左右点并行走一步。
core.drawHero(status, offset)
绘制勇士。
status可选,为'stop','leftFoot'和'rightFoot'之一,不填或null默认是'stop'。
offset可选,表示具体当前格子的偏移量。不填默认为0。
此函数将重新计算地图的偏移量,调整窗口位置,绘制勇士和跟随者信息。
// ------ 画布、位置、阻激夹域、显伤 ------ //
core.setGameCanvasTranslate(canvas, x, y)
设置某个画布的偏移量
core.addGameCanvasTranslate(x, y)
加减所有系统画布(ui和data除外)的偏移量。主要是被“画面震动”所使用。
core.updateViewport()
根据大地图的偏移量来更新窗口的视野范围。
core.nextX(n) / core.nextY(n)
获得勇士面对的第n个位置的横纵坐标。n可不填,默认为1。
core.nearHero(x, y, n)
判定某个点是否和勇士的距离不大于n。n可不填,默认为1。
core.gatherFollowers()
聚集所有的跟随者到勇士的位置。
core.updateFollowers()
更新跟随者们的坐标。
core.updateCheckBlock(floorId)
更新阻激夹域的信息,被转发到了脚本编辑中。
core.checkBlock()
检查勇士坐标点的阻激夹域信息。
core.updateDamage(floorId, ctx)
更新全地图的显伤。floorId可选,默认为当前楼层。
ctx可选,为画布;如果不为空,则将会绘制到该画布上而不是damage层上。
// ------ 录像相关 ------ //
core.chooseReplayFile()
弹出选择文件窗口,让用户选择录像文件。
core.startReplay(list)
开始播放一段录像。list为录像的操作数组。
core.triggerReplay()
播放或暂停录像,实际上是pauseReplay或resumeReplay之一。
core.pauseReplay() / core.resumeReplay()
暂停和继续录像播放。
core.speedUpReplay() / core.speedDownReplay()
加速和减速录像播放。
core.setReplaySpeed(speed)
直接设置录像回放速度。
core.stopReplay(force)
停止录像回放。如果force为true则强制停止。
core.rewindReplay()
回退一个录像节点。
core.saveReplay() / core.bookReplay() / core.viewMapReplay()
回放录像时的存档、查看怪物手册、浏览地图操作。
core.isReplaying()
当前是否正在录像播放中。
core.registerReplayAction(name, func)
注册一个自定义的录像行为。
name:自定义名称,可用户注销使用。
func:具体执行录像的函数,是一个函数体或者插件中的函数名。
func需要接受action参数,代表录像回放时的当前操作行为。
如果func返回true,则代表成功处理了此次操作,返回false代表没有进行处理。
自己添加的录像项只能由数字、大小写、下划线线、冒号等符号组成,否则无法正常压缩和解压缩。
对于自定义内容(比如中文文本或数组)请使用JSON.stringify再core.encodeBase64处理。
请注意回放录像时的二次记录问题(即回放时录像会重新记录路线)。
core.unregisterReplayAction(name)
注销一个录像行为。此函数一般不应当被使用。
// ------ 存读档相关 ------ //
core.autosave(remoreLast)
进行一个自动存档,实际上是加入到缓存之中。
removeLast如果为true则会从路线中删除最后一项再存(打怪开门前的状态)。
在事件处理中不允许调用本函数,如有需要请呼出存档页面。
core.checkAutosave()
将缓存的自动存档写入存储中。平均每五秒钟,或在窗口失去焦点时被执行。
core.doSL(id, type)
实际执行一个存读档事件。id为存档编号,自动存档为'autoSave'。
type只能为'save', 'load', 'replayLoad'之一,代表存档、读档和从存档回放录像。
core.syncSave(type) / core.syncLoad()
向服务器同步存档,从服务器加载存档。type如果为'all'则会向服务器同步所有存档。
core.saveData()
获得要存档的内容,实际转发到了脚本编辑中。
core.loadData(data, callback)
实际执行一次读档行为,data为读取到的数据,callback为执行完毕的回调。
实际转发到了脚本编辑中。
core.getSave(index, callback)
获得某个存档位的存档。index为存档编号,0代表自动存档。
core.getSaves(ids, callback)
获得若干个存档位的存档。ids为一个存档编号数组,0代表自动存档。
core.getAllSaves(callback)
获得全部的存档内容。目前仅被同步全部存档和下载全部存档所调用。
core.getSaveIndexes(callback)
刷新全部的存档信息,将哪些档位有存档的记录到core.saves.ids中。
core.hasSave(index)
判定某个存档位是否存在存档。index为存档编号,0代表自动存档。
core.removeSave(index)
删除某个存档。index为存档编号,0代表自动存档。
// ------ 属性、状态、位置、变量等 ------ //
core.setStatus(name, value)
设置勇士当前的某个属性。
core.addStatus(name, value)
加减勇士当前的某个属性。等价于 core.setStatus(name, core.getStatus(name) + value)
core.getStatus(name)
获得勇士的某个原始属性值。
core.getStatusOrDefault(status, name)
尝试从status中获得某个原始属性值;如果status为null或不存在对应属性值则从勇士属性中获取。
此项在伤害计算函数中使用较多,例如传递新的攻击和防御来计算临界和1防减伤。
core.getRealStatus(name)
获得勇士的某个计算属性值。该属性值是在加成buff之后得到的。
该函数等价于 core.getStatus(name) * core.getBuff(name)
core.getRealStatusOrDefault(status, name)
尝试从status中获得某个原始属性值再进行增幅,如果不存在则获取勇士本身的计算属性值。
core.setBuff(name, value)
设置勇士的某个属性的增幅值。value为1代表无增幅。
core.addBuff(name, value)
增减勇士的某个属性的增幅值。等价于 core.setBuff(name, core.getBuff(name) + value)
core.getBuff(name)
获得勇士的某个属性的增幅值。默认值是1。
core.setHeroLoc(name, value, noGather)
设置勇士位置属性。name只能为'x', 'y'和'direction'之一。
如果noGather为true,则不会聚集所有的跟随者。
core.getHeroLoc(name)
获得勇士的某个位置属性。如果name为null则直接返回core.status.hero.loc。
core.getLvName(lv)
获得某个等级对应的名称,其在全塔属性的levelUp中定义。如果不存在则返回原始数值。
core.setFlag(name, value)
设置某个自定义变量或flag。如果value为null则会调用core.removeFlag进行删除。
core.addFlag(name, value)
加减某个自定义的变量或flag。等价于 core.setFlag(name, core.getFlag(name, 0) + value)
core.getFlag(name, defaultValue)
获得某个自定义的变量或flag。如果该flag不存在(从未赋值过),则返回defaultValue值。
core.hasFlag(name)
判定是否拥有某个自定义变量或flag。等价于 !!core.getFlag(name, 0)
core.removeFlag(name)
删除一个自定义变量或flag。
core.lockControl() / core.unlockControl()
锁定和解锁控制。常常应用于事件处理。
core.debug()
开启调试模式。此模式下可以按住Ctrl进行穿墙。
// ------ 天气,色调,音乐和音效 ------ //
core.setWeather(type, level)
设置当前的天气。type只能为'rain', 'snow'或'fog',level为1-10之间代表强度信息。
core.setCurtain(color, time, callback)
更改画面色调。color为更改到的色调,是个三元或四元组;time为渐变时间,0代表立刻切换。
core.screenFlash(color, time, times, callback)
画面闪烁。color为色调,三元或四元组;time为单次闪烁时间,times为总闪烁次数。
core.playBgm(bgm, startTime)
播放一个bgm。startTime可以控制开始时间,不填默认为0。
如果bgm不存在、不被支持,或当前不允许播放背景音乐,则会跳过。
core.pauseBgm() / core.resumeBgm()
暂停和恢复当前bgm的播放。
core.triggerBgm()
更改当前bgm的播放状态。
core.playSound(sound) / core.stopSound()
播放一个音效,停止全部音效。
如果sound不存在、不被支持,或当前不允许播放音效,则会忽略。
core.checkBgm()
检查bgm的状态。
有的时候,刚打开页面时,浏览器是不允许自动播放标题界面bgm的,一定要经过一次用户操作行为。
这时候我们可以给开始按钮增加core.checkBgm(),如果之前没有成功播放则重新播放。
// ------ 状态栏和工具栏相关 ------ //
core.clearStatusBar()
清空状态栏的数据。
core.updateStatusBar()
更新状态栏,被转发到了脚本编辑中。此函数还会根据是否在回放来设置工具栏的图标。
core.showStatusBar() / core.hideStatusBar(showToolbox)
显示和隐藏状态栏。
如果showToolbox为true,则在竖屏模式下不隐藏工具栏,方便手机存读档操作。
core.updateHeroIcon()
更新状态栏上的勇士图标。
core.updateGlobalAttribute()
更新全局属性,例如状态栏的背景图等。
core.setToolbarButton(useButtom)
设置工具栏是否是拓展键盘。
// ------ resize 相关 ------ //
core.registerResize(name, func)
注册一个resize函数。
name为自定义名称,可供注销使用。
func可以是一个函数,或插件中的函数名,可以接受一个obj作为参数。
具体详见resize函数。
core.unregisterResize(name)
注销一个resize函数。
core.resize()
屏幕分辨率改变后的重新自适应。
此函数将根据当前的屏幕分辨率信息,生成一个obj,并传入各个注册好的resize函数中执行。
------------------------------------ [enemys.js] ------------------------------------
enemys.js中定义了一系列和怪物相关的API函数。
core.hasSpecial(special, test)
判断是否含有某个特殊属性。test为要检查的特殊属性编号。
special为要测试的内容,允许接收如下类型参数:
- 一个数字:将直接和test进行判等。
- 一个数组:将检查test是否在该数组之中存在。
- 一个怪物信息:将检查test是否在该怪物的特殊属性中存在
- 一个字符串:视为怪物ID,将检查该怪物的特殊属性
core.getSpecials()
获得所有特殊属性的列表。实际上被转发到了脚本编辑中。
core.getSpecialText(enemy)
获得某个怪物的全部特殊属性名称。enemy可以是怪物信息或怪物ID。
将返回一个数组,每一项是该怪物所拥有的一个特殊属性的名称。
core.getSpecialHint(enemy, special)
获得怪物的某个特殊属性的描述。enemy可以是怪物信息或怪物ID,special为该特殊属性编号。
core.canBattle(enemy, x, y, floorId)
判定当前能否战胜某个怪物。
enemy可以是怪物信息或怪物ID,x,y,floorId为当前坐标和楼层。(下同)
能战胜返回true,不能战胜返回false。
core.getDamage(enemy, x, y, floorId)
获得某个怪物的全部伤害值。
如果没有破防或无法战斗则返回null,否则返回具体的伤害值。
core.getExtraDamage(enemy, x, y, floorId)
获得某个怪物的额外伤害值(不可被魔防减伤)。
目前暂时只包含了仇恨和固伤两者,如有需要可复写该函数。
core.getDamageString(enemy, x, y, floorId)
获得某个怪物伤害字符串和颜色信息,以便于在地图上绘制显伤。
core.nextCriticals(enemy, number, x, y, floorId)
获得接下来的N个临界值和临界减伤。enemy可以是怪物信息或怪物ID,x,y,floorId为当前坐标和楼层。
number为要计算的临界值数量,不填默认为1。
如果全塔属性中的useLoop开关被开启,则将使用循环法或二分法计算临界,否则使用回合法计算临界。
返回一个二维数组 [[x1,y1],[x2,y2],...] 表示接下来的每个临界值和减伤值。
core.getDefDamage(enemy, k, x, y, floorId)
获得某个怪物的k防减伤值。k可不填默认为1。
core.getEnemyInfo(enemy, hero, x, y, floorId)
获得某个怪物的实际计算时的属性。该函数实际被转发到了脚本编辑中。
hero可为null或一个对象,具体将使用core.getRealStatusOrDefault(hero, "atk")来获得攻击力数值。
该函数应当返回一个对象,记录了怪物的实际计算时的属性。
core.getDamageInfo(enemy, hero, x, y, floorId)
获得某个怪物的战斗信息。该函数实际被转发到了脚本编辑中。
hero可为null或一个对象,具体将使用core.getRealStatusOrDefault(hero, "atk")来获得攻击力数值。
如果该函数返回null,则代表不可战斗(如没有破防,或无敌等)。
否则,该函数应该返回一个对象,记录了战斗伤害信息,如战斗回合数等。
从V2.5.5开始,该函数也允许直接返回一个数字,代表战斗伤害值,此时回合数将视为0。
core.updateEnemys()
更新怪物数据。该函数实际被转发到了脚本编辑中。详见文档-事件-更新怪物数据。
core.getCurrentEnemys(floorId)
获得某个楼层不重复的怪物信息,floorId不填默认为当前楼层。该函数会被怪物手册所调用。
该函数将返回一个列表,每一项都是一个不同的怪物,按照伤害值从小到大排序。
另外值得注意的是,如果设置了某个怪物的displayIdInBook,则会返回对应的怪物。
core.hasEnemyLeft(enemyId, floorId)
检查某个楼层是否还有剩余的(指定)怪物。
floorId为楼层ID,可忽略表示当前楼层。也可以传数组如["MT0","MT1"]同时检测多个楼层。
enemyId如果不填或null则检查是否剩余任何怪物,否则只检查是否剩余指定的某类怪物。
------------------------------------ [events.js] ------------------------------------
events.js将处理所有和事件相关的操作,主要分为五个部分:
- 游戏的开始和结束
- 系统事件的处理
- 自定义事件的处理
- 点击状态栏图标所进行的操作
- 一些具体事件的执行内容
// ------ 游戏的开始和结束 ------ //
core.resetGame(hero, hard, floorId, maps, values)
重置整个游戏。该函数实际被转发到了脚本编辑中。
core.startGame(hard, seed, route, callback)
开始新游戏。
hard为难度字符串,会被设置为core.status.hard。
seed为开始时要设置的的种子,route为要开始播放的录像,callback为回调函数。
该函数将重置整个游戏,调用setInitData,执行startText事件,上传游戏人数统计信息等。
core.setInitData()
根据难度分歧来初始化难度,包括设置flag:hard,设置初始属性等。
该函数实际被转发到了脚本编辑中。
core.win(reason, norank)
游戏胜利,reason为结局名,norank如果为真则该结局不计入榜单。
该函数实际被转发到了脚本编辑中。
core.lose(reason)
游戏失败,reason为结局名。该函数实际被转发到了脚本编辑中。
core.gameOver(ending, fromReplay, norank)
游戏结束。ending为获胜结局名,null代表失败;fromReplay标识是否是录像触发的。
此函数将询问是否上传成绩(如果ending不是null),是否下载录像等,并重新开始。
core.restart()
重新开始游戏。本质上就是播放标题界面的BGM并调用showStartAnimate。
core.confirmRestart()
确认用户是否需要重新开始。
// ------ 系统事件处理 ------ //
core.registerSystemEvent(type, func)
注册一个系统事件,即通过图块的默认触发器所触发的事件。
type为一个要注册的事件类型,func为要执行的函数体或插件中的函数名。
func需要接受(data, callback)作为参数,分别是触发点的图块信息,和执行完毕时的回调。
如果注册一个已经存在的系统事件,比如openDoor,则会覆盖系统的默认函数。
core.unregisterSystemEvent(type)
注销一个系统事件。type是上面你注册的事件类型。
core.doSystemEvent(type, data, callback)
执行一个系统事件。type为事件类型,data为该事件点的图块信息,callback为执行完毕的回调。
core.battle(id, x, y, force, callback)
和怪物进行战斗。
id为怪物的ID,x和y为怪物坐标,force如果为真将强制战斗,callback为执行完毕的回调。
如果填写了怪物坐标,则会删除对应点的图块并执行该点战后事件。
如果是在事件流的执行过程中调用此函数,则不会进行自动存档,且会强制战斗。
core.beforeBattle(enemyId, x, y)
战前事件。实际被转发到了脚本编辑中,可以在这里加上一些战前特效。
此函数在“检测能否战斗和自动存档”【之后】执行。
如果需要更早的战前事件,请在插件中覆重写 core.events.doSystemEvent 函数。
此函数返回true则将继续本次战斗,返回false将不再战斗。
core.afterBattle(enemyId, x, y, callback)
战后事件,将执行扣血、加金币经验、特殊属性处理、战后事件处理等操作。
实际被转发到了脚本编辑中。
core.openDoor(x, y, needKey, callback)
尝试开一个门。x和y为门的坐标,needKey表示是否需要钥匙,callback为执行完毕的回调。
如果不是一个有效的门,需要钥匙且未持有等,均会忽略此事件并直接执行callback。
core.afterOpenDoor(doorId, x, y, callback)
开完一个门后执行的事件,实际被转发到了脚本编辑中。
core.getItem(id, num, x, y, callback)
获得若干个道具。itemId为道具ID,itemNum为获得的道具个数,不填默认为1。
x和y为道具点的坐标,如果设置则会擦除地图上的该点。
core.afterGetItem(id, x, y, callback)
获得一个道具后执行的事件,实际被转发到了脚本编辑中。
core.getNextItem(noRoute)
轻按,即获得面对的道具。如果noRoute为真则这个轻按行为不会计入录像。
core.changeFloor(floorId, stair, heroLoc, time, callback, fromLoad)
楼层切换。floorId为目标楼层ID,stair为是什么楼梯,heroLoc为目标点坐标。
time为切换时间,callback为切换完毕的回调,fromLoad标志是否是从读档造成的切换。
floorId也可以填":before"和":next"表示前一层和后一层。
heroLoc为{"x": 0, "y": 0, "direction": "up"}的形式。不存在则从勇士位置取。
如果stair不为null,则会在该楼层中找对应的图块作为目标点的坐标并覆盖heroLoc。
一般设置的是"upFloor"和"downFloor",但也可以用任何其他的图块ID。
core.changingFloor(floorId, heroLoc, fromLoad)
正在执行楼层切换中执行的操作,实际被转发到了脚本编辑中。
core.hasVisitedFloor(floorId)
是否曾经到达过某一层。
core.visitFloor(floorId)
标记曾经到达了某一层。
core.passNet(data)
执行一个路障处理。这里只有毒衰咒网的处理,血网被移动到了updateCheckBlock中。
core.pushBox(data)
执行一个推箱子事件。
core.afterPushBox()
推箱子之后触发的事件,实际被转发到了脚本编辑中。
core.changeLight(id, x, y)
踩灯后的事件。
// ------ 自定义事件的处理 ------ //
core.registerEvent(type, func)
注册一个自定义事件。type为事件名,func为执行事件的函数体或插件中的函数名。
func可以接受(data, x, y, prefix)参数,其中data为事件内容,x和y为该点坐标,prefix为该点前缀。
同名注册的事件将进行覆盖。
请记得在自定义处理事件完毕后调用core.doAction()再继续执行下一个事件!
core.unregisterEvent(type)
注销一个自定义事件。
core.doEvent(data, x, y, prefix)
执行一个自定义事件。data为事件内容,将根据data.type去注册的事件列表中查找对应的执行函数。
x和y为该点坐标,prefix为该点前缀。执行事件时也会把(data, x, y, prefix)传入执行函数。
core.setEvents(list, x, y, callback)
设置自定义事件的执行列表,坐标和回调函数。
core.startEvents(list, x, y, callback)
开始执行一系列的自定义事件。list为事件列表,x和y为事件坐标,callback为执行完毕的回调。
此函数将调用core.setEvents,然后停止勇士,再执行core.doAction()。
core.doAction()
执行下一个自定义事件。
此函数将检测事件列表是否全部执行完毕,如果是则执行回调函数。
否则,将从事件列表中弹出下一个事件,并调用core.doEvent进行执行。
core.insertAction(action, x, y, callback, addToLast)
向当前的事件列表中插入一个或多个事件并执行。
如果当前并不是在事件执行流中,则会调用core.startEvents()开始执行事件,否则仅仅执行插入操作。
action为要插入的事件,可以是一个单独的事件,或者是一个事件列表。
x,y,callback如果设置了且不为null,则会覆盖当前的坐标和回调函数。
addToLast如果为真,则会插入到事件执行列表的尾部,否则是插入到执行列表的头部。
core.getCommonEvent(name)
根据名称获得某个公共事件内容。
core.recoverEvents(data)
恢复事件现场。一般用于呼出怪物手册、呼出存读档页面等时,恢复事件执行流。
// ------ 点击状态栏图标时执行的一些操作 ------ //
core.openBook(fromUserAction)
尝试打开怪物手册。fromUserAction标志是否是从用户的行为触发,如按键或点击状态栏。(下同)
不建议复写此函数,否则【呼出怪物手册】事件会出问题。
core.useFly(fromUserAction)
尝试使用楼传器。可以安全的复写此函数,参见文档-个性化-覆盖楼传事件。