Spielmodi
Aus EnigmaWiki
Verfügbare Sprachen: Deutsch, English, Русский
Alle Enigmalevels können 2 Betriebsmodi haben. Diese sind üblicherweise als normal oder difficult und als easy bekannt. Ein Level kann nun je nach eingestelltem Modus anders aussehen. Dies kann benutzt werden, um eine einfache und eine schwere Version anzubieten.
Allerdings haben längst nicht alle Level auch einen easy Modus und es besteht keine Verpflichtung dazu.
Ein Beispiel
Als erstes Beispiel habe ich hier das Level "Squaring the Circle" (Enigma IV # ) von Nat Pryce genommen. Man sieht sehr schön, wie im Easymode der Kreis der kleinen weissen Kugel wesentlich grösser ist, was einen deutlichen Unterschied auf die Schwierigkeit des Levels ausmacht.
enigma.ConserveLevel = FALSE create_world( 20, 13 ) draw_checkerboard_floor( "fl-rough-blue", "fl-rough-red", 0, 0, level_width, level_height ) draw_border( "st-wood_001" ) oxyd_default_flavor = "a" oxyd(3,0) oxyd(7,0) oxyd(12,0) oxyd(16,0) oxyd(3,12) oxyd(7,12) oxyd(12,12) oxyd(16,12) oxyd(0,6) oxyd(19,6) oxyd_shuffle() PLAYER_X = 10 PLAYER_Y = 6.5 player1 = set_actor( "ac-blackball", PLAYER_X, PLAYER_Y ) if not difficult then RADIUS = 2.5 -- easy mode else RADIUS = 1.5 -- difficult mode end BALL_COUNT = 20 BAND_STRENGTH = 10 BAND_LENGTH = 2*RADIUS*sin(360/(2*BALL_COUNT)) last_ball = nil first_ball = nil for theta=0,359,360/BALL_COUNT do x = PLAYER_X + RADIUS*cos(theta) y = PLAYER_Y + RADIUS*sin(theta) new_ball = set_actor( "ac-killerball", x, y, {mouseforce=1, controllers=1} ) if last_ball then AddRubberBand( last_ball, new_ball, BAND_STRENGTH, BAND_LENGTH ) else first_ball = new_ball end last_ball = new_ball end AddRubberBand( last_ball, first_ball, BAND_STRENGTH, BAND_LENGTH )
Die Theorie zum Lua-Teil
Wichtig ist im Momment wirklich nur folgender Teil:
if not difficult then RADIUS = 2.5 -- easy mode else RADIUS = 1.5 -- difficult mode end
Hier wird unterschieden, ob der Spieler gerade im difficult Modus oder im easy Modus spielt. Je nachdem wird der Radius des Kugelkreises angepasst.
In jedem Level steht die Lua Variable difficult zur verfügung. Mit ihrer Hilfe kann man entscheiden, in welchem Modus gerade gespielt wird. Daraus kann man dann die Konsequenzen ziehen und bestimmte Einstellungen abändern. Es ist auch möglich das gesammte Aussehen des Levels bis hin zu seiner grösse umzugestalten. Zum Beispiel fehlt in sämtlichen "Welcome" Levels der Fartstone, was das Level bei vielen Oxyds wesentlich einfacher macht.
Natürlich darf im Level auch mehr als ein solcher if-Block vorkommen.
Will man zum Beispiel einen Zusatz nur im difficult Modus anbieten, könnte das etwas so aussehen:
if difficult then set_stone("st-death",3,4) end
Die Theorie zum XML-Teil
Im XML-Teil des Levels muss man den Easymode ankündigen. Man muss dazu nur das Flag el:easy auf true setzten:
<el:modes el:easy="true" el:single="true" el:network="false"/>
Weitere Informationen zu den XML-Metadaten.

