Quellcode der Dragonslayer-Edition
Quellcode der Dragonslayer-Edition: 0.9.7(DS V3) Ithil-Edition


Anmerkung: Dies ist nur ein Auszug aus dem Source. Ein etwas älteres, abgespecktes Release der Dragonslayer-Edition ist für jeden Interessenten frei zum Download verfügbar. Was wir uns unbedingt verbitten, ist Diebstahl unserer Arbeit ohne Nennung des Copyrights.
Falls beim Lesen des Source ein Bug entdeckt werden sollte, bitten wir um sofortige Meldung per Anfrage!


./train.php

zurück
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
206:
207:
208:
209:
210:
211:
212:
213:
214:
215:
216:
217:
218:
219:
220:
221:
222:
223:
224:
225:
226:
227:
228:
229:
230:
231:
232:
233:
234:
235:
236:
237:
238:
239:
240:
241:
242:
243:
244:
245:
246:
247:
248:
249:
250:
251:
252:
253:
254:
255:
256:
257:
258:
259:
260:
261:
262:
263:
264:
265:
266:
267:
268:
269:
270:
271:
272:
273:
274:
275:
276:
277:
278:
279:
280:
281:
282:
283:
284:
285:
286:
287:
288:
289:
290:
291:
292:
293:
294:
295:
296:
297:
298:
299:
300:
301:
302:
303:
304:
305:
306:
307:
308:
309:
310:
311:
312:
313:
314:
315:
316:
317:
318:
319:
320:
321:
322:
323:
324:
325:
326:
327:
328:
329:
330:
331:
332:
333:
334:
335:
336:
337:
338:
339:
340:
341:
342:
343:
344:
345:
346:
347:
348:
349:
350:
351:
352:
353:
354:
355:
356:
357:
358:
359:
360:
361:
362:
363:
364:
365:
366:
367:
368:
369:
370:
371:
372:
373:
374:
375:
376:
377:
378:
379:
380:
381:
382:
383:
384:
385:
386:
387:
388:
389:
390:
391:
392:
393:
394:
395:
396:
397:
398:
399:
400:
401:
402:
403:
404:
405:
406:
407:
408:
409:
<?php

// 14072004

require_once 'common.php';
checkday();
page_header('Blusprings Trainingslager für Krieger');

function 
train_navi () {
    global 
$session$access_control;

    if(
$session['user']['level'] < 15) {
        
addnav('Meister befragen','train.php?op=question');
        
addnav('Meister herausfordern','train.php?op=challenge');
    }
    else 
    {
        
addnav('Meister befragen','train.php?op=bosslist');
    }

    if(
$session['user']['dragonkills'] >= 1) {
        
addnav('Mehr Training');
        if(
$session['user']['dragonkills'] >= 10) {
            if(
$session['user']['turns'] >= 6) {
                
addnav('1 Schlossrunde (gib '.getsetting('wk_castle_turns',6).' Waldkämpfe)','train.php?op=change&what=turns');
            }
            if(
$session['user']['castleturns']) {
                
addnav(getsetting('castle_turns_wk',4).' Waldkämpfe (gib 1 Schlossrunde)','train.php?op=change&what=castleturns');
            }
        }
        if(
$session['user']['dragonkills'] >= 4) {
            
addnav('V?Zum Virgator','virgator.php?op=eingang');
        }
        
addnav('R?Raufen','tussle.php');
        if(
$session['user']['dragonkills'] >= 15) {
            
addnav('Kampftraining','train.php?op=explore');
        }
        
addnav('S?Kampf-Simulator','battlesimulator.php');
        
    }
    
    
addnav('Zurück');
    
addnav('Zurück zum Dorf','village.php');
    
    if (
$access_control->su_check(access_control::SU_RIGHT_SULVL) && $session['user']['level']<15) {
        
addnav('Mod-Aktionen');
        if(
$_GET['su_op']=='cheat')
        {
            
$session['daily']['su_cheatbuttons']=1;
        }
        if(
$session['daily']['su_cheatbuttons'])
        {
            
addnav('Superuser Level erhöhen','train.php?op=challenge&victory=1',false,false,false,false);
        }
        else
        {
            
addnav('Funktionen einblenden','train.php?su_op=cheat',false,false,false,false);
        }
    }
}

