1
<?php
2
/**
3
 *   File functions:
4
 *   Alchemy mill - making potions
5
 *
6
 *   @name                 : alchemik.php
7
 *   @copyright            : (C) 2004,2005,2006,2007 Vallheru Team based on Gamers-Fusion ver 2.5
8
 *   @author               : thindil <thindil@users.sourceforge.net>
9
 *   @version              : 1.4
10
 *   @since                : 08.03.2007
11
 *
12
 */
13
14
//
15
//
16
//       This program is free software; you can redistribute it and/or modify
17
//   it under the terms of the GNU General Public License as published by
18
//   the Free Software Foundation; either version 2 of the License, or
19
//   (at your option) any later version.
20
//
21
//   This program is distributed in the hope that it will be useful,
22
//   but WITHOUT ANY WARRANTY; without even the implied warranty of
23
//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24
//   GNU General Public License for more details.
25
//
26
//   You should have received a copy of the GNU General Public License
27
//   along with this program; if not, write to the Free Software
28
//   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
29
//
30
// $Id: alchemik.php 949 2007-03-08 12:01:50Z thindil $
31
32
$title = 'Pracownia alchemiczna';
33
require_once('includes/head.php');
34
require_once('includes/checkexp.php');
35
require_once('includes/artisan.php');
36
37
/**
38
* Get the localization for game
39
*/
40
require_once('languages/'.$player -> lang.'/alchemik.php');
41
42
if ($player -> location != 'Altara' && $player -> location != 'Ardulith')
43
{
44
    error (ERROR);
45
}
46
47
/**
48
* Get amount of herbs from database
49
*/
50
$herb = $db -> Execute('SELECT `illani`, `illanias`, `nutari`, `dynallca` FROM `herbs` WHERE `gracz`='.$player -> id);
51
52
/**
53
* Assign variables to template
54
*/
55
if (!isset($_GET['alchemik']))
56
{
57
    $smarty -> assign(array('Awelcome' => WELCOME,
58
                            'Arecipes' => A_RECIPES,
59
                            'Amake' => A_MAKE,
60
                            'Aastral' => A_ASTRAL));
61
}
62
63
/**
64
* Buy receptures
65
*/
66
if (isset ($_GET['alchemik']) && $_GET['alchemik'] == 'przepisy')
67
{
68
    $smarty -> assign ('Recipesinfo', RECIPES_INFO);
69
    if (!isset($_GET['buy']))
70
    {
71
        showplans ('alchemy_mill', 0, $player -> lang);
72
    }
73
    else
74
    {
75
        buyplan ('alchemy_mill', $_GET['buy'], $player -> id, $player -> credits);
76
    }
77
}
78
79
/**
80
* Making potions
81
*/
82
if (isset ($_GET['alchemik']) && $_GET['alchemik'] == 'pracownia')
83
{
84
    if (!isset($_GET['rob']))
85
    {
86
        $arrname = array();
87
        $arrlevel = array();
88
        $arrid = array();
89
        $arrillani = array();
90
        $arrillanias = array();
91
        $arrnutari = array();
92
        $arrdynallca = array();
93
        $i = 0;
94
        $kuznia = $db -> Execute('SELECT * FROM `alchemy_mill` WHERE `status`=\'N\' AND `owner`='.$player -> id.' ORDER BY `level` ASC');
95
        while (!$kuznia -> EOF)
96
        {
97
            $arrname[$i] = $kuznia -> fields['name'];
98
            $arrlevel[$i] = $kuznia -> fields['level'];
99
            $arrid[$i] = $kuznia -> fields['id'];
100
            $arrillani[$i] = $kuznia -> fields['illani'];
101
            $arrillanias[$i] = $kuznia -> fields['illanias'];
102
            $arrnutari[$i] = $kuznia -> fields['nutari'];
103
            $arrdynallca[$i] = $kuznia -> fields['dynallca'];
104
            $i = $i + 1;
105
            $kuznia -> MoveNext();
106
        }
107
        $kuznia -> Close();
108
        $smarty -> assign (array('Name' => $arrname,
109
                                 'Level' => $arrlevel,
110
                                 'Id' => $arrid,
111
                                 'Illani' => $arrillani,
112
                                 'Illanias' => $arrillanias,
113
                                 'Nutari' => $arrnutari,
114
                                 'Dynallca' => $arrdynallca,
115
                                 'Alchemistinfo' => ALCHEMIST_INFO,
116
                                 'Rname' => R_NAME,
117
                                 'Rlevel' => R_LEVEL,
118
                                 'Rillani' => R_ILLANI,
119
                                 'Rillanias' => R_ILLANIAS,
120
                                 'Rnutari' => R_NUTARI,
121
                                 'Rdynallca' => R_DYNALLCA));
122
    }
123
    if (isset($_GET['dalej']))
124
    {
125
        if ($player -> hp == 0)
126
        {
127
            error (DEAD_PLAYER);
128
        }
129
        if (!ereg("^[1-9][0-9]*$", $_GET['dalej']))
130
        {
131
            error (ERROR);
132
        }
133
        $kuznia = $db -> Execute('SELECT `name` FROM `alchemy_mill` WHERE `id`='.$_GET['dalej']);
134
        $smarty -> assign (array ('Name1' => $kuznia -> fields['name'],
135
                                  'Id1' => $_GET['dalej'],
136
                                  'Pstart' => P_START,
137
                                  'Pamount' => P_AMOUNT,
138
                                  'Amake' => A_MAKE));
139
        $kuznia -> Close();
140
    }
141
    if (isset($_GET['rob']))
142
    {
143
        if (!isset($_POST['razy']) || !ereg("^[1-9][0-9]*$", $_GET['rob']) || !ereg("^[1-9][0-9]*$", $_POST['razy']))
144
        {
145
            error (ERROR);
146
        }
147
        $kuznia = $db -> Execute('SELECT * FROM `alchemy_mill` WHERE `id`='.$_GET['rob']);
148
        $rillani = ($_POST['razy'] * $kuznia -> fields['illani']);
149
        $rillanias = ($_POST['razy'] * $kuznia -> fields['illanias']);
150
        $rnutari = ($_POST['razy'] * $kuznia -> fields['nutari']);
151
        $rdynallca = ($_POST['razy'] * $kuznia -> fields['dynallca']);
152
        if ($herb -> fields['illani'] < $rillani || $herb -> fields['illanias'] < $rillanias || $herb -> fields['nutari'] < $rnutari || $herb -> fields['dynallca'] < $rdynallca)
153
        {
154
            error (NO_HERBS);
155
        }
156
        $fltEnergy = $_POST['razy'];
157
        if ($kuznia -> fields['level'] > 1)
158
        {
159
            $fltEnergy = $fltEnergy + (($kuznia -> fields['level'] * 0.2) * $_POST['razy']);
160
        }
161
        if ($player -> energy < $fltEnergy)
162
        {
163
            error (NO_ENERGY);
164
        }
165
        if ($kuznia -> fields['owner'] != $player -> id)
166
        {
167
            error (NO_RECIPE);
168
        }
169
170
        /**
171
         * Add bonuses to ability
172
         */
173
        require_once('includes/abilitybonus.php');
174
        $player -> alchemy = abilitybonus('alchemy');
175
176
        $rprzedmiot = 0;
177
        $rpd = 0;
178
        $rum = 0;
179
        $objItem = $db -> Execute('SELECT `efect`, `type`, `power` FROM `potions` WHERE `name`=\''.$kuznia -> fields['name'].'\' AND `owner`=0');
180
        $objItem2 = $db -> Execute ('SELECT `level` FROM `alchemy_mill` WHERE `name`=\''.$kuznia -> fields['name'].'\' AND `owner`=0');
181
182
        /**
183
         * Start making potions
184
         */
185
        for ($i = 1; $i <= $_POST['razy']; $i++)
186
        {
187
            if ($objItem -> fields['type'] == 'M')
188
            {
189
                $fltStat = $player -> wisdom/10;
190
            }
191
            if ($objItem -> fields['type'] == 'H')
192
            {
193
                $fltStat = $player -> inteli/10;
194
            }
195
            if ($objItem -> fields['type'] == 'P')
196
            {
197
                $fltStat = (min($player -> wisdom, $player -> inteli) + $player -> agility) / 10;
198
            }
199
            if ($objItem -> fields['type'] == 'A')
200
            {
201
                $fltStat = (min($player -> wisdom, $player -> inteli) + $player -> speed) / 10;
202
            }
203
            $intChance = (($player -> level - $objItem2 -> fields['level'])* 5) + ($player -> alchemy / 3) + $fltStat;
204
            if ( $intChance < 0)
205
            {
206
                $intChance = 0;
207
            }
208
            $intRoll = rand(1, 100);
209
            $intTmpamount = 0;
210
            while ($intRoll < $intChance)
211
            {
212
                $rprzedmiot ++;
213
                $intTmpamount ++;
214
                $intChance = $intChance - 50;
215
            }
216
            if ($intTmpamount)
217
            {
218
                $intRoll2 = rand(1,100);
219
                $strName = $kuznia -> fields['name'];
220
                $intPower = $objItem -> fields['power'];
221
                $intMaxpower = $intPower;
222
                if ($player -> clas == 'Rzemieślnik' && $intRoll2 > 89 && $objItem -> fields['type'] != 'A')
223
                {
224
                    if ($objItem -> fields['type'] != 'P')
225
                    {
226
                        $intMaxpower = $objItem -> fields['power'] * 2;
227
                        $intPower = ceil($objItem -> fields['power'] + $player -> alchemy);
228
                    }
229
                        else
230
                    {
231
                        $intMaxpower = $kuznia -> fields['level'] * 4;
232
                        $intPower = ceil($player -> alchemy / 2);
233
                    }
234
                    $strName = $kuznia -> fields['name']." (S)";
235
                    $rpd = ($rpd + ($kuznia -> fields['level'] * 10));
236
                    if ($intTmpamount > 1)
237
                    {
238
                        $rpd = ($rpd + ((($kuznia -> fields['level'] * 10) / 100) * (10 * ($intTmpamount - 1))));
239
                    }
240
                }
241
                    else
242
                {
243
                    $rpd = ($rpd + $kuznia -> fields['level']);
244
                    if ($intTmpamount > 1)
245
                    {
246
                        $rpd = ($rpd + (($kuznia -> fields['level'] / 100) * (10 * ($intTmpamount - 1))));
247
                    }
248
                    if ($objItem -> fields['type'] == 'P')
249
                    {
250
                        $intMaxpower = $kuznia -> fields['level'] * 2;
251
                        $intPower = ceil($player -> alchemy / 2);
252
                    }
253
                }
254
            }
255
                else
256
            {
257
                $rpd ++;
258
                if ($objItem -> fields['type'] != 'P')
259
                {
260
                    $intMaxpower = $objItem -> fields['power'];
261
                    $intPower = ceil($player -> alchemy);
262
                }
263
                    else
264
                {
265
                    $intMaxpower = $kuznia -> fields['level'];
266
                    $intPower = ceil($player -> alchemy / 2);
267
                }
268
                $strName = $kuznia -> fields['name']." (K)";
269
                $intTmpamount = 1;
270
                $rprzedmiot ++;
271
            }
272
            if ($intPower > $intMaxpower)
273
            {
274
                $intPower = $intMaxpower;
275
            }
276
            $test = $db -> Execute('SELECT `id` FROM `potions` WHERE `name`=\''.$strName.'\' AND `owner`='.$player -> id.' AND `status`=\'K\' AND `power`='.$intPower) or die('błąd');
277
            if (!$test -> fields['id'])
278
            {
279
                $db -> Execute('INSERT INTO potions (`owner`, `name`, `efect`, `power`, `amount`, `status`, `type`) VALUES('.$player -> id.', \''.$strName.'\', \''.$objItem -> fields['efect'].'\', '.$intPower.', '.$intTmpamount.', \'K\', \''.$objItem -> fields['type'].'\')');
280
            }
281
                else
282
            {
283
                $db -> Execute('UPDATE `potions` SET `amount`=`amount`+'.$intTmpamount.' WHERE `id`='.$test -> fields['id']);
284
            }
285
            $test -> Close();
286
            $intTmpamount = 0;
287
        }
288
        $rum = ($fltEnergy * 0.01);
289
        if ($player -> clas == 'Rzemieślnik')
290
        {
291
            $rpd = $rpd * 2;
292
            $rum = $rum * 2;
293
        }
294
        $smarty -> assign(array ('Name' => $kuznia -> fields['name'],
295
                                 'Amount' => $rprzedmiot,
296
                                 'Exp' => $rpd,
297
                                 'Ability' => $rum,
298
                                 'Youmake' => YOU_MAKE,
299
                                 'Pgain' => P_GAIN,
300
                                 'Exp_and' => EXP_AND,
301
                                 'Alchemylevel' => ALCHEMY_LEVEL));
302
        $kuznia -> Close();
303
        checkexp($player -> exp, $rpd, $player -> level, $player -> race, $player -> user, $player -> id, 0, 0, $player -> id, 'alchemia', $rum);
304
        $db -> Execute('UPDATE `herbs` SET `illani`=`illani`-'.$rillani.', `illanias`=`illanias`-'.$rillanias.', `nutari`=`nutari`-'.$rnutari.', `dynallca`=`dynallca`-'.$rdynallca.' WHERE `gracz`='.$player -> id);
305
        $db -> Execute('UPDATE `players` SET `energy`=`energy`-'.$fltEnergy.' WHERE `id`='.$player -> id);
306
    }
307
}
308
309
/**
310
 * Make astral potions
311
 */
312
if (isset($_GET['alchemik']) && $_GET['alchemik'] == 'astral')
313
{
314
    if( !isset($_GET['potion'] ))
315
    {
316
        makeastral2();
317
    }
318
    else
319
    {
320
        makeastral2($_GET['potion']);
321
    }
322
}
323
324
$herb -> Close();
325
326
/**
327
* Initialization of variables
328
*/
329
if (!isset($_GET['alchemik']))
330
{
331
    $_GET['alchemik'] = '';
332
}
333
if (!isset($_GET['buy']))
334
{
335
    $_GET['buy'] = '';
336
}
337
if (!isset($_GET['rob']))
338
{
339
    $_GET['rob'] = '';
340
}
341
if (!isset($_GET['dalej']))
342
{
343
    $_GET['dalej'] = '';
344
}
345
346
/**
347
* Assing variables and display page
348
*/
349
$smarty -> assign (array ('Alchemist' => $_GET['alchemik'],
350
    'Buy' => $_GET['buy'],
351
    'Make' => $_GET['rob'],
352
    'Back' => BACK,
353
    'Next' => $_GET['dalej']));
354
$smarty -> display ('alchemist.tpl');
355
356
require_once('includes/foot.php');
357
?>