Fix reset progression roll
All checks were successful
Release Creation / build (release) Successful in 1m12s

This commit is contained in:
LeRatierBretonnien 2025-04-15 20:29:56 +02:00
parent 9035ad4bfb
commit fdd72e9375
24 changed files with 90 additions and 90 deletions

View File

@ -12,7 +12,7 @@ export class LethalFantasyCombatTracker extends CombatTracker {
console.log("Combat Data", data);
return data;
}
activateListeners(html) {
super.activateListeners(html);
// Display Combat settings
@ -23,6 +23,7 @@ export class LethalFantasyCombatTracker extends CombatTracker {
c.update({ 'initiative': c.initiative + 1 });
console.log("Initiative Plus");
});
html.find(".initiative-minus").click(ev => {
ev.preventDefault();
let cId = ev.currentTarget.closest(".combatant").dataset.combatantId;
@ -131,7 +132,7 @@ export class LethalFantasyCombat extends Combat {
let advanceTime = Math.max(this.turns.length - this.turn, 0) * CONFIG.time.turnTime;
advanceTime += CONFIG.time.roundTime;
let nextRound = this.round + 1;
let initOK = true;
for (let c of this.combatants) {
if (c.initiative === null) {
@ -140,10 +141,10 @@ export class LethalFantasyCombat extends Combat {
}
}
if (!initOK) {
ui.notifications.error("All combatants must have initiative rolled before the round can advance.");
ui.notifications.error("All combatants must have initiative rolled before the round can advance.");
return this;
}
for (let c of this.combatants) {
if ( nextRound >= c.initiative) {
c.update({ 'system.progressionCount': c.system.progressionCount + 1 });
@ -153,7 +154,7 @@ export class LethalFantasyCombat extends Combat {
} else {
user = game.users.find(u => u.active && u.isGM);
c.actor.system.rollProgressionDice(this.id, c.id, c.system.progressionCount+1);
}
}
}
}
@ -169,4 +170,3 @@ export class LethalFantasyCombat extends Combat {
return a.initiative - b.initiative;
}
}

View File

@ -237,25 +237,25 @@ export default class LethalFantasyRoll extends Roll {
hasStaticModifier = options.rollType === "spell-power"
hasModifier = options.rollType !== "miracle-attack"
options.rollTarget.staticModifier = options.rollTarget.actorLevel
} else if (options.rollType === "shield-roll") {
hasD30 = false
hasD30 = false
options.rollName = "Shield Defense"
dice = options.rollTarget.system.defense.toUpperCase()
baseFormula = dice
baseFormula = dice
hasModifier = true
hasChangeDice = false
hasMaxValue = false
hasExplode = false
options.rollTarget.value = 0
} else if (options.rollType.includes("weapon-damage")) {
options.rollName = options.rollTarget.name
hasModifier = true
hasChangeDice = false
let damageBonus = (options.rollTarget.weapon.system.applyStrengthDamageBonus) ? options.rollTarget.combat.damageModifier : 0
options.rollTarget.value = damageBonus + options.rollTarget.weaponSkillModifier + options.rollTarget.weapon.system.bonuses.damageBonus
options.rollTarget.charModifier = damageBonus
options.rollTarget.charModifier = damageBonus
if (options.rollType.includes("small")) {
dice = options.rollTarget.weapon.system.damage.damageS
} else {
@ -423,7 +423,7 @@ export default class LethalFantasyRoll extends Roll {
/**
* A hook event that fires before the roll is made.
* @function
* @function
* @memberof hookEvents
* @param {Object} options Options for the roll.
* @param {Object} rollData All data related to the roll.
@ -530,7 +530,7 @@ export default class LethalFantasyRoll extends Roll {
/**
* A hook event that fires after the roll has been made.
* @function
* @function
* @memberof hookEvents
* @param {Object} options Options for the roll.
* @param {Object} rollData All data related to the roll.
@ -651,7 +651,7 @@ export default class LethalFantasyRoll extends Roll {
if (rollContext === null || !rollContext?.progressionDiceId) {
let combat = game.combats.get(options.combatId)
let combatant = combat.combatants.get(options.combatantId)
combatant.update({ 'system.progressionCount': 1 })
combatant.update({ 'system.progressionCount': 0 })
return
}
@ -680,15 +680,15 @@ export default class LethalFantasyRoll extends Roll {
let message = `Spell casting time : ${spell.name}, count : ${options.rollProgressionCount}/${spell.system.castingTime}`
ChatMessage.create({ content: message, speaker: ChatMessage.getSpeaker({ actor: actor }) })
return
}
}
let formula = dice
let roll = new Roll(formula)
await roll.evaluate()
let max = roll.dice[0].faces - 1
let toCompare = Math.min(options.rollProgressionCount-spell.system.castingTime, max)
let message
let message
if (roll.total > toCompare) {
message = `Spell Lethargy ongoing ... (${roll.total}/${toCompare}, spell level ${spell.system.level})`
message = `Spell Lethargy ongoing ... (${roll.total}/${toCompare}, spell level ${spell.system.level})`
} else {
let combat = game.combats.get(options.combatId)
combat.resetProgression(options.combatantId)
@ -697,7 +697,7 @@ export default class LethalFantasyRoll extends Roll {
let msg = await roll.toMessage({ flavor: message }, { rollMode: rollContext.visibility })
if (game?.dice3d) {
await game.dice3d.waitFor3DAnimationByMessageID(msg.id)
}
}
return
}
@ -709,8 +709,8 @@ export default class LethalFantasyRoll extends Roll {
let toSplit = weapon.system.speed[rangedMode]
let split = toSplit.split("+")
rangedLoad = Number(split[0]) || 0
formula = split[1]
console.log("Ranged Mode", rangedMode, rangedLoad, formula, options.rollProgressionCount)
formula = split[1]
console.log("Ranged Mode", rangedMode, rangedLoad, formula, options.rollProgressionCount)
}
if (rangedLoad && options.rollProgressionCount <= rangedLoad ) {
@ -859,7 +859,7 @@ export default class LethalFantasyRoll extends Roll {
/**
* A hook event that fires after the roll has been made.
* @function
* @function
* @memberof hookEvents
* @param {Object} options Options for the roll.
* @param {Object} rollData All data related to the roll.
@ -910,7 +910,7 @@ export default class LethalFantasyRoll extends Roll {
/** @override */
async render(chatOptions = {}) {
let chatData = await this._getChatCardData(chatOptions.isPrivate)
console.log("ChatData", chatData)
console.log("ChatData", chatData)
return await renderTemplate(this.constructor.CHAT_TEMPLATE, chatData)
}

View File

@ -1 +1 @@
MANIFEST-000195
MANIFEST-000203

View File

@ -1,8 +1,8 @@
2025/04/06-22:37:25.011079 7f9c6bfff6c0 Recovering log #193
2025/04/06-22:37:25.094778 7f9c6bfff6c0 Delete type=3 #191
2025/04/06-22:37:25.094854 7f9c6bfff6c0 Delete type=0 #193
2025/04/06-23:13:03.158258 7f9c69bff6c0 Level-0 table #198: started
2025/04/06-23:13:03.158304 7f9c69bff6c0 Level-0 table #198: 0 bytes OK
2025/04/06-23:13:03.165495 7f9c69bff6c0 Delete type=0 #196
2025/04/06-23:13:03.185973 7f9c69bff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!znm6T1ef4qQI8BX7' @ 0 : 0; will stop at (end)
2025/04/06-23:13:03.186054 7f9c69bff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!znm6T1ef4qQI8BX7' @ 0 : 0; will stop at (end)
2025/04/15-20:28:27.909693 7f5c827fc6c0 Recovering log #201
2025/04/15-20:28:27.920405 7f5c827fc6c0 Delete type=3 #199
2025/04/15-20:28:27.920498 7f5c827fc6c0 Delete type=0 #201
2025/04/15-20:29:29.823399 7f5c81bff6c0 Level-0 table #206: started
2025/04/15-20:29:29.823453 7f5c81bff6c0 Level-0 table #206: 0 bytes OK
2025/04/15-20:29:29.855733 7f5c81bff6c0 Delete type=0 #204
2025/04/15-20:29:29.869881 7f5c81bff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!znm6T1ef4qQI8BX7' @ 0 : 0; will stop at (end)
2025/04/15-20:29:29.899952 7f5c81bff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!znm6T1ef4qQI8BX7' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,8 @@
2025/04/06-22:20:18.232271 7f9c6bfff6c0 Recovering log #189
2025/04/06-22:20:18.242369 7f9c6bfff6c0 Delete type=3 #187
2025/04/06-22:20:18.242439 7f9c6bfff6c0 Delete type=0 #189
2025/04/06-22:35:41.370139 7f9c69bff6c0 Level-0 table #194: started
2025/04/06-22:35:41.370201 7f9c69bff6c0 Level-0 table #194: 0 bytes OK
2025/04/06-22:35:41.376766 7f9c69bff6c0 Delete type=0 #192
2025/04/06-22:35:41.396242 7f9c69bff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!znm6T1ef4qQI8BX7' @ 0 : 0; will stop at (end)
2025/04/06-22:35:41.396304 7f9c69bff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!znm6T1ef4qQI8BX7' @ 0 : 0; will stop at (end)
2025/04/15-20:12:44.848433 7f5c83fff6c0 Recovering log #197
2025/04/15-20:12:44.863682 7f5c83fff6c0 Delete type=3 #195
2025/04/15-20:12:44.863747 7f5c83fff6c0 Delete type=0 #197
2025/04/15-20:17:42.198359 7f5c81bff6c0 Level-0 table #202: started
2025/04/15-20:17:42.198471 7f5c81bff6c0 Level-0 table #202: 0 bytes OK
2025/04/15-20:17:42.205479 7f5c81bff6c0 Delete type=0 #200
2025/04/15-20:17:42.225325 7f5c81bff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!znm6T1ef4qQI8BX7' @ 0 : 0; will stop at (end)
2025/04/15-20:17:42.225430 7f5c81bff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!znm6T1ef4qQI8BX7' @ 0 : 0; will stop at (end)

View File

@ -1 +1 @@
MANIFEST-000194
MANIFEST-000202

View File

@ -1,8 +1,8 @@
2025/04/06-22:37:25.097825 7f9c6affd6c0 Recovering log #192
2025/04/06-22:37:25.151383 7f9c6affd6c0 Delete type=3 #190
2025/04/06-22:37:25.151444 7f9c6affd6c0 Delete type=0 #192
2025/04/06-23:13:03.179786 7f9c69bff6c0 Level-0 table #197: started
2025/04/06-23:13:03.179809 7f9c69bff6c0 Level-0 table #197: 0 bytes OK
2025/04/06-23:13:03.185776 7f9c69bff6c0 Delete type=0 #195
2025/04/06-23:13:03.186038 7f9c69bff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
2025/04/06-23:13:03.186106 7f9c69bff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
2025/04/15-20:28:27.924832 7f5c83fff6c0 Recovering log #200
2025/04/15-20:28:27.935942 7f5c83fff6c0 Delete type=3 #198
2025/04/15-20:28:27.936056 7f5c83fff6c0 Delete type=0 #200
2025/04/15-20:29:29.646786 7f5c81bff6c0 Level-0 table #205: started
2025/04/15-20:29:29.646851 7f5c81bff6c0 Level-0 table #205: 0 bytes OK
2025/04/15-20:29:29.673575 7f5c81bff6c0 Delete type=0 #203
2025/04/15-20:29:29.759542 7f5c81bff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
2025/04/15-20:29:29.759654 7f5c81bff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,8 @@
2025/04/06-22:20:18.244978 7f9c6a7fc6c0 Recovering log #188
2025/04/06-22:20:18.255487 7f9c6a7fc6c0 Delete type=3 #186
2025/04/06-22:20:18.255607 7f9c6a7fc6c0 Delete type=0 #188
2025/04/06-22:35:41.389186 7f9c69bff6c0 Level-0 table #193: started
2025/04/06-22:35:41.389226 7f9c69bff6c0 Level-0 table #193: 0 bytes OK
2025/04/06-22:35:41.396058 7f9c69bff6c0 Delete type=0 #191
2025/04/06-22:35:41.396288 7f9c69bff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
2025/04/06-22:35:41.396321 7f9c69bff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
2025/04/15-20:12:44.869154 7f5c82ffd6c0 Recovering log #196
2025/04/15-20:12:44.884227 7f5c82ffd6c0 Delete type=3 #194
2025/04/15-20:12:44.884371 7f5c82ffd6c0 Delete type=0 #196
2025/04/15-20:17:42.205662 7f5c81bff6c0 Level-0 table #201: started
2025/04/15-20:17:42.205704 7f5c81bff6c0 Level-0 table #201: 0 bytes OK
2025/04/15-20:17:42.212053 7f5c81bff6c0 Delete type=0 #199
2025/04/15-20:17:42.225357 7f5c81bff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
2025/04/15-20:17:42.225453 7f5c81bff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000194
MANIFEST-000202

View File

@ -1,8 +1,8 @@
2025/04/06-22:37:24.928302 7f9c6b7fe6c0 Recovering log #192
2025/04/06-22:37:25.008082 7f9c6b7fe6c0 Delete type=3 #190
2025/04/06-22:37:25.008180 7f9c6b7fe6c0 Delete type=0 #192
2025/04/06-23:13:03.172108 7f9c69bff6c0 Level-0 table #197: started
2025/04/06-23:13:03.172132 7f9c69bff6c0 Level-0 table #197: 0 bytes OK
2025/04/06-23:13:03.179663 7f9c69bff6c0 Delete type=0 #195
2025/04/06-23:13:03.186021 7f9c69bff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
2025/04/06-23:13:03.186087 7f9c69bff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
2025/04/15-20:28:27.891776 7f5c82ffd6c0 Recovering log #200
2025/04/15-20:28:27.903632 7f5c82ffd6c0 Delete type=3 #198
2025/04/15-20:28:27.903749 7f5c82ffd6c0 Delete type=0 #200
2025/04/15-20:29:29.673732 7f5c81bff6c0 Level-0 table #205: started
2025/04/15-20:29:29.673787 7f5c81bff6c0 Level-0 table #205: 0 bytes OK
2025/04/15-20:29:29.697981 7f5c81bff6c0 Delete type=0 #203
2025/04/15-20:29:29.759583 7f5c81bff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
2025/04/15-20:29:29.759670 7f5c81bff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,8 @@
2025/04/06-22:20:18.218694 7f9c6affd6c0 Recovering log #188
2025/04/06-22:20:18.228729 7f9c6affd6c0 Delete type=3 #186
2025/04/06-22:20:18.228901 7f9c6affd6c0 Delete type=0 #188
2025/04/06-22:35:41.376873 7f9c69bff6c0 Level-0 table #193: started
2025/04/06-22:35:41.376897 7f9c69bff6c0 Level-0 table #193: 0 bytes OK
2025/04/06-22:35:41.382813 7f9c69bff6c0 Delete type=0 #191
2025/04/06-22:35:41.396253 7f9c69bff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
2025/04/06-22:35:41.396312 7f9c69bff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
2025/04/15-20:12:44.823825 7f5c827fc6c0 Recovering log #196
2025/04/15-20:12:44.842141 7f5c827fc6c0 Delete type=3 #194
2025/04/15-20:12:44.842235 7f5c827fc6c0 Delete type=0 #196
2025/04/15-20:17:42.218838 7f5c81bff6c0 Level-0 table #201: started
2025/04/15-20:17:42.218876 7f5c81bff6c0 Level-0 table #201: 0 bytes OK
2025/04/15-20:17:42.225069 7f5c81bff6c0 Delete type=0 #199
2025/04/15-20:17:42.225407 7f5c81bff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
2025/04/15-20:17:42.225476 7f5c81bff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)

Binary file not shown.

View File

@ -1 +1 @@
MANIFEST-000194
MANIFEST-000202

View File

@ -1,8 +1,8 @@
2025/04/06-22:37:25.153392 7f9c6a7fc6c0 Recovering log #192
2025/04/06-22:37:25.208856 7f9c6a7fc6c0 Delete type=3 #190
2025/04/06-22:37:25.208937 7f9c6a7fc6c0 Delete type=0 #192
2025/04/06-23:13:03.165775 7f9c69bff6c0 Level-0 table #197: started
2025/04/06-23:13:03.165803 7f9c69bff6c0 Level-0 table #197: 0 bytes OK
2025/04/06-23:13:03.172001 7f9c69bff6c0 Delete type=0 #195
2025/04/06-23:13:03.185997 7f9c69bff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
2025/04/06-23:13:03.186070 7f9c69bff6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
2025/04/15-20:28:27.940175 7f5c837fe6c0 Recovering log #200
2025/04/15-20:28:27.952060 7f5c837fe6c0 Delete type=3 #198
2025/04/15-20:28:27.952156 7f5c837fe6c0 Delete type=0 #200
2025/04/15-20:29:29.698145 7f5c81bff6c0 Level-0 table #205: started
2025/04/15-20:29:29.698204 7f5c81bff6c0 Level-0 table #205: 0 bytes OK
2025/04/15-20:29:29.733235 7f5c81bff6c0 Delete type=0 #203
2025/04/15-20:29:29.759616 7f5c81bff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
2025/04/15-20:29:29.759685 7f5c81bff6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)

View File

@ -1,8 +1,8 @@
2025/04/06-22:20:18.258701 7f9c6b7fe6c0 Recovering log #188
2025/04/06-22:20:18.268149 7f9c6b7fe6c0 Delete type=3 #186
2025/04/06-22:20:18.268224 7f9c6b7fe6c0 Delete type=0 #188
2025/04/06-22:35:41.382962 7f9c69bff6c0 Level-0 table #193: started
2025/04/06-22:35:41.383003 7f9c69bff6c0 Level-0 table #193: 0 bytes OK
2025/04/06-22:35:41.389033 7f9c69bff6c0 Delete type=0 #191
2025/04/06-22:35:41.396265 7f9c69bff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
2025/04/06-22:35:41.396297 7f9c69bff6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
2025/04/15-20:12:44.888845 7f5c837fe6c0 Recovering log #196
2025/04/15-20:12:44.908246 7f5c837fe6c0 Delete type=3 #194
2025/04/15-20:12:44.908316 7f5c837fe6c0 Delete type=0 #196
2025/04/15-20:17:42.212289 7f5c81bff6c0 Level-0 table #201: started
2025/04/15-20:17:42.212400 7f5c81bff6c0 Level-0 table #201: 0 bytes OK
2025/04/15-20:17:42.218709 7f5c81bff6c0 Delete type=0 #199
2025/04/15-20:17:42.225383 7f5c81bff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
2025/04/15-20:17:42.225497 7f5c81bff6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)