function 
check_additional_nav_preconditions($str_name)
{
    global 
$session;
    switch(
$str_name)
    {
        case 
'jormungandr':
            return (
item_count('owner = "'.$session['user']['acctid'].'" AND tpl_id = "trph"') >);
            break;
        
        case 
'nidhoggr':
            return 
$session['user']['exchangequest'] > 28;
            break;
        
        case 
'lichking':
            return 
item_count('owner='.$session['user']['acctid'].' AND tpl_id="analloni_s"  AND deposit1=0')>0;
            break;
        
        case 
'huntgod':
            
$rowe=user_get_aei('hunterlevel');
            return (
$rowe['hunterlevel']==6);
            break;
        
        default:
            return(
2);
            break;
        
    }
}

output('`c`b`IBlusprings Trainingslager für Krieger`0`b`c`n');
$sql 'SELECT * FROM masters WHERE creaturelevel = '.$session['user']['level'];
$result db_query($sql);
$master['creaturename']='Bluespring';
if (
db_num_rows($result) > 0){
    
$master db_fetch_assoc($result);
    if (
$master['creaturename'] == 'Gadriel the Elven Ranger' && $session['user']['race'] == 'elf') {
        
$master['creaturewin'] = 'Sowas nennt sich Elf?? Halb-Elf höchstens! Komm wieder, wenn du mehr trainiert hast.';
        
$master['creaturelose'] = 'Es ist nur passend, dass ein anderer Elf sich mit mir messen konnte. Du machst gute Fortschritte.';
    }

    
$exprequiredget_exp_required($session['user']['level'],$session['user']['dragonkills']);
}
    
if (
$_GET['op']==''){
    if(
$session['user']['level']<15){
        
output('Der Klang von Kampf umfängt dich. Das Geklirr von Waffen in mächtigen Kämpfen lässt dein Kriegerherz höher schlagen. 
        `nDas alte Gebäude hinter dem Übungsplatz ist die große Akademie der geheimen Künste.
        `n`nDein Meister ist `^'
.$master['creaturename'].'`0.');
    }
    else{
        
output('Du bummelst über den Übungsplatz. Jüngere Krieger drängen sich zusammen und deuten auf dich, als du vorüber läufst. Du kennst diesen Platz gut. Bluspring grüßt dich und du gibst ihr einen starken Händedruck. Außer Erinnerungen gibt es hier nichts mehr für dich. Du bleibst noch eine Weile und siehst den jungen Kriegern beim Training zu, bevor du zum Dorf zurückkehrst.');
    }
    
train_navi();
}
        
