From c4624765b511e204918ae38a1eb1035a03a67b8c Mon Sep 17 00:00:00 2001 From: Hendrik Radke Date: Fri, 7 Jun 2024 14:46:45 +0200 Subject: [PATCH 1/4] fix esprit level 26 (bank-o-mat) With the coinslots being set to COIN_IGNORE, they would never trigger the door opening, rendering the level unsolvable. I changed the interval to 12s, enough to insert all 8 coins necessary. Furthermore, I added a safeguard such that the coin-generating switch does not delete objects on the ground where the coin appears. --- data/levels/enigma_esprit/esprit26_3.xml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/data/levels/enigma_esprit/esprit26_3.xml b/data/levels/enigma_esprit/esprit26_3.xml index 8a730ce75..8c4974988 100644 --- a/data/levels/enigma_esprit/esprit26_3.xml +++ b/data/levels/enigma_esprit/esprit26_3.xml @@ -20,7 +20,7 @@ ti["."] = {"it_seed"} ti["S"] = {"st_switch_black", target="get_money"} ti["G"] = {"st_lightglass"} ti["|"] = {"st_door", name="doors#", flavor="c"} -ti["C"] = {"st_coinslot", interval_m=COIN_IGNORE, target="counter", action="signal"} +ti["C"] = {"st_coinslot", interval_m=12, target="counter", action="signal"} ti["@"] = {"#ac_marble_black"} wo(ti, " ", { @@ -42,12 +42,14 @@ wo:add({"ot_counter", "counter", state=0, target="doors#*", action_8="open"}) local reserve = 8 function get_money() - if reserve > 0 then - reserve = reserve -1 - wo[po(16,1)] = {"it_coin_m"} - else - wo[po(16,1)] = {"it_document", text="text1"} - end + if not it(po(16,1)):exists() then + if reserve > 0 then + reserve = reserve -1 + wo[po(16,1)] = {"it_coin_m"} + else + wo[po(16,1)] = {"it_document", text="text1"} + end + end end ]]> From 3e4c1b3f03b493cc318efabc5eb97bb47aef12e1 Mon Sep 17 00:00:00 2001 From: Hendrik Radke Date: Fri, 7 Jun 2024 15:02:10 +0200 Subject: [PATCH 2/4] new level revision --- data/levels/enigma_esprit/{esprit26_3.xml => esprit26_4.xml} | 2 +- data/levels/enigma_esprit/index.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename data/levels/enigma_esprit/{esprit26_3.xml => esprit26_4.xml} (97%) diff --git a/data/levels/enigma_esprit/esprit26_3.xml b/data/levels/enigma_esprit/esprit26_4.xml similarity index 97% rename from data/levels/enigma_esprit/esprit26_3.xml rename to data/levels/enigma_esprit/esprit26_4.xml index 8c4974988..ae531470c 100644 --- a/data/levels/enigma_esprit/esprit26_3.xml +++ b/data/levels/enigma_esprit/esprit26_4.xml @@ -3,7 +3,7 @@ - + Copyright © 2003 Sven Siggelkow diff --git a/data/levels/enigma_esprit/index.xml b/data/levels/enigma_esprit/index.xml index e2a2387ea..84a0e3645 100644 --- a/data/levels/enigma_esprit/index.xml +++ b/data/levels/enigma_esprit/index.xml @@ -31,7 +31,7 @@ - + From 1cbb35b58733b5bb57611358d1e5b914d1a8c03b Mon Sep 17 00:00:00 2001 From: Hendrik Radke Date: Fri, 7 Jun 2024 15:04:04 +0200 Subject: [PATCH 3/4] fix score in index --- data/levels/enigma_esprit/index.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/levels/enigma_esprit/index.xml b/data/levels/enigma_esprit/index.xml index 84a0e3645..28a04c9c4 100644 --- a/data/levels/enigma_esprit/index.xml +++ b/data/levels/enigma_esprit/index.xml @@ -31,7 +31,7 @@ - + From b01f45d57c8b2ed44dba1c8220cad98dac57c17b Mon Sep 17 00:00:00 2001 From: HendrikR Date: Thu, 13 Feb 2025 15:02:02 +0100 Subject: [PATCH 4/4] esprit26: add timer to close door; difficulty levels --- data/levels/enigma_esprit/esprit26_4.xml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/data/levels/enigma_esprit/esprit26_4.xml b/data/levels/enigma_esprit/esprit26_4.xml index ae531470c..5cd908ea5 100644 --- a/data/levels/enigma_esprit/esprit26_4.xml +++ b/data/levels/enigma_esprit/esprit26_4.xml @@ -20,7 +20,7 @@ ti["."] = {"it_seed"} ti["S"] = {"st_switch_black", target="get_money"} ti["G"] = {"st_lightglass"} ti["|"] = {"st_door", name="doors#", flavor="c"} -ti["C"] = {"st_coinslot", interval_m=12, target="counter", action="signal"} +ti["C"] = {"st_coinslot", interval_m=cond(wo["IsDifficult"], 6, 12), target="counter", action="signal"} ti["@"] = {"#ac_marble_black"} wo(ti, " ", { @@ -38,10 +38,15 @@ wo(ti, " ", { "# # #", "#######################################"}) -wo:add({"ot_counter", "counter", state=0, target="doors#*", action_8="open"}) +-- trigger: open door when all 8 coinslots have a coin +wo:add({"ot_counter", "counter", state=0, target={"doors#*", "door_timer"}, action_8={"open", "signal"}}) +-- trigger: close door 6s after opening +wo:add({"ot_timer", "door_timer", target="doors#*", interval=cond(wo["IsDifficult"], 4, 6), loop=false, state=OFF, action="close"}) +-- get up to 8 coins from the automaton in the corner. local reserve = 8 function get_money() + -- make sure you don't lose a coin by accidentally hitting the switch twice if not it(po(16,1)):exists() then if reserve > 0 then reserve = reserve -1