Spielmodi

Aus EnigmaWiki

Wechseln zu: Navigation, Suche
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.

Persönliche Werkzeuge