else if(
$_GET['op']=='challenge'){ //Meister herausfordern
    
if ($_GET['victory'])
    {
        
$bool_superuser_levelup true;
        
$victory=true;
        
$defeat=false;
        
        
debuglog('Nutzte den Superuser-Button im Trainingslager');
        
        if (
$session['user']['experience'] < $exprequired)
        {
            
$session['user']['experience'] = $exprequired;
        }
        if (
$session['user']['seenmaster']==2)
        {
            
$session['user']['seenmaster']=1;
        }
        else
        {
            
$session['user']['seenmaster']=0;
        }
        
//train_navi();
    
}
    if (
$session['user']['seenmaster']>=&& !$_GET['auto']){
        
output('Du bist der Meinung, dass du heute vielleicht schon genug von deinem Meister hast. Die Lektion, die du heute gelernt hast, hält dich davon ab, dich nochmal so bereitwillig einer derartigen Demütigung zu unterwerfen.');
        
train_navi();
        
    }
    else{
        if (!
$session['user']['prefs']['nosounds'])
        {
            
output("<embed src=\"media/bigbong.wav\" width=10 height=10 autostart=true loop=false hidden=true volume=100>",true);
        }
        if (
getsetting('multimaster',1)==&& $session['user']['seenmaster']!=2
        {
            
$session['user']['seenmaster'] = 1;
        }
        if (
$session['user']['experience']>=$exprequired){
                                            
            
$changeat e_rand(2min($session['user']['dragonkills'] * 0.32));
            
$changedef e_rand(2min($session['user']['dragonkills'] * 0.32));
            
$changehp e_rand(2,12);
                                            
            
$atkflux = (int)$session['user']['attack']*0.9+0.1*$changeat;
            
$defflux = (int)$session['user']['defence']*0.9+0.1*$changedef;
            
$hpflux = (int)($session['user']['maxhitpoints']*0.9+0.1*$changehp);
            
$master['creatureattack']=$atkflux;
            
$master['creaturedefense']=$defflux;
            
$master['creaturehealth']=$hpflux;
            
$session['user']['badguy']=createstring($master);

            
$battle=true;
            if (
$victory) {
                
$badguy createarray($session['user']['badguy']);
                
output('Mit einem Wirbelsturm aus Schlägen schlägst du deinen Meister nieder.`n');
                
//train_navi();
            
}
        }
        else{
            
output('Du machst dich mit '.$session['user']['weapon'].'`0 und '.$session['user']['armor'].'`0 bereit und näherst dich Meister `^'.$master['creaturename'].'`0.
            `n`nEine kleine Menge Zuschauer hat sich versammelt und du bemerkst das Grinsen in ihren Gesichtern. Aber du fühlst dich selbstsicher. Du verneigst dich vor `^'
.$master['creaturename'].'`0 und führst einen perfekten Drehangriff aus, nur um zu bemerken, dass du NICHTS in den Händen hast!  `^'.$master['creaturename'].'`0 steht vor dir - mit deiner Waffe in der Hand. Kleinlaut nimmst du '.$session['user']['weapon'].'`0 entgegen und schleichst unter dem schallenden Gelächter der Zuschauer vom Trainingsplatz.');
            
$session['user']['seenmaster']=1;
            
train_navi();
        }
    }
}
    
else if(
$_GET['op']=='question'){ //Meister befragen
    
output('Furchtsam näherst du dich `^'.$master['creaturename'].'`0, um ihn zu fragen, ob du bereits in der selben Klasse wie er kämpfst.');
    if(
$session['user']['experience']>=$exprequired){
        
output('`n`n`^'.$master['creaturename'].'`0 sagt: "Gee, deine Muskeln werden ja größer als meine..."');
    }
    else{
        
output('`n`n`^'.$master['creaturename'].'`0  stellt fest, dass du noch mindestens `%'.($exprequired-$session['user']['experience']).'`0 Erfahrungspunkte mehr brauchst, bevor du bereit bist, ihn zu einem Kampf herauszufordern.');
    }
    if (
$session['user']['reputation']>20
    {
        
output('`nAußerdem ist `^'.$master['creaturename'].'`0 von deinem ausgezeichneten Ruf begeistert.');
    }
    if (
$session['user']['reputation']<-20)
    {
        
output('`n`^'.$master['creaturename'].'`0 zeigt sich sehr enttäuscht von deinem Verhalten als Kämpfer in der Welt.');
    }
    
    
train_navi();
}

else if(
$_GET['op']=='bosslist')
{
    include_once(
LIB_PATH.'boss.lib.php');
    
$str_out='Du fragst `^'.$master['creaturename'].'`0, mit wem du dich nun messen könntest.
    `n`^'
.$master['creaturename'].'`0 überreicht dir eine Liste und sagt: "Nun, als ein mächtiger Krieger, der du bist könntest du dir Ruhm und Ehre verdienen, wenn du eine dieser Kreaturen besiegst, die sich in den Wäldern um '.getsetting('townname','Atrahor').' aufhalten."
    `nDu schaust auf die Liste und siehst:
    `n'
;
    foreach(
$g_arr_boss as $str_name => $val)
    {
        if(
            
$g_arr_boss[$str_name]['enabled'] == true &&
            
//Nur alle dk_delta Dragonkills anzeigen
            
$session['user']['dragonkills'] % $g_arr_boss[$str_name]['dk_delta'] == &&
            
//Mindest DK Zahl
            
$session['user']['dragonkills'] >= $g_arr_boss[$str_name]['min_dk'] &&
            
//Mindest EXP
            
$session['user']['experience'] >= $g_arr_boss[$str_name]['min_exp'] &&
            
//Mehrere Angriffe gegen den Drachen am Tag erlaubt
            
($session['user']['seendragon'] == || $g_arr_boss[$str_name]['multiple_challenge'] === true)
            )
        {
            
//Wenn es zusätzliche Bedingungen für die Bossnav gibt
            //Funktions-Code aus den Modulen ist in der check-Funktion zusammengefasst, wenn benötigt und nicht vorhanden kommt Hinweistext
            
$extra=true;
            if(
$g_arr_boss[$str_name]['additional_nav_preconditions'] == true)
            {
                
$extra=check_additional_nav_preconditions($str_name);
            }
            if(
$extra)
            {
                
$str_out.='`n'.$g_arr_boss[$str_name]['name'];
                if(
$extra===2//Gegner fehlt in der Check-Funktion
                
{
                    
$str_out.=' (kann weitere Bedingungen erfordern)';
                }
            }
        }
    }
    
$str_out.='`n`nWo genau sich diese Kreaturen aufhalten kann dir `^'.$master['creaturename'].'`0 allerdings auch nicht sagen.';
    
output($str_out);
    
train_navi();
}

else if(
$_GET['op']=='autochallenge'){ //Gegen den Meister antreten
    
addnav('Gegen den Meister antreten','train.php?op=challenge&auto=1');
    
output('`^'.$master['creaturename'].'`0 ist deine Tapferkeit als Krieger zu Ohren gekommen und er hat Gerüchte gehört, dass du glaubst, 
    du bist so viel mächtiger als er, dass du nicht einmal gegen ihn kämpfen müsstest, um irgendetwas zu beweisen. Das hat sein Ego 
    verständlicherweise verletzt. So hat er sich aufgemacht, dich zu finden.  `^'
.$master['creaturename'].'`0 fordert einen sofortigen 
    Kampf von dir und dein eigener Stolz hindert dich daran, seine Forderung abzulehnen.'
);
    if (
$session['user']['hitpoints']<$session['user']['maxhitpoints']){
        
output('`n`nAls fairer Kämpfer gibt dir dein Meister vor dem Kampf einen Heiltrank.');
        
$session['user']['hitpoints']=$session['user']['maxhitpoints'];
    }
    
$session['user']['reputation']-=2;
    if (
$session['user']['seenmaster']==1$session['user']['seenmaster']=2;
    
//addnews("`3{$session['user']['name']}`3 wurde von Meister `^{$master['creaturename']}`3 wegen Überheblichkeit gejagt und gestellt.");
}

else if(
$_GET['op'] == 'change') { //Schlossrunden tauschen
    
    
if($_GET['what'] == 'castleturns') {
        
$session['user']['castleturns']--;
        
$session['user']['turns']+=getsetting('castle_turns_wk',4);
        
output('Du entschließt dich, die Zeit für das Schloss sinnvoller zu nutzen und erhältst '.getsetting('castle_turns_wk',4).' Waldkämpfe!');
    }    
    else {
        
$session['user']['castleturns']++;
        
$session['user']['turns']-=getsetting('wk_castle_turns',6);
        
output('Nachdem du auf einige Minotauruspuppen eingeprügelt und dich im Umgang mit Feen geübt hast, bekommst du schließlich eine Schlossrunde!');
    }
    
addnav('T?Zurück zum Trainingslager','train.php');
    
addnav('Zurück zum Dorf','village.php');
}

else if(
$_GET['op'] == 'explore'//Erfahrung kaufen Start
{
    
output('Du fragst deinen Meister `^'.$master['creaturename'].'`0 ob er nicht etwas Zeit hätte um dich privat im Kampf zu unterrichten.`n');
    if (
$session['user']['turns'] < 1)
    {
        
output("`n`n`4Leider bist du schon zu müde zum Trainieren.");
    }
    else
    {
        
output("Wie lange willst du trainieren? `7(0 oder keine Eingabe = alle WK");
        
output("<form action='train.php?op=explore2' method='POST'><input name='eround' id='eround'><input type='submit' class='button' value='Runden trainieren'></form>
        "
.focus_form_element('eround')
        ,
true);
        
//output("<script language='JavaScript'>document.getElementById('eround').focus();</script>",true);
        
addnav("","train.php?op=explore2");
    }
    
addnav('T?Zurück zum Trainingslager','train.php');
    
addnav('Zurück zum Dorf','village.php');
}
else if (
$_GET['op'] == 'explore2'//Erfahrung kaufen
{
    
$eround abs((int)$_GET['eround'] + (int)$_POST['eround']);
    if (
$session['user']['turns'] <= $eround || ($eround==&& $session['user']['turns'] <= 10))
    {
        
$eround $session['user']['turns'];
    }
    elseif (
$eround==0)
    {
        
$eround=floor($session['user']['turns'] / 10) * 10;
    }
    
$session['user']['turns']-=$eround;
    
$rand1=e_rand(12,22);
    
$rand2=e_rand(6,11);
    
$exp = (($session['user']['level']*0.49)+2)*$rand1+$rand2;
    
$totalexp = (int)($exp*$eround);
    
$session['user']['experience']+=$totalexp;
    
output($master['creaturename'].' nimmt dich hart ran, aber nach '.$eround.' Runden Training fühlst du dich '.($eround>0?'deutlich':'auch nicht').' erfahrener!`n
    `2Du hast `^'
.$totalexp.'`2 Erfahrung bekommen!`n');
    
debuglog('Hat das Kampftraining genutzt um Erfahrung zu sammeln');
    
addnav('T?Zurück zum Trainingslager','train.php');
    
addnav('Zurück zum Dorf','village.php');
}
if (
$_GET['op']=='fight'){
    
$battle=true;
}
if (
$_GET['op']=='run'){
    
output('`$Dein Stolz verbietet es dir, vor diesem Kampf wegzulaufen!`0');
    
$_GET['op']='fight';
    
$battle=true;
}
    
if(
$battle){
    if (
count($session['bufflist'])>&& is_array($session['bufflist']) || $_GET['skill']!=''){
        
$_GET['skill']='';
        
        if(!
$bool_superuser_levelup)
        {
            
$session['user']['buffbackup']=serialize($session['bufflist']);
        
            
$session['bufflist']=array();
            
output('`&Dein Stolz verbietet es dir, während des Kampfes Gebrauch von deinen besonderen Fähigkeiten zu machen!`0');
        }
    }
    if (!
$victory)
    {
        include(
'battle.php');
    }
    if (
$victory)
    {
        
$search=array(    '%s',
                        
'%o',
                        
'%p',
                        
'%X',
                        
'%x',
                        
'%w',
                        
'%W'
                    
);
        
$replace=array(    ($session['user']['sex']?'sie':'ihn'),
                        (
$session['user']['sex']?'sie':'er'),
                        (
$session['user']['sex']?'ihr':'sein'),
                        (
$session['user']['weapon']),
                        
$badguy['creatureweapon'],
                        
$badguy['creaturename'],
                        
$session['user']['name']
                    );
        
$badguy['creaturelose']=str_replace($search,$replace,$badguy['creaturelose']);

        
output('`0`b`&'.$badguy['creaturelose'].'`0`b`n
        `b`$Du hast deinen Meister '
.$badguy['creaturename'].' bezwungen!`0`b`n');
        
        
increment_level();
        
        
train_navi();
                    
        
addnews('`%'.$session['user']['name'].'`3 hat '.($session['user']['sex']?'ihren':'seinen').' Meister `%'.$badguy['creaturename'].'`3 an '.($session['user']['sex']?'ihrem':'seinem').' `^'.ordinal($session['user']['age']).'`3 Tagesabschnitt besiegt und steigt auf Level `^'.$session['user']['level'].'`3 auf!!',0,1);
        
$badguy=array();
        
$session['user']['hitpoints'] = $session['user']['maxhitpoints'];
        
$sql='SELECT acctid2,turn FROM pvp WHERE acctid1='.$session['user']['acctid'].' OR acctid2='.$session['user']['acctid'];
        
$result db_query($sql);
        
$row db_fetch_assoc($result);
        if(
$row['acctid2']==$session['user']['acctid'] && $row['turn']==0){
            
output('`n`6`bDu kannst die offene Herausforderung in der Arena jetzt nicht mehr annehmen.`b');
            
$sql 'DELETE FROM pvp WHERE acctid2='.$session['user']['acctid'].' AND turn=0';
            
db_query($sql);
        }
        
//$session[user][seenmaster]=1;
    
}
    else{
        if(
$defeat){
            
addnews('`%'.$session['user']['name'].'`5 hat Meister '.$badguy['creaturename'].' herausgefordert und verloren!`n'.get_taunt(false),0,1);
            
$session['user']['hitpoints']=$session['user']['maxhitpoints'];
            
output('`0`b`&Du wurdest von `%'.$badguy['creaturename'].'`& besiegt!`0`b`n
            `%'
.$badguy['creaturename'].'`$ hält vor dem vernichtenden Schlag inne und reicht dir stattdessen seine Hand, um dir auf die Beine zu helfen. Er verabreicht dir einen kostenlosen Heiltrank.`n
            `b`^'
.get_taunt($badguy['creaturewin']).'`0`b`n');
            
            
train_navi();
            
            
//$session[user][seenmaster]=1;
            
if ($session['user']['seenmaster']!=2
            {
                
$session['user']['seenmaster']=1;
            }
        }
        else
        {
            
fightnav(false,false);
        }
    }
}

page_footer();
?>
0.9.7(DS V3) Ithil-Edition