var Map_Area=function(){//【bug:蓝色水晶传送回城时,支线人的图像不显示,貌似其实跟传送事件本身的图像刷新没做好有关,跟本插件无关】
//地图面积控制//【bug,做到这,弄到这:直达传送野外大图到野外小图,坐标因不存在致使人物无法移动,而且第二个问题是容易跳bug(小地图插件功能方面);直达传送野外小图到野外大图,事件数目不对(往返庄园各一次倒是会恢复正常)——取巧的法子也许是将直达传送修改为仅能传送到休息层等非野外地图】
//根据地图id以及周目等条件(最好不能是层数或者小层数这种没有缓存的即时变量,否则会出bug),修改地图大小,以影响事件数量(跟事件拷贝有关)
if(2==2){var Width=17+LCH.dangqianzhoumu.toString().length%10;var Height=13+LCH.dangqianzhoumu.toString().length%10;};//【地图一旦长超过27,宽超过23,下面事件的位置就会出错,即使归位也会出错,也许是因为东西太多,太卡,一时间执行不来导致的】【存档前的地图面积不能比存档后的大,否则无法读档,貌似因部分事件已经不存在,但读档时,程序还得遍寻它们】
////根据地图决定传送阵位置(只能放这里,亦或者,需要单独弄一个function,然后内含return,需要就调用一下(指用到传送阵位置或id的地方,需要才调用貌似更省算力))
var ID1=43;var ID2=179;var ID3=213;
if(Width%2==1){var ID1=Width*2+Width/2+0.5;}else if(Width%2==0){var ID1=Width*2+Width/2;};
if(Width%2==1){var ID2=Width*Height-(Width*2+Width/2-0.5);}else if(Width%2==0){var ID2=Width*Height-(Width*2+Width/2-1);};
if(Width%2==1){var ID3=Width*Height-(Width/2-0.5);}else if(Width%2==0){var ID3=Width*Height-(Width/2);};
var j=[ID1,ID2,ID3];for(var i=1;i<=j.length;i++){LCH.Map_Csz_XY[i*3-3]=j[i-1];LCH.Map_Csz_XY[i*3-2]=(j[i-1]-1)%Width;LCH.Map_Csz_XY[i*3-1]=Math.floor((j[i-1]-1)/Width);};
////
if(($gameMap.mapId()==6||$gameMap.mapId()==7)){$dataMap.width=Width;$dataMap.height=Height;};
Map_EventSetup();//事件生成(为了复制某些事件)
};
Game_Map.prototype.width = function() {
Map_Area();//地图面积控制
return $dataMap.width;
};
Game_Map.prototype.height = function() {
Map_Area();//地图面积控制
return $dataMap.height;
};
Game_Event.prototype.event = function() {
Map_Area();//地图面积控制
return $dataMap.events[this._eventId];
};
var Map_EventSetup=function(){//事件生成(为了复制某些事件)
if(($gameMap.mapId()==6||$gameMap.mapId()==7)){LCH.Map_Event_Long=$dataMap.events.length;};//最省$dataMap.events.length算力的法子只有这个,其他一次性的貌似都会跳bug,再研究下去大概只能看看存档读档的插件什么情况碰碰运气
/*
if($gameMap._mapId==1&&LCH.Map_Event_Long<26+LCH.dangqianzhoumu){//用本部分间接实现事件拷贝,这里是控制第一张地图拷贝“事件5”两次,注意,前提是这张图本身的事件只有26个(包括空白事件)
var i=JsonEx.makeDeepCopy($dataMap.events[5]);i.id=LCH.Map_Event_Long;
$dataMap.events.push(i);
};
*/
//
if($gameMap._mapId==6||$gameMap._mapId==7){//【bug,做到这,弄到这】存档读档后变卡了,除非地图原本那样的不大,可能只是地图太大本身就会卡。。。由此,除非是那种需要小地图内不断产生小兵和消灭小兵的地图,否则,貌似无限生成新事件也意义不大
//也许是以下的条件$dataMap.events需要读取,太大才卡,也许可以尝试弄一个相应的开关,在传送整个结束后开启这个开关,然后下面整个结束后(事件相等且位置归位完成)关闭这个开关,而以这个开关作为条件以判定以下整个东西是否执行,这个条件也许可以加在这里的if($gameMap._mapId==6||$gameMap._mapId==7){括号里
if(LCH.Map_Event_Long-1<$dataMap.width*$dataMap.height){//本条件可以实现野外触碰事件和格子数相同
for(var j=1;j<=$dataMap.width*$dataMap.height-(LCH.Map_Event_Long-1);j++){
var i=JsonEx.makeDeepCopy($dataMap.events[1]);i.id=LCH.Map_Event_Long;
$dataMap.events.push(i);
};
LCH.Map_Freshed=0;
/*//当前这一段暂时没有意义,不能“解决存档前的地图面积不能比存档后的大”的问题
}else if(LCH.Map_Event_Long-1>$dataMap.width*$dataMap.height){
$dataMap.events=$dataMap.events.slice(0,$dataMap.width*$dataMap.height+2);//"Hello world!".slice(1,5)=="ello"
LCH.Map_Freshed=0;
*///
}else if(LCH.Map_Event_Long-1==$dataMap.width*$dataMap.height&&LCH.Map_Freshed==0){//各个格子事件生成结束后,非默认地图大小时,重新设置传送阵位置&&$dataMap.width!==17||$dataMap.height!==13
////
if($gameMap._mapId==6){//&&($dataMap.events[43].meta.leixing=="csz"&&$dataMap.events[179].meta.leixing=="csz")
var i1=JsonEx.makeDeepCopy($dataMap.events[43]);i1.id=LCH.Map_Csz_XY[0];
var i2=JsonEx.makeDeepCopy($dataMap.events[179]);i2.id=LCH.Map_Csz_XY[3];
var i=JsonEx.makeDeepCopy($dataMap.events[1]);i.id=43;$dataMap.events[i.id]=i;
var i=JsonEx.makeDeepCopy($dataMap.events[1]);i.id=179;$dataMap.events[i.id]=i;
$dataMap.events[i1.id]=i1;
$dataMap.events[i2.id]=i2;
////
if($dataMap.events[i1.id].x!==(i1.id-1)%$dataMap.width||$dataMap.events[i1.id].y!==Math.floor((i1.id-1)/$dataMap.width)||
$dataMap.events[i2.id].x!==(i2.id-1)%$dataMap.width||$dataMap.events[i2.id].y!==Math.floor((i2.id-1)/$dataMap.width)){
var l1=$dataMap.width*$dataMap.height;for(var i=1;i<=l1;i++){
$dataMap.events[i].x=(i-1)%$dataMap.width;$dataMap.events[i].y=Math.floor((i-1)/$dataMap.width);
};
};//传送事件归位//【bug:部分事件会重叠,也许要先都变成不动的事件,再归位,再变回正确的事件才行。。。不排除是因为事件太多地图太大太卡而已】
/////
}else if($gameMap._mapId==7){//&&$dataMap.events[213].meta.leixing=="csz"
var i1=JsonEx.makeDeepCopy($dataMap.events[213]);i1.id=LCH.Map_Csz_XY[6];
var i=JsonEx.makeDeepCopy($dataMap.events[1]);i.id=213;$dataMap.events[i.id]=i;
$dataMap.events[i1.id]=i1;
////
if($dataMap.events[i1.id].x!==(i1.id-1)%$dataMap.width||$dataMap.events[i1.id].y!==Math.floor((i1.id-1)/$dataMap.width)){
var l1=$dataMap.width*$dataMap.height;for(var i=1;i<=l1;i++){
$dataMap.events[i].x=(i-1)%$dataMap.width;$dataMap.events[i].y=Math.floor((i-1)/$dataMap.width);
};
};//传送事件归位
/////
};
////
LCH.Map_Freshed=1;
};
};
//
};