diff --git a/client/src/unit/unitsmanager.ts b/client/src/unit/unitsmanager.ts index 6785f830..c1a23c5c 100644 --- a/client/src/unit/unitsmanager.ts +++ b/client/src/unit/unitsmanager.ts @@ -559,10 +559,8 @@ export class UnitsManager { selectedUnitsCreateGroup() { var selectedUnits = this.getSelectedUnits({ excludeHumans: true, onlyOnePerGroup: false }); var units: { ID: number, location: LatLng }[] = []; - var coalition = "neutral"; for (let idx in selectedUnits) { var unit = selectedUnits[idx]; - coalition = unit.getCoalition(); units.push({ ID: unit.ID, location: unit.getPosition() }); } cloneUnits(units, () => { @@ -580,7 +578,6 @@ export class UnitsManager { getInfoPopup().setText(`${this.#copiedUnits.length} units copied`); } - // TODO handle from lua pasteUnits() { if (this.#copiedUnits.length > 0 && !this.#pasteDisabled && getMissionHandler().getCommandModeOptions().commandMode == GAME_MASTER) { /* Compute the position of the center of the copied units */ @@ -604,7 +601,7 @@ export class UnitsManager { /* Clone the units in groups */ for (let groupName in groups) { var units: { ID: number, location: LatLng }[] = []; - var markers: TemporaryUnitMarker[] = []; + let markers: TemporaryUnitMarker[] = []; groups[groupName].forEach((unit: any) => { var position = new LatLng(getMap().getMouseCoordinates().lat + unit.position.lat - avgLat, getMap().getMouseCoordinates().lng + unit.position.lng - avgLng); markers.push(getMap().addTemporaryMarker(position, unit.name, unit.coalition)); diff --git a/scripts/OlympusCommand.lua b/scripts/OlympusCommand.lua index 44937ec3..f5e61b26 100644 --- a/scripts/OlympusCommand.lua +++ b/scripts/OlympusCommand.lua @@ -616,7 +616,7 @@ function Olympus.clone(cloneTable) local heading = math.atan2( position.x.z, position.x.x ) -- Update the data of the cloned unit - local unitTable = Olympus.spawnDatabase[unit:getName()] + local unitTable = mist.utils.deepCopy(Olympus.spawnDatabase[unit:getName()]) local point = coord.LLtoLO(cloneData['lat'], cloneData['lng'], 0) if unitTable then @@ -674,7 +674,7 @@ function Olympus.clone(cloneTable) end end - unitsTable[#unitsTable + 1] = unitTable + unitsTable[#unitsTable + 1] = mist.utils.deepCopy(unitTable) end end @@ -688,6 +688,13 @@ function Olympus.clone(cloneTable) task = 'CAP' } + Olympus.debug(Olympus.serializeTable(vars), 1) + + -- Save the units in the database, for cloning + for idx, unitTable in pairs(unitsTable) do + Olympus.addToDatabase(unitTable) + end + mist.dynAdd(vars) Olympus.unitCounter = Olympus.unitCounter + 1