Код не "сжат", может не влезть в Скрипт в таком виде - строки сжимайте как вам удобно.
Код не совершенен, может бажить если у вас много (200+) эвентов на карте - использование на ваш страх и риск. =)
Ну и в целом тут много нюансов, но в своей игре я использую данный вариант и "оно почти работает"(с)
Код:
let eventToCloneId = A;
let cloneInCoordX = B;
let cloneInCoordY = C;
let cloneInDirection = D;
let eventToCloneData = $dataMap.events[eventToCloneId];
let clonedEventData = {...eventToCloneData};
let newId = eventToCloneId + Math.floor(Math.random() * E + F);
if($dataMap.events.length < newId){
$dataMap.events.length = newId;
}
$dataMap.events[newId] = clonedEventData;
let clonedMapEvent = new Game_Event(this._mapId, clonedEventData.id);
clonedMapEvent._direction = cloneInDirection;
clonedMapEvent.locate(cloneInCoordX, cloneInCoordY);
$gameMap._events.push(clonedMapEvent);
$dataMap.events[$dataMap.events.length - 1].id = newId;
$gameMap._events[$gameMap._events.length - 1]._eventId = newId;
SceneManager._scene._spriteset.createCharacters();
где:
A - номер (id) эвента, который нужно клонировать;
B - координата X, в которую нужно поместить склонированный эвент;
C - координата Y, в которую нужно поместить склонированный эвент;
D - направление взгляда склонированного эвента(2 - низ, 4 - лево, 6 - право, 8 - верх);
E - максимальный номер нового Id склонированного эвента;
F - минимальный номер нового Id склонированного эвента.
Социальные закладки