Added website Docker image, bumped PHP version, added mall authentication, added experimental patcher support, improved migrations, added teasers
18
.dockerignore
Normal file
@ -0,0 +1,18 @@
|
||||
/node_modules
|
||||
/public/build
|
||||
/public/hot
|
||||
/public/storage
|
||||
/storage
|
||||
/vendor
|
||||
.env
|
||||
.env.backup
|
||||
.env.production
|
||||
.phpunit.result.cache
|
||||
Homestead.json
|
||||
Homestead.yaml
|
||||
auth.json
|
||||
npm-debug.log
|
||||
yarn-error.log
|
||||
/.fleet
|
||||
/.idea
|
||||
/.vscode
|
2
.gitignore
vendored
@ -2,7 +2,7 @@
|
||||
/node_modules
|
||||
/public/build
|
||||
/public/hot
|
||||
/public/storage
|
||||
/public/patch-data
|
||||
/storage/*.key
|
||||
/vendor
|
||||
.env
|
||||
|
@ -3,8 +3,9 @@
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Providers\RouteServiceProvider;
|
||||
use Illuminate\Foundation\Auth\VerifiesEmails;
|
||||
use Illuminate\Auth\Access\AuthorizationException;
|
||||
use Illuminate\Auth\Events\Verified;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\View\View;
|
||||
@ -22,8 +23,6 @@ class VerificationController extends Controller
|
||||
|
|
||||
*/
|
||||
|
||||
use VerifiesEmails;
|
||||
|
||||
/**
|
||||
* Where to redirect users after verification.
|
||||
*
|
||||
@ -46,8 +45,8 @@ public function __construct()
|
||||
/**
|
||||
* Show the email verification notice.
|
||||
*
|
||||
* @param Request $request
|
||||
* @return RedirectResponse|View
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\RedirectResponse|\Illuminate\View\View
|
||||
*/
|
||||
public function show(Request $request): View|RedirectResponse
|
||||
{
|
||||
@ -56,14 +55,73 @@ public function show(Request $request): View|RedirectResponse
|
||||
: view('user/registration/verification-notice');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Mark the authenticated user's email address as verified.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
|
||||
*
|
||||
* @throws \Illuminate\Auth\Access\AuthorizationException
|
||||
*/
|
||||
public function verify(Request $request)
|
||||
{
|
||||
if (! hash_equals((string) $request->route('id'), (string) $request->user()->getKey())) {
|
||||
throw new AuthorizationException;
|
||||
}
|
||||
|
||||
if (! hash_equals((string) $request->route('hash'), sha1($request->user()->getEmailForVerification()))) {
|
||||
throw new AuthorizationException;
|
||||
}
|
||||
|
||||
if ($request->user()->hasVerifiedEmail()) {
|
||||
return $request->wantsJson()
|
||||
? new JsonResponse([], 204)
|
||||
: redirect($this->redirectPath());
|
||||
}
|
||||
|
||||
if ($request->user()->markEmailAsVerified()) {
|
||||
event(new Verified($request->user()));
|
||||
}
|
||||
|
||||
if ($response = $this->verified($request)) {
|
||||
return $response;
|
||||
}
|
||||
|
||||
return $request->wantsJson()
|
||||
? new JsonResponse([], 204)
|
||||
: redirect($this->redirectPath())->with('verified', true);
|
||||
}
|
||||
|
||||
/**
|
||||
* The user has been verified.
|
||||
*
|
||||
* @param Request $request
|
||||
* @return View
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return mixed
|
||||
*/
|
||||
protected function verified(Request $request): View
|
||||
protected function verified(Request $request): mixed
|
||||
{
|
||||
return view('user/registration/registration-success');
|
||||
}
|
||||
|
||||
/**
|
||||
* Resend the email verification notification.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
|
||||
*/
|
||||
public function resend(Request $request)
|
||||
{
|
||||
if ($request->user()->hasVerifiedEmail()) {
|
||||
return $request->wantsJson()
|
||||
? new JsonResponse([], 204)
|
||||
: redirect($this->redirectPath());
|
||||
}
|
||||
|
||||
$request->user()->sendEmailVerificationNotification();
|
||||
|
||||
return $request->wantsJson()
|
||||
? new JsonResponse([], 202)
|
||||
: back()->with('resent', true);
|
||||
}
|
||||
}
|
||||
|
39
app/Http/Controllers/Mall/AuthController.php
Normal file
@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Mall;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Game\Player\Player;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class AuthController extends Controller
|
||||
{
|
||||
public function auth(Request $request): RedirectResponse
|
||||
{
|
||||
if (!$request->hasValidSignature()) {
|
||||
abort(401);
|
||||
}
|
||||
|
||||
// Validate the request data
|
||||
$validated = $request->validate([
|
||||
'pid' => 'required|exists:player.player,id',
|
||||
'sid' => 'required|int',
|
||||
]);
|
||||
|
||||
// Fetch the player's account
|
||||
$player = Player::findOrFail($validated['pid']);
|
||||
$account = $player->account;
|
||||
|
||||
// Authenticate user
|
||||
Auth::login($account);
|
||||
$request->session()->regenerate();
|
||||
|
||||
// Save user's IP address
|
||||
$account->ip = $request->ip();
|
||||
$account->saveOrFail();
|
||||
|
||||
return redirect(route('mall'));
|
||||
}
|
||||
}
|
77
app/Http/Controllers/Patch/PatchConfigController.php
Normal file
@ -0,0 +1,77 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Patch;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use SimpleXMLElement;
|
||||
|
||||
class PatchConfigController extends Controller
|
||||
{
|
||||
public function config(): \Illuminate\Http\Response
|
||||
{
|
||||
$patchMethod = 'TORRENT';
|
||||
$currentVersion = 'nightly-d19dc772db';
|
||||
$config = [];
|
||||
|
||||
if ($patchMethod == 'TORRENT') {
|
||||
$torrentConfig = [
|
||||
'port_range' => '6881~6891',
|
||||
'bandwidth_range' => '5:10:25:50:75:100:150:200:250:500:1000',
|
||||
'foreground_speed' => 0,
|
||||
'background_speed' => 10,
|
||||
'max_uploads_per_session' => 16,
|
||||
'max_connections_per_session' => 200,
|
||||
'max_uploads_per_torrent' => 4,
|
||||
'max_connections_per_torrent' => 50,
|
||||
'seeding_duration' => 21600,
|
||||
'web_seed_enable' => 1
|
||||
];
|
||||
$config = array_merge($config, $torrentConfig);
|
||||
}
|
||||
|
||||
$noticeConfig = [
|
||||
'notice_ver' => 1,
|
||||
'notice_url' => route('patch.notice'),
|
||||
'notice_width' => 680,
|
||||
'notice_height' => 500,
|
||||
];
|
||||
$config = array_merge($config, $noticeConfig);
|
||||
|
||||
$patcherConfig = [
|
||||
'cur_patcher_path' => 'TorrentPatch.exe',
|
||||
'new_patcher_path' => 'TorrentPatch.bin',
|
||||
'new_patcher_crc32' => '0x414EEA07',
|
||||
];
|
||||
$config = array_merge($config, $patcherConfig);
|
||||
|
||||
$clientConfig = [
|
||||
'run_path' => 'metin2client.bin',
|
||||
];
|
||||
$config = array_merge($config, $clientConfig);
|
||||
|
||||
// Build the XML file
|
||||
$xml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><torrent_config/>');
|
||||
foreach ($config as $item => $value)
|
||||
$xml->addAttribute($item, $value);
|
||||
|
||||
if ($patchMethod == 'CRC') {
|
||||
$patchItem = $xml->addChild('foreground_patch');
|
||||
$patchItem->addAttribute('crcpatch_url', asset('patch-data/crc'));
|
||||
$patchItem->addAttribute('crcversion', $currentVersion);
|
||||
}
|
||||
elseif ($patchMethod == 'TORRENT') {
|
||||
$patchItem = $xml->addChild('foreground_patch');
|
||||
$patchItem->addAttribute('torrent_url', asset("patch-data/torrent/{$currentVersion}.torrent"));
|
||||
|
||||
if (!empty($torrentConfig['web_seed_enable']) && $torrentConfig['web_seed_enable'] == 1)
|
||||
$patchItem->addAttribute('webseed_url', asset("patch-data/torrent/"));
|
||||
}
|
||||
|
||||
$xmlData = $xml->asXML();
|
||||
|
||||
return response($xmlData, 200, [
|
||||
'Content-Type' => 'application/xml',
|
||||
'Content-Length' => strlen($xmlData),
|
||||
]);
|
||||
}
|
||||
}
|
19
app/Http/Controllers/Patch/PatchLandingController.php
Normal file
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Patch;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\View\View;
|
||||
|
||||
class PatchLandingController extends Controller
|
||||
{
|
||||
public function home(): View
|
||||
{
|
||||
return view('patch/home');
|
||||
}
|
||||
|
||||
public function notice(): View
|
||||
{
|
||||
return view('patch/notice');
|
||||
}
|
||||
}
|
63
app/Models/Game/Common/Locale.php
Normal file
@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Game\Common;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Locale extends Model
|
||||
{
|
||||
/**
|
||||
* Indicates if the model should be timestamped.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
public $timestamps = false;
|
||||
|
||||
/**
|
||||
* The connection name for the model.
|
||||
*
|
||||
* @var string|null
|
||||
*/
|
||||
protected $connection = 'common';
|
||||
|
||||
/**
|
||||
* The table associated with the model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $table = 'locale';
|
||||
|
||||
/**
|
||||
* The primary key for the model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $primaryKey = 'mKey';
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $fillable = [
|
||||
'mKey', 'mValue'
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be hidden for serialization.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $hidden = [
|
||||
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be cast.
|
||||
*
|
||||
* @var array<string, string>
|
||||
*/
|
||||
protected $casts = [
|
||||
|
||||
];
|
||||
}
|
63
app/Models/Game/Player/Banword.php
Normal file
@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Game\Player;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Banword extends Model
|
||||
{
|
||||
/**
|
||||
* Indicates if the model should be timestamped.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
public $timestamps = false;
|
||||
|
||||
/**
|
||||
* The connection name for the model.
|
||||
*
|
||||
* @var string|null
|
||||
*/
|
||||
protected $connection = 'player';
|
||||
|
||||
/**
|
||||
* The table associated with the model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $table = 'banword';
|
||||
|
||||
/**
|
||||
* The primary key for the model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $primaryKey = 'word';
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $fillable = [
|
||||
'word'
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be hidden for serialization.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $hidden = [
|
||||
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be cast.
|
||||
*
|
||||
* @var array<string, string>
|
||||
*/
|
||||
protected $casts = [
|
||||
|
||||
];
|
||||
}
|
63
app/Models/Game/Player/ItemAttr.php
Normal file
@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Game\Player;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class ItemAttr extends Model
|
||||
{
|
||||
/**
|
||||
* Indicates if the model should be timestamped.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
public $timestamps = false;
|
||||
|
||||
/**
|
||||
* The connection name for the model.
|
||||
*
|
||||
* @var string|null
|
||||
*/
|
||||
protected $connection = 'player';
|
||||
|
||||
/**
|
||||
* The table associated with the model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $table = 'item_attr';
|
||||
|
||||
/**
|
||||
* The primary key for the model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $primaryKey = 'apply';
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $fillable = [
|
||||
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be hidden for serialization.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $hidden = [
|
||||
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be cast.
|
||||
*
|
||||
* @var array<string, string>
|
||||
*/
|
||||
protected $casts = [
|
||||
|
||||
];
|
||||
}
|
63
app/Models/Game/Player/ItemAttrRare.php
Normal file
@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Game\Player;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class ItemAttrRare extends Model
|
||||
{
|
||||
/**
|
||||
* Indicates if the model should be timestamped.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
public $timestamps = false;
|
||||
|
||||
/**
|
||||
* The connection name for the model.
|
||||
*
|
||||
* @var string|null
|
||||
*/
|
||||
protected $connection = 'player';
|
||||
|
||||
/**
|
||||
* The table associated with the model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $table = 'item_attr_rare';
|
||||
|
||||
/**
|
||||
* The primary key for the model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $primaryKey = 'apply';
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $fillable = [
|
||||
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be hidden for serialization.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $hidden = [
|
||||
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be cast.
|
||||
*
|
||||
* @var array<string, string>
|
||||
*/
|
||||
protected $casts = [
|
||||
|
||||
];
|
||||
}
|
@ -1,13 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Game;
|
||||
namespace App\Models\Game\Player;
|
||||
|
||||
use App\Models\Mall\MallItem;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
|
||||
class ItemProto extends Model
|
||||
{
|
||||
/**
|
||||
* Indicates if the model should be timestamped.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
public $timestamps = false;
|
||||
|
||||
/**
|
||||
* The connection name for the model.
|
||||
*
|
63
app/Models/Game/Player/Land.php
Normal file
@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Game\Player;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Land extends Model
|
||||
{
|
||||
/**
|
||||
* Indicates if the model should be timestamped.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
public $timestamps = false;
|
||||
|
||||
/**
|
||||
* The connection name for the model.
|
||||
*
|
||||
* @var string|null
|
||||
*/
|
||||
protected $connection = 'player';
|
||||
|
||||
/**
|
||||
* The table associated with the model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $table = 'land';
|
||||
|
||||
/**
|
||||
* The primary key for the model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $primaryKey = 'id';
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $fillable = [
|
||||
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be hidden for serialization.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $hidden = [
|
||||
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be cast.
|
||||
*
|
||||
* @var array<string, string>
|
||||
*/
|
||||
protected $casts = [
|
||||
|
||||
];
|
||||
}
|
63
app/Models/Game/Player/ObjectProto.php
Normal file
@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Game\Player;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class ObjectProto extends Model
|
||||
{
|
||||
/**
|
||||
* Indicates if the model should be timestamped.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
public $timestamps = false;
|
||||
|
||||
/**
|
||||
* The connection name for the model.
|
||||
*
|
||||
* @var string|null
|
||||
*/
|
||||
protected $connection = 'player';
|
||||
|
||||
/**
|
||||
* The table associated with the model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $table = 'object_proto';
|
||||
|
||||
/**
|
||||
* The primary key for the model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $primaryKey = 'vnum';
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $fillable = [
|
||||
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be hidden for serialization.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $hidden = [
|
||||
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be cast.
|
||||
*
|
||||
* @var array<string, string>
|
||||
*/
|
||||
protected $casts = [
|
||||
|
||||
];
|
||||
}
|
73
app/Models/Game/Player/Player.php
Normal file
@ -0,0 +1,73 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Game\Player;
|
||||
|
||||
use App\Models\Account;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
|
||||
class Player extends Model
|
||||
{
|
||||
/**
|
||||
* Indicates if the model should be timestamped.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
public $timestamps = false;
|
||||
|
||||
/**
|
||||
* The connection name for the model.
|
||||
*
|
||||
* @var string|null
|
||||
*/
|
||||
protected $connection = 'player';
|
||||
|
||||
/**
|
||||
* The table associated with the model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $table = 'player';
|
||||
|
||||
/**
|
||||
* The primary key for the model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $primaryKey = 'id';
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $fillable = [
|
||||
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be hidden for serialization.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $hidden = [
|
||||
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be cast.
|
||||
*
|
||||
* @var array<string, string>
|
||||
*/
|
||||
protected $casts = [
|
||||
|
||||
];
|
||||
|
||||
/**
|
||||
* Get the account that owns the player.
|
||||
*/
|
||||
public function account(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Account::class, 'account_id', 'id');
|
||||
}
|
||||
}
|
63
app/Models/Game/Player/RefineProto.php
Normal file
@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Game\Player;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class RefineProto extends Model
|
||||
{
|
||||
/**
|
||||
* Indicates if the model should be timestamped.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
public $timestamps = false;
|
||||
|
||||
/**
|
||||
* The connection name for the model.
|
||||
*
|
||||
* @var string|null
|
||||
*/
|
||||
protected $connection = 'player';
|
||||
|
||||
/**
|
||||
* The table associated with the model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $table = 'refine_proto';
|
||||
|
||||
/**
|
||||
* The primary key for the model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $primaryKey = 'id';
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $fillable = [
|
||||
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be hidden for serialization.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $hidden = [
|
||||
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be cast.
|
||||
*
|
||||
* @var array<string, string>
|
||||
*/
|
||||
protected $casts = [
|
||||
|
||||
];
|
||||
}
|
63
app/Models/Game/Player/Shop.php
Normal file
@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Game\Player;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Shop extends Model
|
||||
{
|
||||
/**
|
||||
* Indicates if the model should be timestamped.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
public $timestamps = false;
|
||||
|
||||
/**
|
||||
* The connection name for the model.
|
||||
*
|
||||
* @var string|null
|
||||
*/
|
||||
protected $connection = 'player';
|
||||
|
||||
/**
|
||||
* The table associated with the model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $table = 'shop';
|
||||
|
||||
/**
|
||||
* The primary key for the model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $primaryKey = 'vnum';
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $fillable = [
|
||||
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be hidden for serialization.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $hidden = [
|
||||
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be cast.
|
||||
*
|
||||
* @var array<string, string>
|
||||
*/
|
||||
protected $casts = [
|
||||
|
||||
];
|
||||
}
|
63
app/Models/Game/Player/ShopItem.php
Normal file
@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Game\Player;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class ShopItem extends Model
|
||||
{
|
||||
/**
|
||||
* Indicates if the model should be timestamped.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
public $timestamps = false;
|
||||
|
||||
/**
|
||||
* The connection name for the model.
|
||||
*
|
||||
* @var string|null
|
||||
*/
|
||||
protected $connection = 'player';
|
||||
|
||||
/**
|
||||
* The table associated with the model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $table = 'shop_item';
|
||||
|
||||
/**
|
||||
* The primary key for the model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $primaryKey = '';
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $fillable = [
|
||||
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be hidden for serialization.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $hidden = [
|
||||
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be cast.
|
||||
*
|
||||
* @var array<string, string>
|
||||
*/
|
||||
protected $casts = [
|
||||
|
||||
];
|
||||
}
|
63
app/Models/Game/Player/SkillProto.php
Normal file
@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Game\Player;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class SkillProto extends Model
|
||||
{
|
||||
/**
|
||||
* Indicates if the model should be timestamped.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
public $timestamps = false;
|
||||
|
||||
/**
|
||||
* The connection name for the model.
|
||||
*
|
||||
* @var string|null
|
||||
*/
|
||||
protected $connection = 'player';
|
||||
|
||||
/**
|
||||
* The table associated with the model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $table = 'skill_proto';
|
||||
|
||||
/**
|
||||
* The primary key for the model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $primaryKey = 'dwVnum';
|
||||
|
||||
/**
|
||||
* The attributes that are mass assignable.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $fillable = [
|
||||
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be hidden for serialization.
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $hidden = [
|
||||
|
||||
];
|
||||
|
||||
/**
|
||||
* The attributes that should be cast.
|
||||
*
|
||||
* @var array<string, string>
|
||||
*/
|
||||
protected $casts = [
|
||||
|
||||
];
|
||||
}
|
@ -7,6 +7,13 @@
|
||||
|
||||
class MallCategory extends Model
|
||||
{
|
||||
/**
|
||||
* Indicates if the model should be timestamped.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
public $timestamps = false;
|
||||
|
||||
/**
|
||||
* The connection name for the model.
|
||||
*
|
||||
|
@ -3,13 +3,20 @@
|
||||
namespace App\Models\Mall;
|
||||
|
||||
use App\Models\Enums\MallItemPricingEnum;
|
||||
use App\Models\Game\ItemProto;
|
||||
use App\Models\Game\Player\ItemProto;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class MallItem extends Model
|
||||
{
|
||||
/**
|
||||
* Indicates if the model should be timestamped.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
public $timestamps = false;
|
||||
|
||||
/**
|
||||
* The connection name for the model.
|
||||
*
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Providers;
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
|
||||
class AppServiceProvider extends ServiceProvider
|
||||
@ -19,6 +20,9 @@ public function register(): void
|
||||
*/
|
||||
public function boot(): void
|
||||
{
|
||||
//
|
||||
// WARNING: This is a workaround for the old MySQL version currently used by the project.
|
||||
// This might have unintended consequences.
|
||||
// https://stackoverflow.com/questions/42244541/laravel-migration-error-syntax-error-or-access-violation-1071-specified-key-wa
|
||||
Schema::defaultStringLength(191);
|
||||
}
|
||||
}
|
||||
|
@ -5,12 +5,13 @@
|
||||
"keywords": ["laravel", "framework"],
|
||||
"license": "MIT",
|
||||
"require": {
|
||||
"php": "^8.1",
|
||||
"php": "^8.2",
|
||||
"guzzlehttp/guzzle": "^7.2",
|
||||
"laravel/framework": "^10.10",
|
||||
"laravel/sanctum": "^3.2",
|
||||
"laravel/framework": "^11.0",
|
||||
"laravel/sanctum": "^4.0",
|
||||
"laravel/tinker": "^2.8",
|
||||
"ext-gd": "*"
|
||||
"ext-gd": "*",
|
||||
"ext-simplexml": "*"
|
||||
},
|
||||
"require-dev": {
|
||||
"fakerphp/faker": "^1.9.1",
|
||||
@ -18,7 +19,7 @@
|
||||
"laravel/pint": "^1.0",
|
||||
"laravel/sail": "^1.18",
|
||||
"mockery/mockery": "^1.4.4",
|
||||
"nunomaduro/collision": "^7.0",
|
||||
"nunomaduro/collision": "^8.1",
|
||||
"phpunit/phpunit": "^10.1",
|
||||
"spatie/laravel-ignition": "^2.0"
|
||||
},
|
||||
|
1184
composer.lock
generated
@ -70,7 +70,7 @@
|
||||
*/
|
||||
|
||||
'links' => [
|
||||
public_path('storage') => storage_path('app/public'),
|
||||
public_path('patch-data') => storage_path('app/public/patch-data'),
|
||||
],
|
||||
|
||||
];
|
||||
|
344
database/data/banword.json
Normal file
@ -0,0 +1,344 @@
|
||||
[
|
||||
{
|
||||
"word": "aryan"
|
||||
},
|
||||
{
|
||||
"word": "asshole"
|
||||
},
|
||||
{
|
||||
"word": "bastard"
|
||||
},
|
||||
{
|
||||
"word": "bastards"
|
||||
},
|
||||
{
|
||||
"word": "bitch"
|
||||
},
|
||||
{
|
||||
"word": "bitches"
|
||||
},
|
||||
{
|
||||
"word": "bitching"
|
||||
},
|
||||
{
|
||||
"word": "bitchy"
|
||||
},
|
||||
{
|
||||
"word": "boob"
|
||||
},
|
||||
{
|
||||
"word": "boobie"
|
||||
},
|
||||
{
|
||||
"word": "boobies"
|
||||
},
|
||||
{
|
||||
"word": "boobs"
|
||||
},
|
||||
{
|
||||
"word": "booby"
|
||||
},
|
||||
{
|
||||
"word": "boobys"
|
||||
},
|
||||
{
|
||||
"word": "bullshit"
|
||||
},
|
||||
{
|
||||
"word": "bullshitter"
|
||||
},
|
||||
{
|
||||
"word": "bullshitters"
|
||||
},
|
||||
{
|
||||
"word": "bullshitting"
|
||||
},
|
||||
{
|
||||
"word": "chickenshit"
|
||||
},
|
||||
{
|
||||
"word": "chickenshits"
|
||||
},
|
||||
{
|
||||
"word": "clit"
|
||||
},
|
||||
{
|
||||
"word": "cock"
|
||||
},
|
||||
{
|
||||
"word": "cockhead"
|
||||
},
|
||||
{
|
||||
"word": "cocks"
|
||||
},
|
||||
{
|
||||
"word": "cocksuck"
|
||||
},
|
||||
{
|
||||
"word": "cocksucker"
|
||||
},
|
||||
{
|
||||
"word": "cocksucking"
|
||||
},
|
||||
{
|
||||
"word": "cumming"
|
||||
},
|
||||
{
|
||||
"word": "cunt"
|
||||
},
|
||||
{
|
||||
"word": "cuntree"
|
||||
},
|
||||
{
|
||||
"word": "cuntry"
|
||||
},
|
||||
{
|
||||
"word": "cunts"
|
||||
},
|
||||
{
|
||||
"word": "dipshit"
|
||||
},
|
||||
{
|
||||
"word": "dipshits"
|
||||
},
|
||||
{
|
||||
"word": "dumbfuck"
|
||||
},
|
||||
{
|
||||
"word": "dumbfucks"
|
||||
},
|
||||
{
|
||||
"word": "dumbshit"
|
||||
},
|
||||
{
|
||||
"word": "dumbshits"
|
||||
},
|
||||
{
|
||||
"word": "fag"
|
||||
},
|
||||
{
|
||||
"word": "faggot"
|
||||
},
|
||||
{
|
||||
"word": "faggots"
|
||||
},
|
||||
{
|
||||
"word": "faggy"
|
||||
},
|
||||
{
|
||||
"word": "fags"
|
||||
},
|
||||
{
|
||||
"word": "fuck"
|
||||
},
|
||||
{
|
||||
"word": "fucka"
|
||||
},
|
||||
{
|
||||
"word": "fucke"
|
||||
},
|
||||
{
|
||||
"word": "fucked"
|
||||
},
|
||||
{
|
||||
"word": "fucken"
|
||||
},
|
||||
{
|
||||
"word": "fucker"
|
||||
},
|
||||
{
|
||||
"word": "fuckers"
|
||||
},
|
||||
{
|
||||
"word": "fuckface"
|
||||
},
|
||||
{
|
||||
"word": "fuckhead"
|
||||
},
|
||||
{
|
||||
"word": "fuckheads"
|
||||
},
|
||||
{
|
||||
"word": "fuckhed"
|
||||
},
|
||||
{
|
||||
"word": "fuckin"
|
||||
},
|
||||
{
|
||||
"word": "fucking"
|
||||
},
|
||||
{
|
||||
"word": "fucks"
|
||||
},
|
||||
{
|
||||
"word": "fuckup"
|
||||
},
|
||||
{
|
||||
"word": "fuckups"
|
||||
},
|
||||
{
|
||||
"word": "fukk"
|
||||
},
|
||||
{
|
||||
"word": "fukka"
|
||||
},
|
||||
{
|
||||
"word": "goniff"
|
||||
},
|
||||
{
|
||||
"word": "heb"
|
||||
},
|
||||
{
|
||||
"word": "hebe"
|
||||
},
|
||||
{
|
||||
"word": "hebes"
|
||||
},
|
||||
{
|
||||
"word": "kike"
|
||||
},
|
||||
{
|
||||
"word": "kikes"
|
||||
},
|
||||
{
|
||||
"word": "kunt"
|
||||
},
|
||||
{
|
||||
"word": "kuntree"
|
||||
},
|
||||
{
|
||||
"word": "kuntry"
|
||||
},
|
||||
{
|
||||
"word": "kunts"
|
||||
},
|
||||
{
|
||||
"word": "motherfuck"
|
||||
},
|
||||
{
|
||||
"word": "motherfucken"
|
||||
},
|
||||
{
|
||||
"word": "motherfucker"
|
||||
},
|
||||
{
|
||||
"word": "motherfuckers"
|
||||
},
|
||||
{
|
||||
"word": "motherfuckin"
|
||||
},
|
||||
{
|
||||
"word": "motherfucking"
|
||||
},
|
||||
{
|
||||
"word": "nazi"
|
||||
},
|
||||
{
|
||||
"word": "nigga"
|
||||
},
|
||||
{
|
||||
"word": "niggah"
|
||||
},
|
||||
{
|
||||
"word": "niggahs"
|
||||
},
|
||||
{
|
||||
"word": "niggard"
|
||||
},
|
||||
{
|
||||
"word": "niggardly"
|
||||
},
|
||||
{
|
||||
"word": "niggas"
|
||||
},
|
||||
{
|
||||
"word": "niggaz"
|
||||
},
|
||||
{
|
||||
"word": "nigger"
|
||||
},
|
||||
{
|
||||
"word": "niggers"
|
||||
},
|
||||
{
|
||||
"word": "penis"
|
||||
},
|
||||
{
|
||||
"word": "piss"
|
||||
},
|
||||
{
|
||||
"word": "porn"
|
||||
},
|
||||
{
|
||||
"word": "porno"
|
||||
},
|
||||
{
|
||||
"word": "pornography"
|
||||
},
|
||||
{
|
||||
"word": "pussy"
|
||||
},
|
||||
{
|
||||
"word": "schlimazel"
|
||||
},
|
||||
{
|
||||
"word": "schlimiel"
|
||||
},
|
||||
{
|
||||
"word": "shit"
|
||||
},
|
||||
{
|
||||
"word": "shitface"
|
||||
},
|
||||
{
|
||||
"word": "shitfaced"
|
||||
},
|
||||
{
|
||||
"word": "shithead"
|
||||
},
|
||||
{
|
||||
"word": "shitheads"
|
||||
},
|
||||
{
|
||||
"word": "shithed"
|
||||
},
|
||||
{
|
||||
"word": "shits"
|
||||
},
|
||||
{
|
||||
"word": "shitting"
|
||||
},
|
||||
{
|
||||
"word": "shitty"
|
||||
},
|
||||
{
|
||||
"word": "slut"
|
||||
},
|
||||
{
|
||||
"word": "sluts"
|
||||
},
|
||||
{
|
||||
"word": "slutty"
|
||||
},
|
||||
{
|
||||
"word": "titties"
|
||||
},
|
||||
{
|
||||
"word": "titty"
|
||||
},
|
||||
{
|
||||
"word": "vagina"
|
||||
},
|
||||
{
|
||||
"word": "vaginal"
|
||||
},
|
||||
{
|
||||
"word": "whore"
|
||||
},
|
||||
{
|
||||
"word": "whores"
|
||||
},
|
||||
{
|
||||
"word": "whoring"
|
||||
}
|
||||
]
|
818
database/data/item_attr.json
Normal file
@ -0,0 +1,818 @@
|
||||
[
|
||||
{
|
||||
"apply": "MAX_HP",
|
||||
"prob": "35",
|
||||
"lv1": "500",
|
||||
"lv2": "500",
|
||||
"lv3": "1000",
|
||||
"lv4": "1500",
|
||||
"lv5": "2000",
|
||||
"weapon": "0",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "0",
|
||||
"shield": "0",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "MAX_SP",
|
||||
"prob": "35",
|
||||
"lv1": "10",
|
||||
"lv2": "20",
|
||||
"lv3": "30",
|
||||
"lv4": "50",
|
||||
"lv5": "80",
|
||||
"weapon": "0",
|
||||
"body": "0",
|
||||
"wrist": "5",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "0",
|
||||
"shield": "0",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "CON",
|
||||
"prob": "11",
|
||||
"lv1": "2",
|
||||
"lv2": "4",
|
||||
"lv3": "6",
|
||||
"lv4": "8",
|
||||
"lv5": "12",
|
||||
"weapon": "5",
|
||||
"body": "0",
|
||||
"wrist": "0",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "0",
|
||||
"shield": "5",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "INT",
|
||||
"prob": "11",
|
||||
"lv1": "2",
|
||||
"lv2": "4",
|
||||
"lv3": "6",
|
||||
"lv4": "8",
|
||||
"lv5": "12",
|
||||
"weapon": "5",
|
||||
"body": "0",
|
||||
"wrist": "0",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "0",
|
||||
"shield": "5",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "STR",
|
||||
"prob": "11",
|
||||
"lv1": "2",
|
||||
"lv2": "4",
|
||||
"lv3": "6",
|
||||
"lv4": "8",
|
||||
"lv5": "12",
|
||||
"weapon": "5",
|
||||
"body": "0",
|
||||
"wrist": "0",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "0",
|
||||
"shield": "5",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "DEX",
|
||||
"prob": "11",
|
||||
"lv1": "2",
|
||||
"lv2": "4",
|
||||
"lv3": "6",
|
||||
"lv4": "8",
|
||||
"lv5": "12",
|
||||
"weapon": "5",
|
||||
"body": "0",
|
||||
"wrist": "0",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "0",
|
||||
"shield": "5",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "ATT_SPEED",
|
||||
"prob": "8",
|
||||
"lv1": "1",
|
||||
"lv2": "2",
|
||||
"lv3": "3",
|
||||
"lv4": "5",
|
||||
"lv5": "8",
|
||||
"weapon": "0",
|
||||
"body": "0",
|
||||
"wrist": "0",
|
||||
"foots": "5",
|
||||
"neck": "0",
|
||||
"head": "5",
|
||||
"shield": "0",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "MOV_SPEED",
|
||||
"prob": "18",
|
||||
"lv1": "2",
|
||||
"lv2": "4",
|
||||
"lv3": "6",
|
||||
"lv4": "10",
|
||||
"lv5": "20",
|
||||
"weapon": "0",
|
||||
"body": "0",
|
||||
"wrist": "0",
|
||||
"foots": "5",
|
||||
"neck": "0",
|
||||
"head": "0",
|
||||
"shield": "0",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "CAST_SPEED",
|
||||
"prob": "8",
|
||||
"lv1": "2",
|
||||
"lv2": "4",
|
||||
"lv3": "6",
|
||||
"lv4": "10",
|
||||
"lv5": "20",
|
||||
"weapon": "5",
|
||||
"body": "5",
|
||||
"wrist": "0",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "0",
|
||||
"shield": "0",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "HP_REGEN",
|
||||
"prob": "60",
|
||||
"lv1": "4",
|
||||
"lv2": "8",
|
||||
"lv3": "12",
|
||||
"lv4": "20",
|
||||
"lv5": "30",
|
||||
"weapon": "0",
|
||||
"body": "0",
|
||||
"wrist": "0",
|
||||
"foots": "0",
|
||||
"neck": "5",
|
||||
"head": "5",
|
||||
"shield": "0",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "SP_REGEN",
|
||||
"prob": "60",
|
||||
"lv1": "4",
|
||||
"lv2": "8",
|
||||
"lv3": "12",
|
||||
"lv4": "20",
|
||||
"lv5": "30",
|
||||
"weapon": "0",
|
||||
"body": "0",
|
||||
"wrist": "0",
|
||||
"foots": "0",
|
||||
"neck": "5",
|
||||
"head": "5",
|
||||
"shield": "0",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "POISON_PCT",
|
||||
"prob": "8",
|
||||
"lv1": "1",
|
||||
"lv2": "2",
|
||||
"lv3": "3",
|
||||
"lv4": "5",
|
||||
"lv5": "8",
|
||||
"weapon": "5",
|
||||
"body": "0",
|
||||
"wrist": "0",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "5",
|
||||
"shield": "0",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "STUN_PCT",
|
||||
"prob": "18",
|
||||
"lv1": "1",
|
||||
"lv2": "2",
|
||||
"lv3": "3",
|
||||
"lv4": "5",
|
||||
"lv5": "8",
|
||||
"weapon": "5",
|
||||
"body": "0",
|
||||
"wrist": "0",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "0",
|
||||
"shield": "0",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "SLOW_PCT",
|
||||
"prob": "35",
|
||||
"lv1": "1",
|
||||
"lv2": "2",
|
||||
"lv3": "3",
|
||||
"lv4": "5",
|
||||
"lv5": "8",
|
||||
"weapon": "5",
|
||||
"body": "0",
|
||||
"wrist": "0",
|
||||
"foots": "5",
|
||||
"neck": "0",
|
||||
"head": "0",
|
||||
"shield": "0",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "CRITICAL_PCT",
|
||||
"prob": "18",
|
||||
"lv1": "1",
|
||||
"lv2": "2",
|
||||
"lv3": "3",
|
||||
"lv4": "5",
|
||||
"lv5": "10",
|
||||
"weapon": "5",
|
||||
"body": "0",
|
||||
"wrist": "0",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "0",
|
||||
"shield": "0",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "PENETRATE_PCT",
|
||||
"prob": "30",
|
||||
"lv1": "1",
|
||||
"lv2": "2",
|
||||
"lv3": "3",
|
||||
"lv4": "5",
|
||||
"lv5": "10",
|
||||
"weapon": "5",
|
||||
"body": "0",
|
||||
"wrist": "5",
|
||||
"foots": "0",
|
||||
"neck": "5",
|
||||
"head": "0",
|
||||
"shield": "0",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "ATTBONUS_HUMAN",
|
||||
"prob": "15",
|
||||
"lv1": "1",
|
||||
"lv2": "2",
|
||||
"lv3": "3",
|
||||
"lv4": "5",
|
||||
"lv5": "10",
|
||||
"weapon": "5",
|
||||
"body": "0",
|
||||
"wrist": "5",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "5",
|
||||
"shield": "5",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "ATTBONUS_ANIMAL",
|
||||
"prob": "35",
|
||||
"lv1": "2",
|
||||
"lv2": "4",
|
||||
"lv3": "6",
|
||||
"lv4": "10",
|
||||
"lv5": "20",
|
||||
"weapon": "5",
|
||||
"body": "0",
|
||||
"wrist": "5",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "5",
|
||||
"shield": "5",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "ATTBONUS_ORC",
|
||||
"prob": "35",
|
||||
"lv1": "2",
|
||||
"lv2": "4",
|
||||
"lv3": "6",
|
||||
"lv4": "10",
|
||||
"lv5": "20",
|
||||
"weapon": "5",
|
||||
"body": "0",
|
||||
"wrist": "5",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "5",
|
||||
"shield": "5",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "ATTBONUS_MILGYO",
|
||||
"prob": "35",
|
||||
"lv1": "2",
|
||||
"lv2": "4",
|
||||
"lv3": "6",
|
||||
"lv4": "10",
|
||||
"lv5": "20",
|
||||
"weapon": "5",
|
||||
"body": "0",
|
||||
"wrist": "5",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "5",
|
||||
"shield": "5",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "ATTBONUS_UNDEAD",
|
||||
"prob": "35",
|
||||
"lv1": "2",
|
||||
"lv2": "4",
|
||||
"lv3": "6",
|
||||
"lv4": "10",
|
||||
"lv5": "20",
|
||||
"weapon": "5",
|
||||
"body": "0",
|
||||
"wrist": "5",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "5",
|
||||
"shield": "5",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "ATTBONUS_DEVIL",
|
||||
"prob": "35",
|
||||
"lv1": "2",
|
||||
"lv2": "4",
|
||||
"lv3": "6",
|
||||
"lv4": "10",
|
||||
"lv5": "20",
|
||||
"weapon": "5",
|
||||
"body": "0",
|
||||
"wrist": "5",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "5",
|
||||
"shield": "5",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "STEAL_HP",
|
||||
"prob": "50",
|
||||
"lv1": "1",
|
||||
"lv2": "2",
|
||||
"lv3": "3",
|
||||
"lv4": "5",
|
||||
"lv5": "10",
|
||||
"weapon": "0",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "0",
|
||||
"shield": "0",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "STEAL_SP",
|
||||
"prob": "50",
|
||||
"lv1": "1",
|
||||
"lv2": "2",
|
||||
"lv3": "3",
|
||||
"lv4": "5",
|
||||
"lv5": "10",
|
||||
"weapon": "0",
|
||||
"body": "5",
|
||||
"wrist": "0",
|
||||
"foots": "0",
|
||||
"neck": "5",
|
||||
"head": "5",
|
||||
"shield": "0",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "MANA_BURN_PCT",
|
||||
"prob": "18",
|
||||
"lv1": "1",
|
||||
"lv2": "2",
|
||||
"lv3": "3",
|
||||
"lv4": "5",
|
||||
"lv5": "10",
|
||||
"weapon": "0",
|
||||
"body": "0",
|
||||
"wrist": "5",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "0",
|
||||
"shield": "0",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "BLOCK",
|
||||
"prob": "10",
|
||||
"lv1": "2",
|
||||
"lv2": "4",
|
||||
"lv3": "6",
|
||||
"lv4": "10",
|
||||
"lv5": "15",
|
||||
"weapon": "0",
|
||||
"body": "0",
|
||||
"wrist": "0",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "0",
|
||||
"shield": "5",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "DODGE",
|
||||
"prob": "10",
|
||||
"lv1": "2",
|
||||
"lv2": "4",
|
||||
"lv3": "6",
|
||||
"lv4": "10",
|
||||
"lv5": "15",
|
||||
"weapon": "0",
|
||||
"body": "0",
|
||||
"wrist": "0",
|
||||
"foots": "5",
|
||||
"neck": "0",
|
||||
"head": "5",
|
||||
"shield": "0",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "RESIST_SWORD",
|
||||
"prob": "18",
|
||||
"lv1": "2",
|
||||
"lv2": "4",
|
||||
"lv3": "6",
|
||||
"lv4": "10",
|
||||
"lv5": "15",
|
||||
"weapon": "0",
|
||||
"body": "5",
|
||||
"wrist": "0",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "0",
|
||||
"shield": "0",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "RESIST_TWOHAND",
|
||||
"prob": "18",
|
||||
"lv1": "2",
|
||||
"lv2": "4",
|
||||
"lv3": "6",
|
||||
"lv4": "10",
|
||||
"lv5": "15",
|
||||
"weapon": "0",
|
||||
"body": "5",
|
||||
"wrist": "0",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "0",
|
||||
"shield": "0",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "RESIST_DAGGER",
|
||||
"prob": "18",
|
||||
"lv1": "2",
|
||||
"lv2": "4",
|
||||
"lv3": "6",
|
||||
"lv4": "10",
|
||||
"lv5": "15",
|
||||
"weapon": "0",
|
||||
"body": "5",
|
||||
"wrist": "0",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "0",
|
||||
"shield": "0",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "RESIST_BELL",
|
||||
"prob": "18",
|
||||
"lv1": "2",
|
||||
"lv2": "4",
|
||||
"lv3": "6",
|
||||
"lv4": "10",
|
||||
"lv5": "15",
|
||||
"weapon": "0",
|
||||
"body": "5",
|
||||
"wrist": "0",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "0",
|
||||
"shield": "0",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "RESIST_FAN",
|
||||
"prob": "18",
|
||||
"lv1": "2",
|
||||
"lv2": "4",
|
||||
"lv3": "6",
|
||||
"lv4": "10",
|
||||
"lv5": "15",
|
||||
"weapon": "0",
|
||||
"body": "5",
|
||||
"wrist": "0",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "0",
|
||||
"shield": "0",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "RESIST_BOW",
|
||||
"prob": "18",
|
||||
"lv1": "2",
|
||||
"lv2": "4",
|
||||
"lv3": "6",
|
||||
"lv4": "10",
|
||||
"lv5": "15",
|
||||
"weapon": "0",
|
||||
"body": "5",
|
||||
"wrist": "0",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "0",
|
||||
"shield": "0",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "RESIST_FIRE",
|
||||
"prob": "18",
|
||||
"lv1": "2",
|
||||
"lv2": "4",
|
||||
"lv3": "6",
|
||||
"lv4": "10",
|
||||
"lv5": "15",
|
||||
"weapon": "0",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "5",
|
||||
"shield": "0",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "RESIST_ELEC",
|
||||
"prob": "18",
|
||||
"lv1": "2",
|
||||
"lv2": "4",
|
||||
"lv3": "6",
|
||||
"lv4": "10",
|
||||
"lv5": "15",
|
||||
"weapon": "0",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "5",
|
||||
"shield": "0",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "RESIST_MAGIC",
|
||||
"prob": "25",
|
||||
"lv1": "2",
|
||||
"lv2": "4",
|
||||
"lv3": "6",
|
||||
"lv4": "10",
|
||||
"lv5": "15",
|
||||
"weapon": "0",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "5",
|
||||
"shield": "0",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "RESIST_WIND",
|
||||
"prob": "18",
|
||||
"lv1": "2",
|
||||
"lv2": "4",
|
||||
"lv3": "6",
|
||||
"lv4": "10",
|
||||
"lv5": "15",
|
||||
"weapon": "0",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "5",
|
||||
"shield": "0",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "REFLECT_MELEE",
|
||||
"prob": "18",
|
||||
"lv1": "1",
|
||||
"lv2": "2",
|
||||
"lv3": "3",
|
||||
"lv4": "6",
|
||||
"lv5": "10",
|
||||
"weapon": "0",
|
||||
"body": "5",
|
||||
"wrist": "0",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "0",
|
||||
"shield": "5",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "POISON_REDUCE",
|
||||
"prob": "18",
|
||||
"lv1": "1",
|
||||
"lv2": "2",
|
||||
"lv3": "3",
|
||||
"lv4": "4",
|
||||
"lv5": "5",
|
||||
"weapon": "0",
|
||||
"body": "0",
|
||||
"wrist": "0",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "0",
|
||||
"shield": "0",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "EXP_DOUBLE_BONUS",
|
||||
"prob": "10",
|
||||
"lv1": "2",
|
||||
"lv2": "4",
|
||||
"lv3": "6",
|
||||
"lv4": "8",
|
||||
"lv5": "20",
|
||||
"weapon": "0",
|
||||
"body": "0",
|
||||
"wrist": "0",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "0",
|
||||
"shield": "5",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "GOLD_DOUBLE_BONUS",
|
||||
"prob": "10",
|
||||
"lv1": "2",
|
||||
"lv2": "4",
|
||||
"lv3": "6",
|
||||
"lv4": "8",
|
||||
"lv5": "20",
|
||||
"weapon": "0",
|
||||
"body": "0",
|
||||
"wrist": "0",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "0",
|
||||
"shield": "5",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "ITEM_DROP_BONUS",
|
||||
"prob": "7",
|
||||
"lv1": "2",
|
||||
"lv2": "4",
|
||||
"lv3": "6",
|
||||
"lv4": "8",
|
||||
"lv5": "20",
|
||||
"weapon": "0",
|
||||
"body": "0",
|
||||
"wrist": "5",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "0",
|
||||
"shield": "0",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "IMMUNE_STUN",
|
||||
"prob": "3",
|
||||
"lv1": "1",
|
||||
"lv2": "1",
|
||||
"lv3": "1",
|
||||
"lv4": "1",
|
||||
"lv5": "1",
|
||||
"weapon": "0",
|
||||
"body": "0",
|
||||
"wrist": "0",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "0",
|
||||
"shield": "1",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "IMMUNE_SLOW",
|
||||
"prob": "3",
|
||||
"lv1": "1",
|
||||
"lv2": "1",
|
||||
"lv3": "1",
|
||||
"lv4": "1",
|
||||
"lv5": "1",
|
||||
"weapon": "0",
|
||||
"body": "0",
|
||||
"wrist": "0",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "0",
|
||||
"shield": "1",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "ATT_GRADE_BONUS",
|
||||
"prob": "9",
|
||||
"lv1": "5",
|
||||
"lv2": "10",
|
||||
"lv3": "15",
|
||||
"lv4": "30",
|
||||
"lv5": "50",
|
||||
"weapon": "0",
|
||||
"body": "5",
|
||||
"wrist": "0",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "0",
|
||||
"shield": "0",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "RESIST_ICE",
|
||||
"prob": "18",
|
||||
"lv1": "6",
|
||||
"lv2": "8",
|
||||
"lv3": "10",
|
||||
"lv4": "12",
|
||||
"lv5": "15",
|
||||
"weapon": "0",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "5",
|
||||
"shield": "0",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "RESIST_EARTH",
|
||||
"prob": "18",
|
||||
"lv1": "6",
|
||||
"lv2": "8",
|
||||
"lv3": "10",
|
||||
"lv4": "12",
|
||||
"lv5": "15",
|
||||
"weapon": "0",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "5",
|
||||
"shield": "0",
|
||||
"ear": "0"
|
||||
},
|
||||
{
|
||||
"apply": "RESIST_DARK",
|
||||
"prob": "18",
|
||||
"lv1": "6",
|
||||
"lv2": "8",
|
||||
"lv3": "10",
|
||||
"lv4": "12",
|
||||
"lv5": "15",
|
||||
"weapon": "0",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "0",
|
||||
"neck": "0",
|
||||
"head": "5",
|
||||
"shield": "0",
|
||||
"ear": "0"
|
||||
}
|
||||
]
|
342
database/data/item_attr_rare.json
Normal file
@ -0,0 +1,342 @@
|
||||
[
|
||||
{
|
||||
"apply": "MAX_HP",
|
||||
"prob": "1",
|
||||
"lv1": "500",
|
||||
"lv2": "500",
|
||||
"lv3": "500",
|
||||
"lv4": "500",
|
||||
"lv5": "500",
|
||||
"weapon": "5",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "5",
|
||||
"shield": "5",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "MAX_SP",
|
||||
"prob": "1",
|
||||
"lv1": "50",
|
||||
"lv2": "50",
|
||||
"lv3": "50",
|
||||
"lv4": "50",
|
||||
"lv5": "50",
|
||||
"weapon": "5",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "5",
|
||||
"shield": "5",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "CON",
|
||||
"prob": "1",
|
||||
"lv1": "5",
|
||||
"lv2": "5",
|
||||
"lv3": "5",
|
||||
"lv4": "5",
|
||||
"lv5": "5",
|
||||
"weapon": "5",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "5",
|
||||
"shield": "5",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "INT",
|
||||
"prob": "1",
|
||||
"lv1": "5",
|
||||
"lv2": "5",
|
||||
"lv3": "5",
|
||||
"lv4": "5",
|
||||
"lv5": "5",
|
||||
"weapon": "5",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "5",
|
||||
"shield": "5",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "STR",
|
||||
"prob": "1",
|
||||
"lv1": "5",
|
||||
"lv2": "5",
|
||||
"lv3": "5",
|
||||
"lv4": "5",
|
||||
"lv5": "5",
|
||||
"weapon": "5",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "5",
|
||||
"shield": "5",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "DEX",
|
||||
"prob": "1",
|
||||
"lv1": "5",
|
||||
"lv2": "5",
|
||||
"lv3": "5",
|
||||
"lv4": "5",
|
||||
"lv5": "5",
|
||||
"weapon": "5",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "5",
|
||||
"shield": "5",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "CRITICAL_PCT",
|
||||
"prob": "1",
|
||||
"lv1": "5",
|
||||
"lv2": "5",
|
||||
"lv3": "5",
|
||||
"lv4": "5",
|
||||
"lv5": "5",
|
||||
"weapon": "5",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "5",
|
||||
"shield": "5",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "PENETRATE_PCT",
|
||||
"prob": "1",
|
||||
"lv1": "5",
|
||||
"lv2": "5",
|
||||
"lv3": "5",
|
||||
"lv4": "5",
|
||||
"lv5": "5",
|
||||
"weapon": "5",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "5",
|
||||
"shield": "5",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "ATT_GRADE_BONUS",
|
||||
"prob": "1",
|
||||
"lv1": "50",
|
||||
"lv2": "50",
|
||||
"lv3": "50",
|
||||
"lv4": "50",
|
||||
"lv5": "50",
|
||||
"weapon": "5",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "5",
|
||||
"shield": "5",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "ATT_BONUS_TO_MONSTER",
|
||||
"prob": "1",
|
||||
"lv1": "10",
|
||||
"lv2": "10",
|
||||
"lv3": "10",
|
||||
"lv4": "10",
|
||||
"lv5": "10",
|
||||
"weapon": "5",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "5",
|
||||
"shield": "5",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "ATT_BONUS_TO_WARRIOR",
|
||||
"prob": "1",
|
||||
"lv1": "10",
|
||||
"lv2": "10",
|
||||
"lv3": "10",
|
||||
"lv4": "10",
|
||||
"lv5": "10",
|
||||
"weapon": "5",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "5",
|
||||
"shield": "5",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "ATT_BONUS_TO_ASSASSIN",
|
||||
"prob": "1",
|
||||
"lv1": "10",
|
||||
"lv2": "10",
|
||||
"lv3": "10",
|
||||
"lv4": "10",
|
||||
"lv5": "10",
|
||||
"weapon": "5",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "5",
|
||||
"shield": "5",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "ATT_BONUS_TO_SURA",
|
||||
"prob": "1",
|
||||
"lv1": "10",
|
||||
"lv2": "10",
|
||||
"lv3": "10",
|
||||
"lv4": "10",
|
||||
"lv5": "10",
|
||||
"weapon": "5",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "5",
|
||||
"shield": "5",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "ATT_BONUS_TO_SHAMAN",
|
||||
"prob": "1",
|
||||
"lv1": "10",
|
||||
"lv2": "10",
|
||||
"lv3": "10",
|
||||
"lv4": "10",
|
||||
"lv5": "10",
|
||||
"weapon": "5",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "5",
|
||||
"shield": "5",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "RESIST_WARRIOR",
|
||||
"prob": "1",
|
||||
"lv1": "5",
|
||||
"lv2": "5",
|
||||
"lv3": "5",
|
||||
"lv4": "5",
|
||||
"lv5": "5",
|
||||
"weapon": "5",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "5",
|
||||
"shield": "5",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "RESIST_ASSASSIN",
|
||||
"prob": "1",
|
||||
"lv1": "5",
|
||||
"lv2": "5",
|
||||
"lv3": "5",
|
||||
"lv4": "5",
|
||||
"lv5": "5",
|
||||
"weapon": "5",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "5",
|
||||
"shield": "5",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "RESIST_SURA",
|
||||
"prob": "1",
|
||||
"lv1": "5",
|
||||
"lv2": "5",
|
||||
"lv3": "5",
|
||||
"lv4": "5",
|
||||
"lv5": "5",
|
||||
"weapon": "5",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "5",
|
||||
"shield": "5",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "RESIST_SHAMAN",
|
||||
"prob": "1",
|
||||
"lv1": "5",
|
||||
"lv2": "5",
|
||||
"lv3": "5",
|
||||
"lv4": "5",
|
||||
"lv5": "5",
|
||||
"weapon": "5",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "5",
|
||||
"shield": "5",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "ATT_SPEED",
|
||||
"prob": "1",
|
||||
"lv1": "2",
|
||||
"lv2": "2",
|
||||
"lv3": "2",
|
||||
"lv4": "2",
|
||||
"lv5": "2",
|
||||
"weapon": "5",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "5",
|
||||
"shield": "5",
|
||||
"ear": "5"
|
||||
},
|
||||
{
|
||||
"apply": "MOV_SPEED",
|
||||
"prob": "1",
|
||||
"lv1": "8",
|
||||
"lv2": "8",
|
||||
"lv3": "8",
|
||||
"lv4": "8",
|
||||
"lv5": "8",
|
||||
"weapon": "5",
|
||||
"body": "5",
|
||||
"wrist": "5",
|
||||
"foots": "5",
|
||||
"neck": "5",
|
||||
"head": "5",
|
||||
"shield": "5",
|
||||
"ear": "5"
|
||||
}
|
||||
]
|
1946
database/data/land.json
Normal file
54
database/data/locale.json
Normal file
@ -0,0 +1,54 @@
|
||||
[
|
||||
{
|
||||
"mKey": "LANGUAGE",
|
||||
"mValue": "en"
|
||||
},
|
||||
{
|
||||
"mKey": "DB_NAME_COLUMN",
|
||||
"mValue": "locale_name"
|
||||
},
|
||||
{
|
||||
"mKey": "SKILL_POWER_BY_LEVEL_TYPE0",
|
||||
"mValue": "0 5 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 50 52 54 56 58 60 63 66 69 72 82 85 88 91 94 98 102 106 110 115 125 125 125 125 125"
|
||||
},
|
||||
{
|
||||
"mKey": "SKILL_POWER_BY_LEVEL_TYPE1",
|
||||
"mValue": "0 5 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 50 52 54 56 58 60 63 66 69 72 82 85 88 91 94 98 102 106 110 115 125 125 125 125 125"
|
||||
},
|
||||
{
|
||||
"mKey": "SKILL_POWER_BY_LEVEL_TYPE2",
|
||||
"mValue": "0 5 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 50 52 54 56 58 60 63 66 69 72 82 85 88 91 94 98 102 106 110 115 125 125 125 125 125"
|
||||
},
|
||||
{
|
||||
"mKey": "SKILL_POWER_BY_LEVEL_TYPE3",
|
||||
"mValue": "0 5 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 50 52 54 56 58 60 63 66 69 72 82 85 88 91 94 98 102 106 110 115 125 125 125 125 125"
|
||||
},
|
||||
{
|
||||
"mKey": "SKILL_POWER_BY_LEVEL_TYPE4",
|
||||
"mValue": "0 5 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 50 52 54 56 58 60 63 66 69 72 82 85 88 91 94 98 102 106 110 115 125 125 125 125 125"
|
||||
},
|
||||
{
|
||||
"mKey": "SKILL_POWER_BY_LEVEL_TYPE5",
|
||||
"mValue": "0 5 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 50 52 54 56 58 60 63 66 69 72 82 85 88 91 94 98 102 106 110 115 125 125 125 125 125"
|
||||
},
|
||||
{
|
||||
"mKey": "SKILL_POWER_BY_LEVEL_TYPE6",
|
||||
"mValue": "0 5 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 50 52 54 56 58 60 63 66 69 72 82 85 88 91 94 98 102 106 110 115 125 125 125 125 125"
|
||||
},
|
||||
{
|
||||
"mKey": "SKILL_POWER_BY_LEVEL_TYPE7",
|
||||
"mValue": "0 5 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 50 52 54 56 58 60 63 66 69 72 82 85 88 91 94 98 102 106 110 115 125 125 125 125 125"
|
||||
},
|
||||
{
|
||||
"mKey": "SKILL_DAMAGE_BY_LEVEL_UNDER_90",
|
||||
"mValue": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"
|
||||
},
|
||||
{
|
||||
"mKey": "SKILL_DAMAGE_BY_LEVEL_UNDER_45",
|
||||
"mValue": "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"
|
||||
},
|
||||
{
|
||||
"mKey": "SKILL_POWER_BY_LEVEL",
|
||||
"mValue": "0 5 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 50 52 54 56 58 60 63 66 69 72 82 85 88 91 94 98 102 106 110 115 125 125 125 125 125"
|
||||
}
|
||||
]
|
50
database/data/mall_categories.json
Normal file
@ -0,0 +1,50 @@
|
||||
[
|
||||
{
|
||||
"id": 1,
|
||||
"name": "New Items"
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"name": "Modification&New Start"
|
||||
},
|
||||
{
|
||||
"id": 3,
|
||||
"name": "Contact & Trade"
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"name": "Regeneration&Strength"
|
||||
},
|
||||
{
|
||||
"id": 5,
|
||||
"name": "Fight and Aptitude"
|
||||
},
|
||||
{
|
||||
"id": 6,
|
||||
"name": "Wedding and Marriage"
|
||||
},
|
||||
{
|
||||
"id": 7,
|
||||
"name": "Refinement"
|
||||
},
|
||||
{
|
||||
"id": 8,
|
||||
"name": "Special Items"
|
||||
},
|
||||
{
|
||||
"id": 9,
|
||||
"name": "Hairstyles"
|
||||
},
|
||||
{
|
||||
"id": 10,
|
||||
"name": "Hairstyles of Attack"
|
||||
},
|
||||
{
|
||||
"id": 11,
|
||||
"name": "Economy Packages"
|
||||
},
|
||||
{
|
||||
"id": 12,
|
||||
"name": "Dragon Mark Items"
|
||||
}
|
||||
]
|
1118
database/data/mall_items.json
Normal file
802
database/data/object_proto.json
Normal file
@ -0,0 +1,802 @@
|
||||
[
|
||||
{
|
||||
"vnum": 14013,
|
||||
"name": "weapons factory",
|
||||
"price": 20000000,
|
||||
"materials": "90010,20/90011,30/90012,20",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -213,
|
||||
"reg_2": -213,
|
||||
"reg_3": 213,
|
||||
"reg_4": 213,
|
||||
"npc": 20044,
|
||||
"group_vnum": 2,
|
||||
"dependent_group": 1
|
||||
},
|
||||
{
|
||||
"vnum": 14014,
|
||||
"name": "Armour blacksmith",
|
||||
"price": 20000000,
|
||||
"materials": "90010,20/90011,30/90012,20",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -213,
|
||||
"reg_2": -213,
|
||||
"reg_3": 213,
|
||||
"reg_4": 213,
|
||||
"npc": 20045,
|
||||
"group_vnum": 2,
|
||||
"dependent_group": 1
|
||||
},
|
||||
{
|
||||
"vnum": 14015,
|
||||
"name": "accessory factory",
|
||||
"price": 20000000,
|
||||
"materials": "90010,20/90011,30/90012,20",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -213,
|
||||
"reg_2": -213,
|
||||
"reg_3": 213,
|
||||
"reg_4": 213,
|
||||
"npc": 20046,
|
||||
"group_vnum": 2,
|
||||
"dependent_group": 1
|
||||
},
|
||||
{
|
||||
"vnum": 14043,
|
||||
"name": "diamond smelter",
|
||||
"price": 20000000,
|
||||
"materials": "90010,15/90011,20/90012,25",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -90,
|
||||
"reg_2": -100,
|
||||
"reg_3": 90,
|
||||
"reg_4": 100,
|
||||
"npc": 20060,
|
||||
"group_vnum": 3,
|
||||
"dependent_group": 1
|
||||
},
|
||||
{
|
||||
"vnum": 14045,
|
||||
"name": "fossil wood smelter",
|
||||
"price": 20000000,
|
||||
"materials": "90010,15/90011,20/90012,25",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -90,
|
||||
"reg_2": -100,
|
||||
"reg_3": 90,
|
||||
"reg_4": 100,
|
||||
"npc": 20062,
|
||||
"group_vnum": 3,
|
||||
"dependent_group": 1
|
||||
},
|
||||
{
|
||||
"vnum": 14046,
|
||||
"name": "copper smelter",
|
||||
"price": 20000000,
|
||||
"materials": "90010,15/90011,20/90012,25",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -90,
|
||||
"reg_2": -100,
|
||||
"reg_3": 90,
|
||||
"reg_4": 100,
|
||||
"npc": 20063,
|
||||
"group_vnum": 3,
|
||||
"dependent_group": 1
|
||||
},
|
||||
{
|
||||
"vnum": 14047,
|
||||
"name": "silver smelter",
|
||||
"price": 20000000,
|
||||
"materials": "90010,15/90011,20/90012,25",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -90,
|
||||
"reg_2": -100,
|
||||
"reg_3": 90,
|
||||
"reg_4": 100,
|
||||
"npc": 20064,
|
||||
"group_vnum": 3,
|
||||
"dependent_group": 1
|
||||
},
|
||||
{
|
||||
"vnum": 14048,
|
||||
"name": "gold smelter",
|
||||
"price": 20000000,
|
||||
"materials": "90010,15/90011,20/90012,25",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -90,
|
||||
"reg_2": -100,
|
||||
"reg_3": 90,
|
||||
"reg_4": 100,
|
||||
"npc": 20065,
|
||||
"group_vnum": 3,
|
||||
"dependent_group": 1
|
||||
},
|
||||
{
|
||||
"vnum": 14049,
|
||||
"name": "jade smelter",
|
||||
"price": 20000000,
|
||||
"materials": "90010,15/90011,20/90012,25",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -90,
|
||||
"reg_2": -100,
|
||||
"reg_3": 90,
|
||||
"reg_4": 100,
|
||||
"npc": 20066,
|
||||
"group_vnum": 3,
|
||||
"dependent_group": 1
|
||||
},
|
||||
{
|
||||
"vnum": 14050,
|
||||
"name": "ebony stone smelter",
|
||||
"price": 20000000,
|
||||
"materials": "90010,15/90011,20/90012,25",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -90,
|
||||
"reg_2": -100,
|
||||
"reg_3": 90,
|
||||
"reg_4": 100,
|
||||
"npc": 20067,
|
||||
"group_vnum": 3,
|
||||
"dependent_group": 1
|
||||
},
|
||||
{
|
||||
"vnum": 14051,
|
||||
"name": "pearl smelter",
|
||||
"price": 20000000,
|
||||
"materials": "90010,15/90011,20/90012,25",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -90,
|
||||
"reg_2": -100,
|
||||
"reg_3": 90,
|
||||
"reg_4": 100,
|
||||
"npc": 20068,
|
||||
"group_vnum": 3,
|
||||
"dependent_group": 1
|
||||
},
|
||||
{
|
||||
"vnum": 14052,
|
||||
"name": "platinum smelter",
|
||||
"price": 20000000,
|
||||
"materials": "90010,15/90011,20/90012,25",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -90,
|
||||
"reg_2": -100,
|
||||
"reg_3": 90,
|
||||
"reg_4": 100,
|
||||
"npc": 20069,
|
||||
"group_vnum": 3,
|
||||
"dependent_group": 1
|
||||
},
|
||||
{
|
||||
"vnum": 14053,
|
||||
"name": "crystal smelter",
|
||||
"price": 20000000,
|
||||
"materials": "90010,15/90011,20/90012,25",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -90,
|
||||
"reg_2": -100,
|
||||
"reg_3": 90,
|
||||
"reg_4": 100,
|
||||
"npc": 20070,
|
||||
"group_vnum": 3,
|
||||
"dependent_group": 1
|
||||
},
|
||||
{
|
||||
"vnum": 14054,
|
||||
"name": "amethyst smelter",
|
||||
"price": 20000000,
|
||||
"materials": "90010,15/90011,20/90012,25",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -90,
|
||||
"reg_2": -100,
|
||||
"reg_3": 90,
|
||||
"reg_4": 100,
|
||||
"npc": 20071,
|
||||
"group_vnum": 3,
|
||||
"dependent_group": 1
|
||||
},
|
||||
{
|
||||
"vnum": 14055,
|
||||
"name": "Heavens tear smelter",
|
||||
"price": 20000000,
|
||||
"materials": "90010,15/90011,20/90012,25",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -90,
|
||||
"reg_2": -100,
|
||||
"reg_3": 90,
|
||||
"reg_4": 100,
|
||||
"npc": 20072,
|
||||
"group_vnum": 3,
|
||||
"dependent_group": 1
|
||||
},
|
||||
{
|
||||
"vnum": 14061,
|
||||
"name": "Altar of Power",
|
||||
"price": 25000000,
|
||||
"materials": "90010,25/90011,25/90012,25",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -112,
|
||||
"reg_2": -298,
|
||||
"reg_3": 114,
|
||||
"reg_4": 225,
|
||||
"npc": 20077,
|
||||
"group_vnum": 4,
|
||||
"dependent_group": 1
|
||||
},
|
||||
{
|
||||
"vnum": 14062,
|
||||
"name": "Altar of Power",
|
||||
"price": 500000000,
|
||||
"materials": "90010,50/90011,50/90012,50",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -112,
|
||||
"reg_2": -298,
|
||||
"reg_3": 114,
|
||||
"reg_4": 225,
|
||||
"npc": 20078,
|
||||
"group_vnum": 4,
|
||||
"dependent_group": 4
|
||||
},
|
||||
{
|
||||
"vnum": 14063,
|
||||
"name": "Altar of Power",
|
||||
"price": 750000000,
|
||||
"materials": "90010,75/90011,75/90012,75",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -112,
|
||||
"reg_2": -298,
|
||||
"reg_3": 114,
|
||||
"reg_4": 225,
|
||||
"npc": 20079,
|
||||
"group_vnum": 4,
|
||||
"dependent_group": 4
|
||||
},
|
||||
{
|
||||
"vnum": 14100,
|
||||
"name": "house(1)",
|
||||
"price": 20000000,
|
||||
"materials": "90010,20/90011,30/90012,25",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -279,
|
||||
"reg_2": -347,
|
||||
"reg_3": 294,
|
||||
"reg_4": 325,
|
||||
"npc": 0,
|
||||
"group_vnum": 1,
|
||||
"dependent_group": 0
|
||||
},
|
||||
{
|
||||
"vnum": 14110,
|
||||
"name": "house(2)",
|
||||
"price": 20000000,
|
||||
"materials": "90010,20/90011,30/90012,25",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -279,
|
||||
"reg_2": -347,
|
||||
"reg_3": 294,
|
||||
"reg_4": 325,
|
||||
"npc": 0,
|
||||
"group_vnum": 1,
|
||||
"dependent_group": 0
|
||||
},
|
||||
{
|
||||
"vnum": 14120,
|
||||
"name": "house(3)",
|
||||
"price": 20000000,
|
||||
"materials": "90010,20/90011,30/90012,25",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -279,
|
||||
"reg_2": -347,
|
||||
"reg_3": 294,
|
||||
"reg_4": 325,
|
||||
"npc": 0,
|
||||
"group_vnum": 1,
|
||||
"dependent_group": 0
|
||||
},
|
||||
{
|
||||
"vnum": 14141,
|
||||
"name": "Wooden Wall 1",
|
||||
"price": 800000,
|
||||
"materials": "90010,5/90011,15/90012,15",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -2,
|
||||
"reg_2": -40,
|
||||
"reg_3": 174,
|
||||
"reg_4": 40,
|
||||
"npc": 0,
|
||||
"group_vnum": 0,
|
||||
"dependent_group": 0
|
||||
},
|
||||
{
|
||||
"vnum": 14142,
|
||||
"name": "Wooden Wall 2",
|
||||
"price": 500000,
|
||||
"materials": "90010,5/90011,15/90012,15",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -36,
|
||||
"reg_2": -36,
|
||||
"reg_3": 36,
|
||||
"reg_4": 36,
|
||||
"npc": 0,
|
||||
"group_vnum": 0,
|
||||
"dependent_group": 0
|
||||
},
|
||||
{
|
||||
"vnum": 14143,
|
||||
"name": "Wooden Wall 3",
|
||||
"price": 800000,
|
||||
"materials": "90010,5/90011,15/90012,15",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -195,
|
||||
"reg_2": -52,
|
||||
"reg_3": 2,
|
||||
"reg_4": 52,
|
||||
"npc": 0,
|
||||
"group_vnum": 0,
|
||||
"dependent_group": 0
|
||||
},
|
||||
{
|
||||
"vnum": 14144,
|
||||
"name": "Wooden Gate",
|
||||
"price": 500000,
|
||||
"materials": "90010,5/90011,20/90012,20",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -1,
|
||||
"reg_2": -96,
|
||||
"reg_3": 348,
|
||||
"reg_4": 96,
|
||||
"npc": 0,
|
||||
"group_vnum": 0,
|
||||
"dependent_group": 0
|
||||
},
|
||||
{
|
||||
"vnum": 14200,
|
||||
"name": "guild insignia",
|
||||
"price": 3000000,
|
||||
"materials": "90011,5/90012,5",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -23,
|
||||
"reg_2": -5,
|
||||
"reg_3": 21,
|
||||
"reg_4": 20,
|
||||
"npc": 0,
|
||||
"group_vnum": 0,
|
||||
"dependent_group": 1
|
||||
},
|
||||
{
|
||||
"vnum": 14300,
|
||||
"name": "stone1",
|
||||
"price": 300000,
|
||||
"materials": "90010,5",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -58,
|
||||
"reg_2": -59,
|
||||
"reg_3": 58,
|
||||
"reg_4": 59,
|
||||
"npc": 0,
|
||||
"group_vnum": 0,
|
||||
"dependent_group": 0
|
||||
},
|
||||
{
|
||||
"vnum": 14301,
|
||||
"name": "stone2",
|
||||
"price": 300000,
|
||||
"materials": "90010,5",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -59,
|
||||
"reg_2": -66,
|
||||
"reg_3": 59,
|
||||
"reg_4": 66,
|
||||
"npc": 0,
|
||||
"group_vnum": 0,
|
||||
"dependent_group": 0
|
||||
},
|
||||
{
|
||||
"vnum": 14302,
|
||||
"name": "stone3",
|
||||
"price": 300000,
|
||||
"materials": "90010,7",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -67,
|
||||
"reg_2": -51,
|
||||
"reg_3": 67,
|
||||
"reg_4": 51,
|
||||
"npc": 0,
|
||||
"group_vnum": 0,
|
||||
"dependent_group": 0
|
||||
},
|
||||
{
|
||||
"vnum": 14303,
|
||||
"name": "stone4",
|
||||
"price": 300000,
|
||||
"materials": "90010,7",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -52,
|
||||
"reg_2": -59,
|
||||
"reg_3": 52,
|
||||
"reg_4": 59,
|
||||
"npc": 0,
|
||||
"group_vnum": 0,
|
||||
"dependent_group": 0
|
||||
},
|
||||
{
|
||||
"vnum": 14304,
|
||||
"name": "stone5",
|
||||
"price": 300000,
|
||||
"materials": "90010,7",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -86,
|
||||
"reg_2": -73,
|
||||
"reg_3": 86,
|
||||
"reg_4": 73,
|
||||
"npc": 0,
|
||||
"group_vnum": 0,
|
||||
"dependent_group": 0
|
||||
},
|
||||
{
|
||||
"vnum": 14305,
|
||||
"name": "stone6",
|
||||
"price": 300000,
|
||||
"materials": "90010,8",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -96,
|
||||
"reg_2": -101,
|
||||
"reg_3": 96,
|
||||
"reg_4": 101,
|
||||
"npc": 0,
|
||||
"group_vnum": 0,
|
||||
"dependent_group": 0
|
||||
},
|
||||
{
|
||||
"vnum": 14306,
|
||||
"name": "stone7",
|
||||
"price": 300000,
|
||||
"materials": "90010,8",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -92,
|
||||
"reg_2": -92,
|
||||
"reg_3": 92,
|
||||
"reg_4": 92,
|
||||
"npc": 0,
|
||||
"group_vnum": 0,
|
||||
"dependent_group": 0
|
||||
},
|
||||
{
|
||||
"vnum": 14307,
|
||||
"name": "stone8",
|
||||
"price": 300000,
|
||||
"materials": "90010,8",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -33,
|
||||
"reg_2": -28,
|
||||
"reg_3": 33,
|
||||
"reg_4": 28,
|
||||
"npc": 0,
|
||||
"group_vnum": 0,
|
||||
"dependent_group": 0
|
||||
},
|
||||
{
|
||||
"vnum": 14308,
|
||||
"name": "stone9",
|
||||
"price": 300000,
|
||||
"materials": "90010,9",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -33,
|
||||
"reg_2": -27,
|
||||
"reg_3": 33,
|
||||
"reg_4": 27,
|
||||
"npc": 0,
|
||||
"group_vnum": 0,
|
||||
"dependent_group": 0
|
||||
},
|
||||
{
|
||||
"vnum": 14309,
|
||||
"name": "stone10",
|
||||
"price": 300000,
|
||||
"materials": "90010,9",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -91,
|
||||
"reg_2": -62,
|
||||
"reg_3": 91,
|
||||
"reg_4": 62,
|
||||
"npc": 0,
|
||||
"group_vnum": 0,
|
||||
"dependent_group": 0
|
||||
},
|
||||
{
|
||||
"vnum": 14400,
|
||||
"name": "wood1",
|
||||
"price": 2000000,
|
||||
"materials": "90011,5",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": 0,
|
||||
"reg_2": 0,
|
||||
"reg_3": 0,
|
||||
"reg_4": 0,
|
||||
"npc": 0,
|
||||
"group_vnum": 0,
|
||||
"dependent_group": 0
|
||||
},
|
||||
{
|
||||
"vnum": 14401,
|
||||
"name": "wood2",
|
||||
"price": 2000000,
|
||||
"materials": "90011,5",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": 0,
|
||||
"reg_2": 0,
|
||||
"reg_3": 0,
|
||||
"reg_4": 0,
|
||||
"npc": 0,
|
||||
"group_vnum": 0,
|
||||
"dependent_group": 0
|
||||
},
|
||||
{
|
||||
"vnum": 14402,
|
||||
"name": "wood3",
|
||||
"price": 2000000,
|
||||
"materials": "90011,7",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": 0,
|
||||
"reg_2": 0,
|
||||
"reg_3": 0,
|
||||
"reg_4": 0,
|
||||
"npc": 0,
|
||||
"group_vnum": 0,
|
||||
"dependent_group": 0
|
||||
},
|
||||
{
|
||||
"vnum": 14403,
|
||||
"name": "wood4",
|
||||
"price": 2000000,
|
||||
"materials": "90011,7",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": 0,
|
||||
"reg_2": 0,
|
||||
"reg_3": 0,
|
||||
"reg_4": 0,
|
||||
"npc": 0,
|
||||
"group_vnum": 0,
|
||||
"dependent_group": 0
|
||||
},
|
||||
{
|
||||
"vnum": 14404,
|
||||
"name": "wood5",
|
||||
"price": 2000000,
|
||||
"materials": "90011,7",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": 0,
|
||||
"reg_2": 0,
|
||||
"reg_3": 0,
|
||||
"reg_4": 0,
|
||||
"npc": 0,
|
||||
"group_vnum": 0,
|
||||
"dependent_group": 0
|
||||
},
|
||||
{
|
||||
"vnum": 14405,
|
||||
"name": "wood6",
|
||||
"price": 2000000,
|
||||
"materials": "90011,9",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": 0,
|
||||
"reg_2": 0,
|
||||
"reg_3": 0,
|
||||
"reg_4": 0,
|
||||
"npc": 0,
|
||||
"group_vnum": 0,
|
||||
"dependent_group": 0
|
||||
},
|
||||
{
|
||||
"vnum": 14406,
|
||||
"name": "wood7",
|
||||
"price": 2000000,
|
||||
"materials": "90011,9",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": 0,
|
||||
"reg_2": 0,
|
||||
"reg_3": 0,
|
||||
"reg_4": 0,
|
||||
"npc": 0,
|
||||
"group_vnum": 0,
|
||||
"dependent_group": 0
|
||||
},
|
||||
{
|
||||
"vnum": 14407,
|
||||
"name": "wood8",
|
||||
"price": 2000000,
|
||||
"materials": "90011,9",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": 0,
|
||||
"reg_2": 0,
|
||||
"reg_3": 0,
|
||||
"reg_4": 0,
|
||||
"npc": 0,
|
||||
"group_vnum": 0,
|
||||
"dependent_group": 0
|
||||
},
|
||||
{
|
||||
"vnum": 14408,
|
||||
"name": "wood9",
|
||||
"price": 2000000,
|
||||
"materials": "90011,9",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": 0,
|
||||
"reg_2": 0,
|
||||
"reg_3": 0,
|
||||
"reg_4": 0,
|
||||
"npc": 0,
|
||||
"group_vnum": 0,
|
||||
"dependent_group": 0
|
||||
},
|
||||
{
|
||||
"vnum": 26992,
|
||||
"name": "Soul Crystal tear smelter",
|
||||
"price": 20000000,
|
||||
"materials": "90010,15/90011,20/90012,25",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -90,
|
||||
"reg_2": -100,
|
||||
"reg_3": 90,
|
||||
"reg_4": 100,
|
||||
"npc": 33009,
|
||||
"group_vnum": 3,
|
||||
"dependent_group": 1
|
||||
},
|
||||
{
|
||||
"vnum": 26993,
|
||||
"name": "Rubin tear smelter",
|
||||
"price": 20000000,
|
||||
"materials": "90010,15/90011,20/90012,25",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -90,
|
||||
"reg_2": -100,
|
||||
"reg_3": 90,
|
||||
"reg_4": 100,
|
||||
"npc": 33010,
|
||||
"group_vnum": 3,
|
||||
"dependent_group": 1
|
||||
},
|
||||
{
|
||||
"vnum": 26994,
|
||||
"name": "Garnet tear smelter",
|
||||
"price": 20000000,
|
||||
"materials": "90010,15/90011,20/90012,25",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -90,
|
||||
"reg_2": -100,
|
||||
"reg_3": 90,
|
||||
"reg_4": 100,
|
||||
"npc": 33011,
|
||||
"group_vnum": 3,
|
||||
"dependent_group": 1
|
||||
},
|
||||
{
|
||||
"vnum": 26995,
|
||||
"name": "Smaragd tear smelter",
|
||||
"price": 20000000,
|
||||
"materials": "90010,15/90011,20/90012,25",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -90,
|
||||
"reg_2": -100,
|
||||
"reg_3": 90,
|
||||
"reg_4": 100,
|
||||
"npc": 33012,
|
||||
"group_vnum": 3,
|
||||
"dependent_group": 1
|
||||
},
|
||||
{
|
||||
"vnum": 26996,
|
||||
"name": "Sapphire tear smelter",
|
||||
"price": 20000000,
|
||||
"materials": "90010,15/90011,20/90012,25",
|
||||
"upgrade_vnum": 0,
|
||||
"upgrade_limit_time": 0,
|
||||
"life": 0,
|
||||
"reg_1": -90,
|
||||
"reg_2": -100,
|
||||
"reg_3": 90,
|
||||
"reg_4": 100,
|
||||
"npc": 33013,
|
||||
"group_vnum": 3,
|
||||
"dependent_group": 1
|
||||
}
|
||||
]
|
6921
database/data/refine_proto.json
Normal file
157
database/data/shop.json
Normal file
@ -0,0 +1,157 @@
|
||||
[
|
||||
{
|
||||
"vnum": 1,
|
||||
"name": "Weapon Shop Dealer",
|
||||
"npc_vnum": 9001
|
||||
},
|
||||
{
|
||||
"vnum": 2,
|
||||
"name": "Fisherman",
|
||||
"npc_vnum": 9009
|
||||
},
|
||||
{
|
||||
"vnum": 3,
|
||||
"name": "General Store Saleswoman",
|
||||
"npc_vnum": 9003
|
||||
},
|
||||
{
|
||||
"vnum": 4,
|
||||
"name": "Armour Shop Dealer",
|
||||
"npc_vnum": 9002
|
||||
},
|
||||
{
|
||||
"vnum": 5,
|
||||
"name": "Weapon Shop Dealer 2",
|
||||
"npc_vnum": 9007
|
||||
},
|
||||
{
|
||||
"vnum": 6,
|
||||
"name": "Armour Shop Dealer 2",
|
||||
"npc_vnum": 9008
|
||||
},
|
||||
{
|
||||
"vnum": 7,
|
||||
"name": "gold_bar_shop",
|
||||
"npc_vnum": 9005
|
||||
},
|
||||
{
|
||||
"vnum": 8,
|
||||
"name": "firework_shop",
|
||||
"npc_vnum": 9004
|
||||
},
|
||||
{
|
||||
"vnum": 9,
|
||||
"name": "Peddler",
|
||||
"npc_vnum": 20042
|
||||
},
|
||||
{
|
||||
"vnum": 10,
|
||||
"name": "pick_shop",
|
||||
"npc_vnum": 20015
|
||||
},
|
||||
{
|
||||
"vnum": 11,
|
||||
"name": "Stable Boy",
|
||||
"npc_vnum": 20349
|
||||
},
|
||||
{
|
||||
"vnum": 1001,
|
||||
"name": "all_sword",
|
||||
"npc_vnum": 0
|
||||
},
|
||||
{
|
||||
"vnum": 1002,
|
||||
"name": "all_dualhand_sword",
|
||||
"npc_vnum": 0
|
||||
},
|
||||
{
|
||||
"vnum": 1003,
|
||||
"name": "all_bow",
|
||||
"npc_vnum": 0
|
||||
},
|
||||
{
|
||||
"vnum": 1004,
|
||||
"name": "all_twohand_sword",
|
||||
"npc_vnum": 0
|
||||
},
|
||||
{
|
||||
"vnum": 1005,
|
||||
"name": "all_bell",
|
||||
"npc_vnum": 0
|
||||
},
|
||||
{
|
||||
"vnum": 1006,
|
||||
"name": "all_fan",
|
||||
"npc_vnum": 0
|
||||
},
|
||||
{
|
||||
"vnum": 1007,
|
||||
"name": "all_warrior_armour",
|
||||
"npc_vnum": 0
|
||||
},
|
||||
{
|
||||
"vnum": 1008,
|
||||
"name": "all_assassin_armour",
|
||||
"npc_vnum": 0
|
||||
},
|
||||
{
|
||||
"vnum": 1009,
|
||||
"name": "all_sura_armour",
|
||||
"npc_vnum": 0
|
||||
},
|
||||
{
|
||||
"vnum": 1010,
|
||||
"name": "all_shaman_armour",
|
||||
"npc_vnum": 0
|
||||
},
|
||||
{
|
||||
"vnum": 1011,
|
||||
"name": "all_warrior_helmet",
|
||||
"npc_vnum": 0
|
||||
},
|
||||
{
|
||||
"vnum": 1012,
|
||||
"name": "all_assassin_helmet",
|
||||
"npc_vnum": 0
|
||||
},
|
||||
{
|
||||
"vnum": 1013,
|
||||
"name": "all_sura_helmet",
|
||||
"npc_vnum": 0
|
||||
},
|
||||
{
|
||||
"vnum": 1014,
|
||||
"name": "all_shaman_helmet",
|
||||
"npc_vnum": 0
|
||||
},
|
||||
{
|
||||
"vnum": 1015,
|
||||
"name": "all_shield",
|
||||
"npc_vnum": 0
|
||||
},
|
||||
{
|
||||
"vnum": 1016,
|
||||
"name": "all_bracelet",
|
||||
"npc_vnum": 0
|
||||
},
|
||||
{
|
||||
"vnum": 1017,
|
||||
"name": "all_shoe",
|
||||
"npc_vnum": 0
|
||||
},
|
||||
{
|
||||
"vnum": 1018,
|
||||
"name": "all_necklace",
|
||||
"npc_vnum": 0
|
||||
},
|
||||
{
|
||||
"vnum": 1019,
|
||||
"name": "all_ring",
|
||||
"npc_vnum": 0
|
||||
},
|
||||
{
|
||||
"vnum": 13,
|
||||
"name": "Alchemist",
|
||||
"npc_vnum": 20001
|
||||
}
|
||||
]
|
1452
database/data/shop_item.json
Normal file
2543
database/data/skill_proto.json
Normal file
@ -2,6 +2,7 @@
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\File;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
@ -17,6 +18,10 @@ public function up()
|
||||
$table->string('mKey')->default('')->primary();
|
||||
$table->string('mValue')->default('');
|
||||
});
|
||||
|
||||
// Populate the table data
|
||||
$data = File::json(database_path('data/locale.json'));
|
||||
\App\Models\Game\Common\Locale::upsert($data, ['mKey']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -14,6 +14,11 @@
|
||||
public function up()
|
||||
{
|
||||
Schema::connection('common')->create('spam_db', function (Blueprint $table) {
|
||||
// TODO: update this to modern standards (InnoDB & utf8mb4)
|
||||
$table->engine = "MyISAM";
|
||||
$table->charset = "utf8";
|
||||
$table->collation = "utf8_general_ci";
|
||||
|
||||
$table->set('type', ['GOOD', 'SPAM'])->default('SPAM');
|
||||
$table->string('word', 256)->primary();
|
||||
$table->integer('score')->default(10);
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\File;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
@ -14,8 +15,12 @@
|
||||
public function up()
|
||||
{
|
||||
Schema::connection('player')->create('banword', function (Blueprint $table) {
|
||||
$table->binary('word')->default('')->primary();
|
||||
$table->binary('word', length: 24)->default('')->primary();
|
||||
});
|
||||
|
||||
// Populate the table data
|
||||
$data = File::json(database_path('data/banword.json'));
|
||||
\App\Models\Game\Player\Banword::upsert($data, ['word']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\File;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
@ -30,6 +31,10 @@ public function up()
|
||||
$table->string('shield', 100)->default('');
|
||||
$table->string('ear', 100)->default('');
|
||||
});
|
||||
|
||||
// Populate the table data
|
||||
$data = File::json(database_path('data/item_attr_rare.json'));
|
||||
\App\Models\Game\Player\ItemAttrRare::upsert($data, ['apply']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\File;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
@ -30,6 +31,10 @@ public function up()
|
||||
$table->string('shield', 100)->default('');
|
||||
$table->string('ear', 100)->default('');
|
||||
});
|
||||
|
||||
// Populate the table data
|
||||
$data = File::json(database_path('data/item_attr.json'));
|
||||
\App\Models\Game\Player\ItemAttr::upsert($data, ['apply']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -15,8 +15,8 @@ public function up()
|
||||
{
|
||||
Schema::connection('player')->create('item_proto', function (Blueprint $table) {
|
||||
$table->unsignedInteger('vnum')->default(0)->primary();
|
||||
$table->binary('name')->default('Noname');
|
||||
$table->binary('locale_name')->default('Noname');
|
||||
$table->binary('name', length: 24)->default('Noname');
|
||||
$table->binary('locale_name', length: 24)->default('Noname');
|
||||
$table->tinyInteger('type')->default(0);
|
||||
$table->tinyInteger('subtype')->default(0);
|
||||
$table->tinyInteger('weight')->nullable()->default(0);
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\File;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
@ -25,6 +26,10 @@ public function up()
|
||||
$table->unsignedInteger('price')->default(0);
|
||||
$table->enum('enable', ['YES', 'NO'])->default('NO');
|
||||
});
|
||||
|
||||
// Populate the table data
|
||||
$data = File::json(database_path('data/land.json'));
|
||||
\App\Models\Game\Player\Land::upsert($data, ['id']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -15,8 +15,8 @@ public function up()
|
||||
{
|
||||
Schema::connection('player')->create('mob_proto', function (Blueprint $table) {
|
||||
$table->integer('vnum')->default(0)->primary();
|
||||
$table->string('name', 24)->default('Noname');
|
||||
$table->binary('locale_name')->default('Noname ');
|
||||
$table->binary('name', length: 24)->default('Noname');
|
||||
$table->binary('locale_name', length: 24)->default('Noname');
|
||||
$table->tinyInteger('rank')->default(0);
|
||||
$table->tinyInteger('type')->default(0);
|
||||
$table->boolean('battle_type')->default(false);
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\File;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
@ -29,6 +30,10 @@ public function up()
|
||||
$table->unsignedInteger('group_vnum')->default(0);
|
||||
$table->unsignedInteger('dependent_group')->default(0);
|
||||
});
|
||||
|
||||
// Populate the table data
|
||||
$data = File::json(database_path('data/object_proto.json'));
|
||||
\App\Models\Game\Player\ObjectProto::upsert($data, ['vnum']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\File;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
@ -30,6 +31,10 @@ public function up()
|
||||
$table->unsignedInteger('result_vnum')->default(0);
|
||||
$table->smallInteger('prob')->default(100);
|
||||
});
|
||||
|
||||
// Populate the table data
|
||||
$data = File::json(database_path('data/refine_proto.json'));
|
||||
\App\Models\Game\Player\RefineProto::upsert($data, ['id']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\File;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
@ -20,6 +21,10 @@ public function up()
|
||||
|
||||
$table->unique(['shop_vnum', 'item_vnum', 'count'], 'vnum_unique');
|
||||
});
|
||||
|
||||
// Populate the table data
|
||||
$data = File::json(database_path('data/shop_item.json'));
|
||||
\App\Models\Game\Player\ShopItem::upsert($data, ['shop_vnum', 'item_vnum']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\File;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
@ -18,6 +19,10 @@ public function up()
|
||||
$table->string('name', 32)->default('Noname');
|
||||
$table->smallInteger('npc_vnum')->default(0);
|
||||
});
|
||||
|
||||
// Populate the table data
|
||||
$data = File::json(database_path('data/shop.json'));
|
||||
\App\Models\Game\Player\Shop::upsert($data, ['vnum']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\File;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
@ -15,7 +16,7 @@ public function up()
|
||||
{
|
||||
Schema::connection('player')->create('skill_proto', function (Blueprint $table) {
|
||||
$table->integer('dwVnum')->default(0)->primary();
|
||||
$table->string('szName', 32)->default('');
|
||||
$table->binary('szName', 32)->default('');
|
||||
$table->tinyInteger('bType')->default(0);
|
||||
$table->tinyInteger('bLevelStep')->default(0);
|
||||
$table->tinyInteger('bMaxLevel')->default(0);
|
||||
@ -46,6 +47,14 @@ public function up()
|
||||
$table->integer('dwTargetRange')->default(1000);
|
||||
$table->unsignedInteger('dwSplashRange')->default(0);
|
||||
});
|
||||
|
||||
// Populate the table data
|
||||
$data = File::json(database_path('data/skill_proto.json'));
|
||||
foreach ($data as $key => &$value) {
|
||||
// Decode szName from the base64 encoding
|
||||
$value['szName'] = base64_decode($value['szName']);
|
||||
}
|
||||
\App\Models\Game\Player\SkillProto::upsert($data, ['dwVnum']);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::connection('website')->create('guild_highscore_cache', function (Blueprint $table) {
|
||||
$table->bigInteger('id', true);
|
||||
$table->text('name');
|
||||
$table->text('master');
|
||||
$table->integer('empire');
|
||||
$table->bigInteger('level');
|
||||
$table->bigInteger('ladder_point');
|
||||
$table->timestamp('date')->useCurrent();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::connection('website')->dropIfExists('guild_highscore_cache');
|
||||
}
|
||||
};
|
@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::connection('website')->create('highscore_cache', function (Blueprint $table) {
|
||||
$table->bigInteger('id', true);
|
||||
$table->text('name');
|
||||
$table->integer('job');
|
||||
$table->integer('empire');
|
||||
$table->bigInteger('level');
|
||||
$table->bigInteger('exp');
|
||||
$table->timestamp('date')->useCurrent();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::connection('website')->dropIfExists('highscore_cache');
|
||||
}
|
||||
};
|
@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\File;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::connection('website')->create('mall_categories', function (Blueprint $table) {
|
||||
$table->integer('id', true);
|
||||
$table->text('name');
|
||||
});
|
||||
|
||||
// Populate the table data
|
||||
$data = File::json(database_path('data/mall_categories.json'));
|
||||
\App\Models\Mall\MallCategory::upsert($data, ['id']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::connection('website')->dropIfExists('mall_categories');
|
||||
}
|
||||
};
|
@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::connection('website')->create('mall_data', function (Blueprint $table) {
|
||||
$table->unsignedInteger('vnum')->default(0)->primary();
|
||||
$table->unsignedInteger('socket0')->default(0);
|
||||
$table->unsignedInteger('socket1')->default(0);
|
||||
$table->unsignedInteger('socket2')->default(0);
|
||||
$table->unsignedInteger('socket3')->default(0);
|
||||
$table->unsignedInteger('socket4')->default(0);
|
||||
$table->unsignedInteger('socket5')->default(0);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::connection('website')->dropIfExists('mall_data');
|
||||
}
|
||||
};
|
@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\File;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::connection('website')->create('mall_items', function (Blueprint $table) {
|
||||
$table->integer('id', true);
|
||||
$table->integer('vnum');
|
||||
$table->integer('category_id');
|
||||
$table->integer('old_price')->nullable();
|
||||
$table->integer('price');
|
||||
$table->enum('pricing', ['CASH', 'MILEAGE'])->default('CASH');
|
||||
$table->integer('quantity');
|
||||
$table->text('image')->nullable();
|
||||
$table->text('description')->nullable();
|
||||
$table->enum('other', ['recommend', 'recommend_desc'])->nullable();
|
||||
});
|
||||
|
||||
// Populate the table data
|
||||
$data = File::json(database_path('data/mall_items.json'));
|
||||
\App\Models\Mall\MallItem::upsert($data, ['id']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::connection('website')->dropIfExists('mall_items');
|
||||
}
|
||||
};
|
@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::connection('website')->create('mall_storage', function (Blueprint $table) {
|
||||
$table->bigInteger('id', true);
|
||||
$table->unsignedInteger('owner_id')->default(0)->index('owner_id_idx');
|
||||
$table->unsignedTinyInteger('count')->default(0);
|
||||
$table->unsignedInteger('vnum')->default(0)->index('item_vnum_index');
|
||||
$table->unsignedInteger('socket0')->default(0);
|
||||
$table->unsignedInteger('socket1')->default(0);
|
||||
$table->unsignedInteger('socket2')->default(0);
|
||||
$table->unsignedInteger('socket3')->default(0);
|
||||
$table->unsignedInteger('socket4')->default(0);
|
||||
$table->unsignedInteger('socket5')->default(0);
|
||||
$table->tinyInteger('attrtype0')->default(0);
|
||||
$table->smallInteger('attrvalue0')->default(0);
|
||||
$table->tinyInteger('attrtype1')->default(0);
|
||||
$table->smallInteger('attrvalue1')->default(0);
|
||||
$table->tinyInteger('attrtype2')->default(0);
|
||||
$table->smallInteger('attrvalue2')->default(0);
|
||||
$table->tinyInteger('attrtype3')->default(0);
|
||||
$table->smallInteger('attrvalue3')->default(0);
|
||||
$table->tinyInteger('attrtype4')->default(0);
|
||||
$table->smallInteger('attrvalue4')->default(0);
|
||||
$table->tinyInteger('attrtype5')->default(0);
|
||||
$table->smallInteger('attrvalue5')->default(0);
|
||||
$table->tinyInteger('attrtype6')->default(0);
|
||||
$table->smallInteger('attrvalue6')->default(0);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::connection('website')->dropIfExists('mall_storage');
|
||||
}
|
||||
};
|
21
docker/apache/metin2.conf
Normal file
@ -0,0 +1,21 @@
|
||||
# Hide server signature (i.e. Apache version)
|
||||
ServerSignature Off
|
||||
ServerTokens Prod
|
||||
|
||||
<VirtualHost *:80>
|
||||
# Identify the correct IP address from Traefik reverse proxy
|
||||
RemoteIPHeader X-Real-IP
|
||||
RemoteIPInternalProxy 10.0.0.0/8
|
||||
RemoteIPInternalProxy 172.16.0.0/12
|
||||
RemoteIPInternalProxy 192.168.0.0/16
|
||||
|
||||
DocumentRoot /app/public
|
||||
|
||||
<Directory "/app/public">
|
||||
AllowOverride All
|
||||
Require all granted
|
||||
</Directory>
|
||||
|
||||
ErrorLog ${APACHE_LOG_DIR}/error.log
|
||||
CustomLog ${APACHE_LOG_DIR}/access.log combined
|
||||
</VirtualHost>
|
74
docker/image/prod/Dockerfile
Normal file
@ -0,0 +1,74 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
FROM php:8.2-apache
|
||||
|
||||
#
|
||||
# Install system packages & dependencies
|
||||
#
|
||||
|
||||
RUN apt-get update && apt-get install -y wget locales
|
||||
|
||||
# Composer
|
||||
RUN wget -O composer-setup.php https://getcomposer.org/installer \
|
||||
&& php composer-setup.php --install-dir=/usr/local/bin --filename=composer \
|
||||
&& rm ./composer-setup.php
|
||||
|
||||
#
|
||||
# PHP extensions
|
||||
#
|
||||
|
||||
# GD
|
||||
RUN apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev \
|
||||
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||
&& docker-php-ext-install -j$(nproc) gd
|
||||
|
||||
# zip
|
||||
RUN apt-get install -y libzip-dev \
|
||||
&& docker-php-ext-configure zip \
|
||||
&& docker-php-ext-install -j$(nproc) zip
|
||||
|
||||
# intl
|
||||
RUN apt-get install -y libicu-dev \
|
||||
&& docker-php-ext-configure intl \
|
||||
&& docker-php-ext-install -j$(nproc) intl
|
||||
|
||||
# exif
|
||||
RUN apt-get install -y exiftool \
|
||||
&& docker-php-ext-configure exif \
|
||||
&& docker-php-ext-install -j$(nproc) exif
|
||||
|
||||
# MySQL
|
||||
RUN docker-php-ext-install -j$(nproc) mysqli pdo pdo_mysql
|
||||
|
||||
# Install Node.js
|
||||
RUN curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - && apt-get install -y nodejs
|
||||
|
||||
# Configure Apache2
|
||||
COPY deploy/apache/metin2.conf /etc/apache2/sites-available/metin2.conf
|
||||
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf && \
|
||||
a2enmod rewrite && \
|
||||
a2enmod remoteip && \
|
||||
a2dissite 000-default && \
|
||||
a2ensite metin2
|
||||
|
||||
# Copy the configuration files
|
||||
COPY deploy/php/*.ini /usr/local/etc/php/conf.d/
|
||||
COPY deploy/php/prod/*.ini /usr/local/etc/php/conf.d/
|
||||
|
||||
# Copy the source code
|
||||
RUN mkdir /app
|
||||
WORKDIR /app
|
||||
COPY . .
|
||||
|
||||
# Install the dependencies
|
||||
RUN composer install --no-ansi --no-interaction --no-plugins --no-progress --no-scripts --optimize-autoloader
|
||||
RUN npm ci && npm run build
|
||||
|
||||
# Make the init script executable
|
||||
RUN chmod +x /app/deploy/init.sh
|
||||
|
||||
# Expose the API on port 80
|
||||
EXPOSE 80
|
||||
|
||||
# Run supervisord for handling the container services
|
||||
ENTRYPOINT ["/bin/sh", "-c"]
|
||||
CMD ["/app/deploy/init.sh"]
|
50
docker/init.sh
Normal file
@ -0,0 +1,50 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
KERNEL_VERSION=$(uname -r)
|
||||
KERNEL_ARCH=$(uname -m)
|
||||
APACHE_VERSION=$(apache2 -v | head -n 1 | cut -d " " -f 3 | cut -d "/" -f 2)
|
||||
PHP_VERSION=$(php -r "echo PHP_VERSION;")
|
||||
|
||||
echo "The Old Metin2 Project - Web management system"
|
||||
echo "Kernel ${KERNEL_VERSION}, architecture: ${KERNEL_ARCH}, Apache: ${APACHE_VERSION}, PHP: ${PHP_VERSION}"
|
||||
|
||||
# Create storage directories if they don't exist
|
||||
if [ ! -d /app/storage/app/public/ ]; then
|
||||
mkdir -p /app/storage/app/public/;
|
||||
fi
|
||||
if [ ! -d /app/storage/app/public/patch-data/ ]; then
|
||||
mkdir -p /app/storage/app/public/patch-data/;
|
||||
fi
|
||||
|
||||
if [ ! -d /app/storage/framework/cache/data/ ]; then
|
||||
mkdir -p /app/storage/framework/cache/data/;
|
||||
fi
|
||||
|
||||
if [ ! -d /app/storage/framework/sessions/ ]; then
|
||||
mkdir -p /app/storage/framework/sessions/;
|
||||
fi
|
||||
|
||||
if [ ! -d /app/storage/framework/testing/ ]; then
|
||||
mkdir -p /app/storage/framework/sessions/;
|
||||
fi
|
||||
|
||||
if [ ! -d /app/storage/framework/views/ ]; then
|
||||
mkdir -p /app/storage/framework/views/;
|
||||
fi
|
||||
|
||||
if [ ! -d /app/storage/logs/ ]; then
|
||||
mkdir -p /app/storage/logs/;
|
||||
fi
|
||||
|
||||
# Set folder permissions
|
||||
chown -R www-data:www-data /app/storage
|
||||
|
||||
# Link filesystem paths
|
||||
/usr/local/bin/php artisan storage:link
|
||||
|
||||
# Run database migrations
|
||||
/usr/local/bin/php artisan migrate --force --no-interaction
|
||||
|
||||
# Run Apache webserver
|
||||
apache2-foreground
|
6
docker/php/expose-php.ini
Normal file
@ -0,0 +1,6 @@
|
||||
; Decides whether PHP may expose the fact that it is installed on the server
|
||||
; (e.g. by adding its signature to the Web server header). It is no security
|
||||
; threat in any way, but it makes it possible to determine whether you use PHP
|
||||
; on your server or not.
|
||||
; https://php.net/expose-php
|
||||
expose_php = Off
|
19
docker/php/file-uploads.ini
Normal file
@ -0,0 +1,19 @@
|
||||
;;;;;;;;;;;;;;;;
|
||||
; File Uploads ;
|
||||
;;;;;;;;;;;;;;;;
|
||||
|
||||
; Whether to allow HTTP file uploads.
|
||||
; https://php.net/file-uploads
|
||||
file_uploads = On
|
||||
|
||||
; Temporary directory for HTTP uploaded files (will use system default if not
|
||||
; specified).
|
||||
; https://php.net/upload-tmp-dir
|
||||
;upload_tmp_dir =
|
||||
|
||||
; Maximum allowed size for uploaded files.
|
||||
; https://php.net/upload-max-filesize
|
||||
upload_max_filesize = 50M
|
||||
|
||||
; Maximum number of files that can be uploaded via a single request
|
||||
max_file_uploads = 20
|
1
docker/php/memory-limit.ini
Normal file
@ -0,0 +1 @@
|
||||
memory_limit = 300M
|
182
docker/php/prod/error-reporting.ini
Normal file
@ -0,0 +1,182 @@
|
||||
; This directive informs PHP of which errors, warnings and notices you would like
|
||||
; it to take action for. The recommended way of setting values for this
|
||||
; directive is through the use of the error level constants and bitwise
|
||||
; operators. The error level constants are below here for convenience as well as
|
||||
; some common settings and their meanings.
|
||||
; By default, PHP is set to take action on all errors, notices and warnings EXCEPT
|
||||
; those related to E_NOTICE and E_STRICT, which together cover best practices and
|
||||
; recommended coding standards in PHP. For performance reasons, this is the
|
||||
; recommend error reporting setting. Your production server shouldn't be wasting
|
||||
; resources complaining about best practices and coding standards. That's what
|
||||
; development servers and development settings are for.
|
||||
; Note: The php.ini-development file has this setting as E_ALL. This
|
||||
; means it pretty much reports everything which is exactly what you want during
|
||||
; development and early testing.
|
||||
;
|
||||
; Error Level Constants:
|
||||
; E_ALL - All errors and warnings
|
||||
; E_ERROR - fatal run-time errors
|
||||
; E_RECOVERABLE_ERROR - almost fatal run-time errors
|
||||
; E_WARNING - run-time warnings (non-fatal errors)
|
||||
; E_PARSE - compile-time parse errors
|
||||
; E_NOTICE - run-time notices (these are warnings which often result
|
||||
; from a bug in your code, but it's possible that it was
|
||||
; intentional (e.g., using an uninitialized variable and
|
||||
; relying on the fact it is automatically initialized to an
|
||||
; empty string)
|
||||
; E_STRICT - run-time notices, enable to have PHP suggest changes
|
||||
; to your code which will ensure the best interoperability
|
||||
; and forward compatibility of your code
|
||||
; E_CORE_ERROR - fatal errors that occur during PHP's initial startup
|
||||
; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's
|
||||
; initial startup
|
||||
; E_COMPILE_ERROR - fatal compile-time errors
|
||||
; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
|
||||
; E_USER_ERROR - user-generated error message
|
||||
; E_USER_WARNING - user-generated warning message
|
||||
; E_USER_NOTICE - user-generated notice message
|
||||
; E_DEPRECATED - warn about code that will not work in future versions
|
||||
; of PHP
|
||||
; E_USER_DEPRECATED - user-generated deprecation warnings
|
||||
;
|
||||
; Common Values:
|
||||
; E_ALL (Show all errors, warnings and notices including coding standards.)
|
||||
; E_ALL & ~E_NOTICE (Show all errors, except for notices)
|
||||
; E_ALL & ~E_NOTICE & ~E_STRICT (Show all errors, except for notices and coding standards warnings.)
|
||||
; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors)
|
||||
; Default Value: E_ALL
|
||||
; Development Value: E_ALL
|
||||
; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
|
||||
; https://php.net/error-reporting
|
||||
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
|
||||
|
||||
; This directive controls whether or not and where PHP will output errors,
|
||||
; notices and warnings too. Error output is very useful during development, but
|
||||
; it could be very dangerous in production environments. Depending on the code
|
||||
; which is triggering the error, sensitive information could potentially leak
|
||||
; out of your application such as database usernames and passwords or worse.
|
||||
; For production environments, we recommend logging errors rather than
|
||||
; sending them to STDOUT.
|
||||
; Possible Values:
|
||||
; Off = Do not display any errors
|
||||
; stderr = Display errors to STDERR (affects only CGI/CLI binaries!)
|
||||
; On or stdout = Display errors to STDOUT
|
||||
; Default Value: On
|
||||
; Development Value: On
|
||||
; Production Value: Off
|
||||
; https://php.net/display-errors
|
||||
display_errors = Off
|
||||
|
||||
; The display of errors which occur during PHP's startup sequence are handled
|
||||
; separately from display_errors. We strongly recommend you set this to 'off'
|
||||
; for production servers to avoid leaking configuration details.
|
||||
; Default Value: On
|
||||
; Development Value: On
|
||||
; Production Value: Off
|
||||
; https://php.net/display-startup-errors
|
||||
display_startup_errors = Off
|
||||
|
||||
; Besides displaying errors, PHP can also log errors to locations such as a
|
||||
; server-specific log, STDERR, or a location specified by the error_log
|
||||
; directive found below. While errors should not be displayed on productions
|
||||
; servers they should still be monitored and logging is a great way to do that.
|
||||
; Default Value: Off
|
||||
; Development Value: On
|
||||
; Production Value: On
|
||||
; https://php.net/log-errors
|
||||
log_errors = On
|
||||
|
||||
; Do not log repeated messages. Repeated errors must occur in same file on same
|
||||
; line unless ignore_repeated_source is set true.
|
||||
; https://php.net/ignore-repeated-errors
|
||||
ignore_repeated_errors = Off
|
||||
|
||||
; Ignore source of message when ignoring repeated messages. When this setting
|
||||
; is On you will not log errors with repeated messages from different files or
|
||||
; source lines.
|
||||
; https://php.net/ignore-repeated-source
|
||||
ignore_repeated_source = Off
|
||||
|
||||
; If this parameter is set to Off, then memory leaks will not be shown (on
|
||||
; stdout or in the log). This is only effective in a debug compile, and if
|
||||
; error reporting includes E_WARNING in the allowed list
|
||||
; https://php.net/report-memleaks
|
||||
report_memleaks = On
|
||||
|
||||
; This setting is off by default.
|
||||
;report_zend_debug = 0
|
||||
|
||||
; Turn off normal error reporting and emit XML-RPC error XML
|
||||
; https://php.net/xmlrpc-errors
|
||||
;xmlrpc_errors = 0
|
||||
|
||||
; An XML-RPC faultCode
|
||||
;xmlrpc_error_number = 0
|
||||
|
||||
; When PHP displays or logs an error, it has the capability of formatting the
|
||||
; error message as HTML for easier reading. This directive controls whether
|
||||
; the error message is formatted as HTML or not.
|
||||
; Note: This directive is hardcoded to Off for the CLI SAPI
|
||||
; https://php.net/html-errors
|
||||
;html_errors = On
|
||||
|
||||
; If html_errors is set to On *and* docref_root is not empty, then PHP
|
||||
; produces clickable error messages that direct to a page describing the error
|
||||
; or function causing the error in detail.
|
||||
; You can download a copy of the PHP manual from https://php.net/docs
|
||||
; and change docref_root to the base URL of your local copy including the
|
||||
; leading '/'. You must also specify the file extension being used including
|
||||
; the dot. PHP's default behavior is to leave these settings empty, in which
|
||||
; case no links to documentation are generated.
|
||||
; Note: Never use this feature for production boxes.
|
||||
; https://php.net/docref-root
|
||||
; Examples
|
||||
;docref_root = "/phpmanual/"
|
||||
|
||||
; https://php.net/docref-ext
|
||||
;docref_ext = .html
|
||||
|
||||
; String to output before an error message. PHP's default behavior is to leave
|
||||
; this setting blank.
|
||||
; https://php.net/error-prepend-string
|
||||
; Example:
|
||||
;error_prepend_string = "<span style='color: #ff0000'>"
|
||||
|
||||
; String to output after an error message. PHP's default behavior is to leave
|
||||
; this setting blank.
|
||||
; https://php.net/error-append-string
|
||||
; Example:
|
||||
;error_append_string = "</span>"
|
||||
|
||||
; Log errors to specified file. PHP's default behavior is to leave this value
|
||||
; empty.
|
||||
; https://php.net/error-log
|
||||
; Example:
|
||||
;error_log = php_errors.log
|
||||
; Log errors to syslog (Event Log on Windows).
|
||||
;error_log = syslog
|
||||
|
||||
; The syslog ident is a string which is prepended to every message logged
|
||||
; to syslog. Only used when error_log is set to syslog.
|
||||
;syslog.ident = php
|
||||
|
||||
; The syslog facility is used to specify what type of program is logging
|
||||
; the message. Only used when error_log is set to syslog.
|
||||
;syslog.facility = user
|
||||
|
||||
; Set this to disable filtering control characters (the default).
|
||||
; Some loggers only accept NVT-ASCII, others accept anything that's not
|
||||
; control characters. If your logger accepts everything, then no filtering
|
||||
; is needed at all.
|
||||
; Allowed values are:
|
||||
; ascii (all printable ASCII characters and NL)
|
||||
; no-ctrl (all characters except control characters)
|
||||
; all (all characters)
|
||||
; raw (like "all", but messages are not split at newlines)
|
||||
; https://php.net/syslog.filter
|
||||
;syslog.filter = ascii
|
||||
|
||||
;windows.show_crt_warning
|
||||
; Default value: 0
|
||||
; Development value: 0
|
||||
; Production value: 0
|
162
docker/php/prod/opcache.ini
Normal file
@ -0,0 +1,162 @@
|
||||
[opcache]
|
||||
; Determines if Zend OPCache is enabled
|
||||
opcache.enable=1
|
||||
|
||||
; Determines if Zend OPCache is enabled for the CLI version of PHP
|
||||
;opcache.enable_cli=1
|
||||
|
||||
; The OPcache shared memory storage size.
|
||||
opcache.memory_consumption=512
|
||||
|
||||
; The amount of memory for interned strings in Mbytes.
|
||||
opcache.interned_strings_buffer=64
|
||||
|
||||
; The maximum number of keys (scripts) in the OPcache hash table.
|
||||
; Only numbers between 200 and 1000000 are allowed.
|
||||
opcache.max_accelerated_files=50000
|
||||
|
||||
; The maximum percentage of "wasted" memory until a restart is scheduled.
|
||||
opcache.max_wasted_percentage=15
|
||||
|
||||
; When this directive is enabled, the OPcache appends the current working
|
||||
; directory to the script key, thus eliminating possible collisions between
|
||||
; files with the same name (basename). Disabling the directive improves
|
||||
; performance, but may break existing applications.
|
||||
;opcache.use_cwd=1
|
||||
|
||||
; When disabled, you must reset the OPcache manually or restart the
|
||||
; webserver for changes to the filesystem to take effect.
|
||||
opcache.validate_timestamps=0
|
||||
|
||||
; How often (in seconds) to check file timestamps for changes to the shared
|
||||
; memory storage allocation. ("1" means validate once per second, but only
|
||||
; once per request. "0" means always validate)
|
||||
;opcache.revalidate_freq=2
|
||||
|
||||
; Enables or disables file search in include_path optimization
|
||||
;opcache.revalidate_path=0
|
||||
|
||||
; If disabled, all PHPDoc comments are dropped from the code to reduce the
|
||||
; size of the optimized code.
|
||||
opcache.save_comments=0
|
||||
|
||||
; If enabled, compilation warnings (including notices and deprecations) will
|
||||
; be recorded and replayed each time a file is included. Otherwise, compilation
|
||||
; warnings will only be emitted when the file is first cached.
|
||||
;opcache.record_warnings=0
|
||||
|
||||
; Allow file existence override (file_exists, etc.) performance feature.
|
||||
;opcache.enable_file_override=0
|
||||
|
||||
; A bitmask, where each bit enables or disables the appropriate OPcache
|
||||
; passes
|
||||
;opcache.optimization_level=0x7FFFBFFF
|
||||
|
||||
;opcache.dups_fix=0
|
||||
|
||||
; The location of the OPcache blacklist file (wildcards allowed).
|
||||
; Each OPcache blacklist file is a text file that holds the names of files
|
||||
; that should not be accelerated. The file format is to add each filename
|
||||
; to a new line. The filename may be a full path or just a file prefix
|
||||
; (i.e., /var/www/x blacklists all the files and directories in /var/www
|
||||
; that start with 'x'). Line starting with a ; are ignored (comments).
|
||||
;opcache.blacklist_filename=
|
||||
|
||||
; Allows exclusion of large files from being cached. By default all files
|
||||
; are cached.
|
||||
;opcache.max_file_size=0
|
||||
|
||||
; Check the cache checksum each N requests.
|
||||
; The default value of "0" means that the checks are disabled.
|
||||
;opcache.consistency_checks=0
|
||||
|
||||
; How long to wait (in seconds) for a scheduled restart to begin if the cache
|
||||
; is not being accessed.
|
||||
;opcache.force_restart_timeout=180
|
||||
|
||||
; OPcache error_log file name. Empty string assumes "stderr".
|
||||
;opcache.error_log=
|
||||
|
||||
; All OPcache errors go to the Web server log.
|
||||
; By default, only fatal errors (level 0) or errors (level 1) are logged.
|
||||
; You can also enable warnings (level 2), info messages (level 3) or
|
||||
; debug messages (level 4).
|
||||
;opcache.log_verbosity_level=1
|
||||
|
||||
; Preferred Shared Memory back-end. Leave empty and let the system decide.
|
||||
;opcache.preferred_memory_model=
|
||||
|
||||
; Protect the shared memory from unexpected writing during script execution.
|
||||
; Useful for internal debugging only.
|
||||
;opcache.protect_memory=0
|
||||
|
||||
; Allows calling OPcache API functions only from PHP scripts which path is
|
||||
; started from specified string. The default "" means no restriction
|
||||
;opcache.restrict_api=
|
||||
|
||||
; Mapping base of shared memory segments (for Windows only). All the PHP
|
||||
; processes have to map shared memory into the same address space. This
|
||||
; directive allows to manually fix the "Unable to reattach to base address"
|
||||
; errors.
|
||||
;opcache.mmap_base=
|
||||
|
||||
; Facilitates multiple OPcache instances per user (for Windows only). All PHP
|
||||
; processes with the same cache ID and user share an OPcache instance.
|
||||
;opcache.cache_id=
|
||||
|
||||
; Enables and sets the second level cache directory.
|
||||
; It should improve performance when SHM memory is full, at server restart or
|
||||
; SHM reset. The default "" disables file based caching.
|
||||
;opcache.file_cache=
|
||||
|
||||
; Enables or disables opcode caching in shared memory.
|
||||
;opcache.file_cache_only=0
|
||||
|
||||
; Enables or disables checksum validation when script loaded from file cache.
|
||||
;opcache.file_cache_consistency_checks=1
|
||||
|
||||
; Implies opcache.file_cache_only=1 for a certain process that failed to
|
||||
; reattach to the shared memory (for Windows only). Explicitly enabled file
|
||||
; cache is required.
|
||||
;opcache.file_cache_fallback=1
|
||||
|
||||
; Enables or disables copying of PHP code (text segment) into HUGE PAGES.
|
||||
; This should improve performance, but requires appropriate OS configuration.
|
||||
;opcache.huge_code_pages=1
|
||||
|
||||
; Validate cached file permissions.
|
||||
;opcache.validate_permission=0
|
||||
|
||||
; Prevent name collisions in chroot'ed environment.
|
||||
;opcache.validate_root=0
|
||||
|
||||
; If specified, it produces opcode dumps for debugging different stages of
|
||||
; optimizations.
|
||||
;opcache.opt_debug_level=0
|
||||
|
||||
; Specifies a PHP script that is going to be compiled and executed at server
|
||||
; start-up.
|
||||
; https://php.net/opcache.preload
|
||||
;opcache.preload=
|
||||
|
||||
; Preloading code as root is not allowed for security reasons. This directive
|
||||
; facilitates to let the preloading to be run as another user.
|
||||
; https://php.net/opcache.preload_user
|
||||
;opcache.preload_user=
|
||||
|
||||
; Prevents caching files that are less than this number of seconds old. It
|
||||
; protects from caching of incompletely updated files. In case all file updates
|
||||
; on your site are atomic, you may increase performance by setting it to "0".
|
||||
;opcache.file_update_protection=2
|
||||
|
||||
; Absolute path used to store shared lockfiles (for *nix only).
|
||||
;opcache.lockfile_path=/tmp
|
||||
|
||||
; JIT control options. Either accepts a string or a 4 digit
|
||||
; int for advanced controls. See
|
||||
; https://www.php.net/manual/en/opcache.configuration.php#ini.opcache.jit
|
||||
opcache.jit=tracing
|
||||
|
||||
; The amount of shared memory to reserve for compiled JIT
|
||||
; code. A zero value disables the JIT.
|
||||
opcache.jit_buffer_size=100M
|
41
public/assets/patch/css/all.css
Normal file
@ -0,0 +1,41 @@
|
||||
@charset "utf-8";
|
||||
/* CSS Document */
|
||||
html {
|
||||
background:#000 url(../img/accept-bg.jpg) no-repeat center 0;
|
||||
color:#C2C3CF;
|
||||
font-size:12px;
|
||||
font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;
|
||||
margin:0 auto;
|
||||
width:605px;
|
||||
}
|
||||
|
||||
|
||||
#acceptWrapper {
|
||||
margin:0 auto;
|
||||
width:600px;
|
||||
}
|
||||
|
||||
#content {
|
||||
padding:20px 0 0 165px;
|
||||
width:395px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size:19px;
|
||||
color:#95bcd8;
|
||||
margin:0 0 15px 0;
|
||||
}
|
||||
|
||||
p {
|
||||
margin:0 0 20px 0;
|
||||
line-height:normal;
|
||||
}
|
||||
strong {
|
||||
color:#b9dbac;
|
||||
font-size:13px;
|
||||
font-weight:bold;
|
||||
}
|
||||
a {
|
||||
color:#b9dbac;
|
||||
font-size:12px;
|
||||
}
|
53
public/assets/patch/css/reset.css
Normal file
@ -0,0 +1,53 @@
|
||||
@charset "utf-8";
|
||||
/* CSS Document */
|
||||
|
||||
html, body, div, span, applet, object, iframe,
|
||||
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||
a, abbr, acronym, address, big, cite, code,
|
||||
del, dfn, em, font, img, ins, kbd, q, s, samp,
|
||||
small, strike, strong, sub, sup, tt, var,
|
||||
b, u, i, center,
|
||||
dl, dt, dd, ol, ul, li,
|
||||
fieldset, form, label, legend,
|
||||
table, caption, tbody, tfoot, thead, tr, th, td {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
outline: 0;
|
||||
font-size: 100%;
|
||||
vertical-align: baseline;
|
||||
background: transparent;
|
||||
}
|
||||
body {
|
||||
line-height: 1;
|
||||
}
|
||||
ol, ul {
|
||||
list-style: none;
|
||||
}
|
||||
blockquote, q {
|
||||
quotes: none;
|
||||
}
|
||||
blockquote:before, blockquote:after,
|
||||
q:before, q:after {
|
||||
content: '';
|
||||
content: none;
|
||||
}
|
||||
|
||||
/* remember to define focus styles! */
|
||||
:focus {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
/* remember to highlight inserts somehow! */
|
||||
ins {
|
||||
text-decoration: none;
|
||||
}
|
||||
del {
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
/* tables still need 'cellspacing="0"' in the markup */
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
BIN
public/assets/patch/img/accept-bg.jpg
Normal file
After Width: | Height: | Size: 47 KiB |
BIN
public/assets/patch/img/bg.png
Normal file
After Width: | Height: | Size: 4.5 KiB |
BIN
public/assets/patch/img/bg_01_metin2.jpg
Normal file
After Width: | Height: | Size: 103 KiB |
19
public/assets/patch/js/jquery-1.3.2.min.js
vendored
Normal file
113
public/assets/patch/js/jquery.pngFix.js
Normal file
@ -0,0 +1,113 @@
|
||||
/**
|
||||
* --------------------------------------------------------------------
|
||||
* jQuery-Plugin "pngFix"
|
||||
* Version: 1.2, 09.03.2009
|
||||
* by Andreas Eberhard, andreas.eberhard@gmail.com
|
||||
* http://jquery.andreaseberhard.de/
|
||||
*
|
||||
* Copyright (c) 2007 Andreas Eberhard
|
||||
* Licensed under GPL (http://www.opensource.org/licenses/gpl-license.php)
|
||||
*
|
||||
* Changelog:
|
||||
* 09.03.2009 Version 1.2
|
||||
* - Update for jQuery 1.3.x, removed @ from selectors
|
||||
* 11.09.2007 Version 1.1
|
||||
* - removed noConflict
|
||||
* - added png-support for input type=image
|
||||
* - 01.08.2007 CSS background-image support extension added by Scott Jehl, scott@filamentgroup.com, http://www.filamentgroup.com
|
||||
* 31.05.2007 initial Version 1.0
|
||||
* --------------------------------------------------------------------
|
||||
* @example $(function(){$(document).pngFix();});
|
||||
* @desc Fixes all PNG's in the document on document.ready
|
||||
*
|
||||
* jQuery(function(){jQuery(document).pngFix();});
|
||||
* @desc Fixes all PNG's in the document on document.ready when using noConflict
|
||||
*
|
||||
* @example $(function(){$('div.examples').pngFix();});
|
||||
* @desc Fixes all PNG's within div with class examples
|
||||
*
|
||||
* @example $(function(){$('div.examples').pngFix( { blankgif:'ext.gif' } );});
|
||||
* @desc Fixes all PNG's within div with class examples, provides blank gif for input with png
|
||||
* --------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
(function($) {
|
||||
|
||||
jQuery.fn.pngFix = function(settings) {
|
||||
|
||||
// Settings
|
||||
settings = jQuery.extend({
|
||||
blankgif: 'blank.gif'
|
||||
}, settings);
|
||||
|
||||
var ie55 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 5.5") != -1);
|
||||
var ie6 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 6.0") != -1);
|
||||
|
||||
if (jQuery.browser.msie && (ie55 || ie6)) {
|
||||
|
||||
//fix images with png-source
|
||||
jQuery(this).find("img[src$=.png]").each(function() {
|
||||
|
||||
jQuery(this).attr('width',jQuery(this).width());
|
||||
jQuery(this).attr('height',jQuery(this).height());
|
||||
|
||||
var prevStyle = '';
|
||||
var strNewHTML = '';
|
||||
var imgId = (jQuery(this).attr('id')) ? 'id="' + jQuery(this).attr('id') + '" ' : '';
|
||||
var imgClass = (jQuery(this).attr('class')) ? 'class="' + jQuery(this).attr('class') + '" ' : '';
|
||||
var imgTitle = (jQuery(this).attr('title')) ? 'title="' + jQuery(this).attr('title') + '" ' : '';
|
||||
var imgAlt = (jQuery(this).attr('alt')) ? 'alt="' + jQuery(this).attr('alt') + '" ' : '';
|
||||
var imgAlign = (jQuery(this).attr('align')) ? 'float:' + jQuery(this).attr('align') + ';' : '';
|
||||
var imgHand = (jQuery(this).parent().attr('href')) ? 'cursor:hand;' : '';
|
||||
if (this.style.border) {
|
||||
prevStyle += 'border:'+this.style.border+';';
|
||||
this.style.border = '';
|
||||
}
|
||||
if (this.style.padding) {
|
||||
prevStyle += 'padding:'+this.style.padding+';';
|
||||
this.style.padding = '';
|
||||
}
|
||||
if (this.style.margin) {
|
||||
prevStyle += 'margin:'+this.style.margin+';';
|
||||
this.style.margin = '';
|
||||
}
|
||||
var imgStyle = (this.style.cssText);
|
||||
|
||||
strNewHTML += '<span '+imgId+imgClass+imgTitle+imgAlt;
|
||||
strNewHTML += 'style="position:relative;white-space:pre-line;display:inline-block;background:transparent;'+imgAlign+imgHand;
|
||||
strNewHTML += 'width:' + jQuery(this).width() + 'px;' + 'height:' + jQuery(this).height() + 'px;';
|
||||
strNewHTML += 'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader' + '(src=\'' + jQuery(this).attr('src') + '\', sizingMethod=\'scale\');';
|
||||
strNewHTML += imgStyle+'"></span>';
|
||||
if (prevStyle != ''){
|
||||
strNewHTML = '<span style="position:relative;display:inline-block;'+prevStyle+imgHand+'width:' + jQuery(this).width() + 'px;' + 'height:' + jQuery(this).height() + 'px;'+'">' + strNewHTML + '</span>';
|
||||
}
|
||||
|
||||
jQuery(this).hide();
|
||||
jQuery(this).after(strNewHTML);
|
||||
|
||||
});
|
||||
|
||||
// fix css background pngs
|
||||
jQuery(this).find("*").each(function(){
|
||||
var bgIMG = jQuery(this).css('background-image');
|
||||
if(bgIMG.indexOf(".png")!=-1){
|
||||
var iebg = bgIMG.split('url("')[1].split('")')[0];
|
||||
jQuery(this).css('background-image', 'none');
|
||||
jQuery(this).get(0).runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + iebg + "',sizingMethod='scale')";
|
||||
}
|
||||
});
|
||||
|
||||
//fix input with png-source
|
||||
jQuery(this).find("input[src$=.png]").each(function() {
|
||||
var bgIMG = jQuery(this).attr('src');
|
||||
jQuery(this).get(0).runtimeStyle.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader' + '(src=\'' + bgIMG + '\', sizingMethod=\'scale\');';
|
||||
jQuery(this).attr('src', settings.blankgif)
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
return jQuery;
|
||||
|
||||
};
|
||||
|
||||
})(jQuery);
|
66
public/assets/teaser/dc/css/main.css
Normal file
@ -0,0 +1,66 @@
|
||||
html {height: 100%;}
|
||||
|
||||
body {background:#000 url('../img/main/body-bg.jpg') no-repeat 50% top;color:#ffffff;font:normal 13px Arial,sans-serif;min-height: 981px;margin:0 auto;height:100%;background-color:#000;}
|
||||
#page {margin:0 auto;padding:0;position:relative;width:624px;z-index:2;}
|
||||
|
||||
/* HEAD */
|
||||
#headcontent {width:658px;height:622px;display:block;background:url('../img/main/headcontent-bg.jpg') no-repeat;}
|
||||
#headcontent a.gratisbutton {position:absolute;top:250px;left:40px;width:77px;height:77px;display:block;}
|
||||
#headcontent .bar { margin-left: 0px }
|
||||
#story {position:absolute;top:350px;left:45px;width:258px;height:228px;background:url('../img/main/story.png') -5px 0px no-repeat;display:block;text-align:left;}
|
||||
#story .headline {position:absolute;top:0px;left:0px;width:245px;height:22px;color:#e5b386;font-size:16px;font-weight:bold;padding-left:10px;padding-top:8px;}
|
||||
#story .maintext {position:absolute;top:42px;left:10px;width:245px;height:185px;color:#ffffff;}
|
||||
#page #headcontent a.youtube {position:absolute;top:385px;left:302px;width:319px;height:242px;background:url('../img/main/headcontent-youtube.png') 0px -3px no-repeat transparent;display:block;}
|
||||
|
||||
/* CONTENT */
|
||||
#content {margin:0 auto;padding:0;position:relative;top:0px;width:658px;min-height:100px;display:block;background:url('../img/main/content-bg.jpg') repeat-y #000;}
|
||||
.bar {width:580px;height:38px;margin-left:45px;background:url('../img/main/content-bar.png') -5px 0px no-repeat transparent;display:block;text-align:left;color:#e5b386;font-size:16px;font-weight:bold;padding-left:10px;padding-top:8px;}
|
||||
.left_col {float:left;margin-left:55px;width:300px;font-family:Arial,sans-serif;}
|
||||
.right_col {float:left;margin-left:15px;width:240px;font-family:Arial,sans-serif;text-align:center;}
|
||||
.clear {clear:both;}
|
||||
.col1 {margin-left:55px;width:540px;font-family:Arial,sans-serif}
|
||||
.subtitle { color: rgb(233, 196, 155); font-size: 14px; font-weight: bold; margin-top: 15px; margin-bottom: 15px; }
|
||||
.subtext.last {margin-bottom: 15px;}
|
||||
img.homethumb {border:1px solid #999;margin-bottom:15px}
|
||||
a.homethumb, a.homethumb:hover {margin: 45px auto;width:150px}
|
||||
|
||||
/* NAVIGATION */
|
||||
#navigation {margin-left:35px;padding-top:3px;width:586px;height:48px;background:url('../img/main/nav-bar.jpg') no-repeat transparent;}
|
||||
#navigation a {background:url('../img/main/nav-btn.png') no-repeat transparent;width:160px;height:30px;display:block;text-align:center;padding-top:12px;text-decoration:none;font-size:16px;font-weight:bold;color:#e9d3c0;}
|
||||
#navigation a:hover, #navigation a:active {background:url('../img/main/nav-btn-hover.png') no-repeat transparent;width:160px;height:30px;display:block;text-align:center;padding-top:12px;text-decoration:none;font-size:16px;font-weight:bold;color:#e9d3c0;}
|
||||
#navigation a.index_nav {margin-left:10px;float:left;}
|
||||
#navigation a.news_nav {margin-left:43px;float:left;}
|
||||
#navigation a.media_nav {margin-left:43px;float:left;}
|
||||
|
||||
/* NEWS */
|
||||
.news_con {padding:10px;border-top:1px dotted #666;}
|
||||
.news_con a {color:#e5b386}
|
||||
h3, h3 a {color:#e5b386;font-size:14px;margin-bottom:5px;}
|
||||
p {margin-bottom:5px;}
|
||||
.date {color:#b1331b;font-size:12px;margin-right:5px;}
|
||||
.news_list {margin-left:15px;margin-bottom:15px;list-style-image:url('../img/main/news-list.png');}
|
||||
a.news_link {color:#e5b386;text-decoration:none}
|
||||
|
||||
/* MEDIA */
|
||||
#media {margin:0 0 0 0;}
|
||||
#media img {border:1px solid #999;}
|
||||
#media a {text-decoration:underline;color:#fff;}
|
||||
#media a:hover {color:#ccc;}
|
||||
.col4 {float:left;margin-left:20px;margin-bottom:15px;width:127px;text-align:center;}
|
||||
|
||||
/* SOCIALS */
|
||||
a.twitter {margin-left:45px;float:left;width:160px;height:70px;display:block;background:url('../img/main/socials-twitter.png') no-repeat transparent;}
|
||||
a.rss {float:left;margin-left:45px;margin-top:17px;width:160px;height:53px;display:block;background:url('../img/main/socials-rss.png') no-repeat transparent;}
|
||||
a.facebook {float:left;margin-left:45px;margin-top:17px;width:160px;height:53px;display:block;background:url('../img/main/socials-facebook.png') no-repeat transparent;}
|
||||
a.facebook_ymir {float:left;margin-left:45px;margin-top:17px;width:160px;height:53px;display:block;background:url('../img/main/socials-facebook-ymir.png') no-repeat transparent;}
|
||||
|
||||
/* FOOTER */
|
||||
#footer {background:url('../img/main/footer-bg.jpg') no-repeat scroll;color:#596580;display:block;float:left;font:10px Arial;height:202px;width:657px;text-align:center;}
|
||||
#footer a.playbutton {margin:0 auto;display:block;text-align:center;padding-top:10px;text-decoration:none;font-family:Arial,sans-serif;font-size:16px;font-weight:bold;color:#ffcc99;width:255px;height:40px;background:url('../img/main/playbutton.png') no-repeat transparent;}
|
||||
#footer a.playbutton:hover {margin:0 auto;display:block;display:block;text-align:center;padding-top:10px;text-decoration:none;font-family:Arial,sans-serif;font-size:16px;font-weight:bold;color:#ffcc99;width:255px;height:40px;background:url('../img/main/playbutton-hover.png') no-repeat transparent;}
|
||||
#footer a.gameforgelogo {margin:0 auto;display:block;width:152px;height:46px;background:url('../img/main/gameforgelogo.png') no-repeat transparent;}
|
||||
#footer a.gameforgelogo:hover {margin:0 auto;display:block;width:152px;height:46px;background:url('../img/main/gameforgelogo-hover.png') no-repeat transparent;}
|
||||
#footer img.usk {float:right;margin-right:10px;margin-top:-45px;}
|
||||
#footer p { padding:23px 0 0 0; }
|
||||
#footer p a { color:#e8bf47;text-decoration:none; padding:0 5px 0 5px;}
|
||||
#footer p a:hover {text-decoration:underline; padding:0 5px 0 5px;}
|
528
public/assets/teaser/dc/css/prettyPhoto.css
Normal file
@ -0,0 +1,528 @@
|
||||
/* ------------------------------------------------------------------------
|
||||
This you can edit.
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
/* ----------------------------------
|
||||
Default Theme
|
||||
----------------------------------- */
|
||||
|
||||
div.pp_default .pp_top,
|
||||
div.pp_default .pp_top .pp_middle,
|
||||
div.pp_default .pp_top .pp_left,
|
||||
div.pp_default .pp_top .pp_right,
|
||||
div.pp_default .pp_bottom,
|
||||
div.pp_default .pp_bottom .pp_left,
|
||||
div.pp_default .pp_bottom .pp_middle,
|
||||
div.pp_default .pp_bottom .pp_right { height: 13px; }
|
||||
|
||||
div.pp_default .pp_top .pp_left { background: url(../img/prettyPhoto/default/sprite.png) -78px -93px no-repeat; } /* Top left corner */
|
||||
div.pp_default .pp_top .pp_middle { background: url(../img/prettyPhoto/default/sprite_x.png) top left repeat-x; } /* Top pattern/color */
|
||||
div.pp_default .pp_top .pp_right { background: url(../img/prettyPhoto/default/sprite.png) -112px -93px no-repeat; } /* Top right corner */
|
||||
|
||||
div.pp_default .pp_content .ppt { color: #f8f8f8; }
|
||||
div.pp_default .pp_content_container .pp_left { background: url(../img/prettyPhoto/default/sprite_y.png) -7px 0 repeat-y; padding-left: 13px; }
|
||||
div.pp_default .pp_content_container .pp_right { background: url(../img/prettyPhoto/default/sprite_y.png) top right repeat-y; padding-right: 13px; }
|
||||
div.pp_default .pp_content { background-color: #fff; } /* Content background */
|
||||
div.pp_default .pp_next:hover { background: url(../img/prettyPhoto/default/sprite_next.png) center right no-repeat; cursor: pointer; } /* Next button */
|
||||
div.pp_default .pp_previous:hover { background: url(../img/prettyPhoto/default/sprite_prev.png) center left no-repeat; cursor: pointer; } /* Previous button */
|
||||
div.pp_default .pp_expand { background: url(../img/prettyPhoto/default/sprite.png) 0 -29px no-repeat; cursor: pointer; width: 28px; height: 28px; } /* Expand button */
|
||||
div.pp_default .pp_expand:hover { background: url(../img/prettyPhoto/default/sprite.png) 0 -56px no-repeat; cursor: pointer; } /* Expand button hover */
|
||||
div.pp_default .pp_contract { background: url(../img/prettyPhoto/default/sprite.png) 0 -84px no-repeat; cursor: pointer; width: 28px; height: 28px; } /* Contract button */
|
||||
div.pp_default .pp_contract:hover { background: url(../img/prettyPhoto/default/sprite.png) 0 -113px no-repeat; cursor: pointer; } /* Contract button hover */
|
||||
div.pp_default .pp_close { width: 30px; height: 30px; background: url(../img/prettyPhoto/default/sprite.png) 2px 1px no-repeat; cursor: pointer; } /* Close button */
|
||||
div.pp_default #pp_full_res .pp_inline { color: #000; }
|
||||
div.pp_default .pp_gallery ul li a { background: url(../img/prettyPhoto/default/default_thumb.png) center center #f8f8f8; border:1px solid #aaa; }
|
||||
div.pp_default .pp_gallery ul li a:hover,
|
||||
div.pp_default .pp_gallery ul li.selected a { border-color: #fff; }
|
||||
|
||||
div.pp_default .pp_gallery a.pp_arrow_previous,
|
||||
div.pp_default .pp_gallery a.pp_arrow_next { position: static; left: auto; }
|
||||
div.pp_default .pp_nav .pp_play,
|
||||
div.pp_default .pp_nav .pp_pause { background: url(../img/prettyPhoto/default/sprite.png) -51px 1px no-repeat; height:30px; width:30px; }
|
||||
div.pp_default .pp_nav .pp_pause { background-position: -51px -29px; }
|
||||
div.pp_default .pp_details { position: relative; }
|
||||
div.pp_default a.pp_arrow_previous,
|
||||
div.pp_default a.pp_arrow_next { background: url(../img/prettyPhoto/default/sprite.png) -31px -3px no-repeat; height: 20px; margin: 4px 0 0 0; width: 20px; }
|
||||
div.pp_default a.pp_arrow_next { left: 52px; background-position: -82px -3px; } /* The next arrow in the bottom nav */
|
||||
div.pp_default .pp_content_container .pp_details { margin-top: 5px; }
|
||||
div.pp_default .pp_nav { clear: none; height: 30px; width: 105px; position: relative; }
|
||||
div.pp_default .pp_nav .currentTextHolder{ font-family: Georgia; font-style: italic; font-color:#999; font-size: 11px; left: 75px; line-height: 25px; margin: 0; padding: 0 0 0 10px; position: absolute; top: 2px; }
|
||||
|
||||
div.pp_default .pp_close:hover, div.pp_default .pp_nav .pp_play:hover, div.pp_default .pp_nav .pp_pause:hover, div.pp_default .pp_arrow_next:hover, div.pp_default .pp_arrow_previous:hover { opacity:0.7; }
|
||||
|
||||
div.pp_default .pp_description{ font-size: 11px; font-weight: bold; line-height: 14px; margin: 5px 50px 5px 0; }
|
||||
|
||||
div.pp_default .pp_bottom .pp_left { background: url(../img/prettyPhoto/default/sprite.png) -78px -127px no-repeat; } /* Bottom left corner */
|
||||
div.pp_default .pp_bottom .pp_middle { background: url(../img/prettyPhoto/default/sprite_x.png) bottom left repeat-x; } /* Bottom pattern/color */
|
||||
div.pp_default .pp_bottom .pp_right { background: url(../img/prettyPhoto/default/sprite.png) -112px -127px no-repeat; } /* Bottom right corner */
|
||||
|
||||
div.pp_default .pp_loaderIcon { background: url(../img/prettyPhoto/default/loader.gif) center center no-repeat; } /* Loader icon */
|
||||
|
||||
|
||||
/* ----------------------------------
|
||||
Light Rounded Theme
|
||||
----------------------------------- */
|
||||
|
||||
|
||||
div.light_rounded .pp_top .pp_left { background: url(../img/prettyPhoto/light_rounded/sprite.png) -88px -53px no-repeat; } /* Top left corner */
|
||||
div.light_rounded .pp_top .pp_middle { background: #fff; } /* Top pattern/color */
|
||||
div.light_rounded .pp_top .pp_right { background: url(../img/prettyPhoto/light_rounded/sprite.png) -110px -53px no-repeat; } /* Top right corner */
|
||||
|
||||
div.light_rounded .pp_content .ppt { color: #000; }
|
||||
div.light_rounded .pp_content_container .pp_left,
|
||||
div.light_rounded .pp_content_container .pp_right { background: #fff; }
|
||||
div.light_rounded .pp_content { background-color: #fff; } /* Content background */
|
||||
div.light_rounded .pp_next:hover { background: url(../img/prettyPhoto/light_rounded/btnNext.png) center right no-repeat; cursor: pointer; } /* Next button */
|
||||
div.light_rounded .pp_previous:hover { background: url(../img/prettyPhoto/light_rounded/btnPrevious.png) center left no-repeat; cursor: pointer; } /* Previous button */
|
||||
div.light_rounded .pp_expand { background: url(../img/prettyPhoto/light_rounded/sprite.png) -31px -26px no-repeat; cursor: pointer; } /* Expand button */
|
||||
div.light_rounded .pp_expand:hover { background: url(../img/prettyPhoto/light_rounded/sprite.png) -31px -47px no-repeat; cursor: pointer; } /* Expand button hover */
|
||||
div.light_rounded .pp_contract { background: url(../img/prettyPhoto/light_rounded/sprite.png) 0 -26px no-repeat; cursor: pointer; } /* Contract button */
|
||||
div.light_rounded .pp_contract:hover { background: url(../img/prettyPhoto/light_rounded/sprite.png) 0 -47px no-repeat; cursor: pointer; } /* Contract button hover */
|
||||
div.light_rounded .pp_close { width: 75px; height: 22px; background: url(../img/prettyPhoto/light_rounded/sprite.png) -1px -1px no-repeat; cursor: pointer; } /* Close button */
|
||||
div.light_rounded .pp_details { position: relative; }
|
||||
div.light_rounded .pp_description { margin-right: 85px; }
|
||||
div.light_rounded #pp_full_res .pp_inline { color: #000; }
|
||||
div.light_rounded .pp_gallery a.pp_arrow_previous,
|
||||
div.light_rounded .pp_gallery a.pp_arrow_next { margin-top: 12px !important; }
|
||||
div.light_rounded .pp_nav .pp_play { background: url(../img/prettyPhoto/light_rounded/sprite.png) -1px -100px no-repeat; height: 15px; width: 14px; }
|
||||
div.light_rounded .pp_nav .pp_pause { background: url(../img/prettyPhoto/light_rounded/sprite.png) -24px -100px no-repeat; height: 15px; width: 14px; }
|
||||
|
||||
div.light_rounded .pp_arrow_previous { background: url(../img/prettyPhoto/light_rounded/sprite.png) 0 -71px no-repeat; } /* The previous arrow in the bottom nav */
|
||||
div.light_rounded .pp_arrow_previous.disabled { background-position: 0 -87px; cursor: default; }
|
||||
div.light_rounded .pp_arrow_next { background: url(../img/prettyPhoto/light_rounded/sprite.png) -22px -71px no-repeat; } /* The next arrow in the bottom nav */
|
||||
div.light_rounded .pp_arrow_next.disabled { background-position: -22px -87px; cursor: default; }
|
||||
|
||||
div.light_rounded .pp_bottom .pp_left { background: url(../img/prettyPhoto/light_rounded/sprite.png) -88px -80px no-repeat; } /* Bottom left corner */
|
||||
div.light_rounded .pp_bottom .pp_middle { background: #fff; } /* Bottom pattern/color */
|
||||
div.light_rounded .pp_bottom .pp_right { background: url(../img/prettyPhoto/light_rounded/sprite.png) -110px -80px no-repeat; } /* Bottom right corner */
|
||||
|
||||
div.light_rounded .pp_loaderIcon { background: url(../img/prettyPhoto/light_rounded/loader.gif) center center no-repeat; } /* Loader icon */
|
||||
|
||||
/* ----------------------------------
|
||||
Dark Rounded Theme
|
||||
----------------------------------- */
|
||||
|
||||
div.dark_rounded .pp_top .pp_left { background: url(../img/prettyPhoto/dark_rounded/sprite.png) -88px -53px no-repeat; } /* Top left corner */
|
||||
div.dark_rounded .pp_top .pp_middle { background: url(../img/prettyPhoto/dark_rounded/contentPattern.png) top left repeat; } /* Top pattern/color */
|
||||
div.dark_rounded .pp_top .pp_right { background: url(../img/prettyPhoto/dark_rounded/sprite.png) -110px -53px no-repeat; } /* Top right corner */
|
||||
|
||||
div.dark_rounded .pp_content_container .pp_left { background: url(../img/prettyPhoto/dark_rounded/contentPattern.png) top left repeat-y; } /* Left Content background */
|
||||
div.dark_rounded .pp_content_container .pp_right { background: url(../img/prettyPhoto/dark_rounded/contentPattern.png) top right repeat-y; } /* Right Content background */
|
||||
div.dark_rounded .pp_content { background: url(../img/prettyPhoto/dark_rounded/contentPattern.png) top left repeat; } /* Content background */
|
||||
div.dark_rounded .pp_next:hover { background: url(../img/prettyPhoto/dark_rounded/btnNext.png) center right no-repeat; cursor: pointer; } /* Next button */
|
||||
div.dark_rounded .pp_previous:hover { background: url(../img/prettyPhoto/dark_rounded/btnPrevious.png) center left no-repeat; cursor: pointer; } /* Previous button */
|
||||
div.dark_rounded .pp_expand { background: url(../img/prettyPhoto/dark_rounded/sprite.png) -31px -26px no-repeat; cursor: pointer; } /* Expand button */
|
||||
div.dark_rounded .pp_expand:hover { background: url(../img/prettyPhoto/dark_rounded/sprite.png) -31px -47px no-repeat; cursor: pointer; } /* Expand button hover */
|
||||
div.dark_rounded .pp_contract { background: url(../img/prettyPhoto/dark_rounded/sprite.png) 0 -26px no-repeat; cursor: pointer; } /* Contract button */
|
||||
div.dark_rounded .pp_contract:hover { background: url(../img/prettyPhoto/dark_rounded/sprite.png) 0 -47px no-repeat; cursor: pointer; } /* Contract button hover */
|
||||
div.dark_rounded .pp_close { width: 75px; height: 22px; background: url(../img/prettyPhoto/dark_rounded/sprite.png) -1px -1px no-repeat; cursor: pointer; } /* Close button */
|
||||
div.dark_rounded .pp_details { position: relative; }
|
||||
div.dark_rounded .pp_description { margin-right: 85px; }
|
||||
div.dark_rounded .currentTextHolder { color: #c4c4c4; }
|
||||
div.dark_rounded .pp_description { color: #fff; }
|
||||
div.dark_rounded #pp_full_res .pp_inline { color: #fff; }
|
||||
div.dark_rounded .pp_gallery a.pp_arrow_previous,
|
||||
div.dark_rounded .pp_gallery a.pp_arrow_next { margin-top: 12px !important; }
|
||||
div.dark_rounded .pp_nav .pp_play { background: url(../img/prettyPhoto/dark_rounded/sprite.png) -1px -100px no-repeat; height: 15px; width: 14px; }
|
||||
div.dark_rounded .pp_nav .pp_pause { background: url(../img/prettyPhoto/dark_rounded/sprite.png) -24px -100px no-repeat; height: 15px; width: 14px; }
|
||||
|
||||
div.dark_rounded .pp_arrow_previous { background: url(../img/prettyPhoto/dark_rounded/sprite.png) 0 -71px no-repeat; } /* The previous arrow in the bottom nav */
|
||||
div.dark_rounded .pp_arrow_previous.disabled { background-position: 0 -87px; cursor: default; }
|
||||
div.dark_rounded .pp_arrow_next { background: url(../img/prettyPhoto/dark_rounded/sprite.png) -22px -71px no-repeat; } /* The next arrow in the bottom nav */
|
||||
div.dark_rounded .pp_arrow_next.disabled { background-position: -22px -87px; cursor: default; }
|
||||
|
||||
div.dark_rounded .pp_bottom .pp_left { background: url(../img/prettyPhoto/dark_rounded/sprite.png) -88px -80px no-repeat; } /* Bottom left corner */
|
||||
div.dark_rounded .pp_bottom .pp_middle { background: url(../img/prettyPhoto/dark_rounded/contentPattern.png) top left repeat; } /* Bottom pattern/color */
|
||||
div.dark_rounded .pp_bottom .pp_right { background: url(../img/prettyPhoto/dark_rounded/sprite.png) -110px -80px no-repeat; } /* Bottom right corner */
|
||||
|
||||
div.dark_rounded .pp_loaderIcon { background: url(../img/prettyPhoto/dark_rounded/loader.gif) center center no-repeat; } /* Loader icon */
|
||||
|
||||
|
||||
/* ----------------------------------
|
||||
Dark Square Theme
|
||||
----------------------------------- */
|
||||
|
||||
div.dark_square .pp_left ,
|
||||
div.dark_square .pp_middle,
|
||||
div.dark_square .pp_right,
|
||||
div.dark_square .pp_content { background: #000; }
|
||||
|
||||
div.dark_square .currentTextHolder { color: #c4c4c4; }
|
||||
div.dark_square .pp_description { color: #fff; }
|
||||
div.dark_square .pp_loaderIcon { background: url(../img/prettyPhoto/dark_square/loader.gif) center center no-repeat; } /* Loader icon */
|
||||
|
||||
div.dark_square .pp_expand { background: url(../img/prettyPhoto/dark_square/sprite.png) -31px -26px no-repeat; cursor: pointer; } /* Expand button */
|
||||
div.dark_square .pp_expand:hover { background: url(../img/prettyPhoto/dark_square/sprite.png) -31px -47px no-repeat; cursor: pointer; } /* Expand button hover */
|
||||
div.dark_square .pp_contract { background: url(../img/prettyPhoto/dark_square/sprite.png) 0 -26px no-repeat; cursor: pointer; } /* Contract button */
|
||||
div.dark_square .pp_contract:hover { background: url(../img/prettyPhoto/dark_square/sprite.png) 0 -47px no-repeat; cursor: pointer; } /* Contract button hover */
|
||||
div.dark_square .pp_close { width: 75px; height: 22px; background: url(../img/prettyPhoto/dark_square/sprite.png) -1px -1px no-repeat; cursor: pointer; } /* Close button */
|
||||
div.dark_square .pp_details { position: relative; }
|
||||
div.dark_square .pp_description { margin: 0 85px 0 0; }
|
||||
div.dark_square #pp_full_res .pp_inline { color: #fff; }
|
||||
div.dark_square .pp_gallery a.pp_arrow_previous,
|
||||
div.dark_square .pp_gallery a.pp_arrow_next { margin-top: 12px !important; }
|
||||
div.dark_square .pp_nav { clear: none; }
|
||||
div.dark_square .pp_nav .pp_play { background: url(../img/prettyPhoto/dark_square/sprite.png) -1px -100px no-repeat; height: 15px; width: 14px; }
|
||||
div.dark_square .pp_nav .pp_pause { background: url(../img/prettyPhoto/dark_square/sprite.png) -24px -100px no-repeat; height: 15px; width: 14px; }
|
||||
|
||||
div.dark_square .pp_arrow_previous { background: url(../img/prettyPhoto/dark_square/sprite.png) 0 -71px no-repeat; } /* The previous arrow in the bottom nav */
|
||||
div.dark_square .pp_arrow_previous.disabled { background-position: 0 -87px; cursor: default; }
|
||||
div.dark_square .pp_arrow_next { background: url(../img/prettyPhoto/dark_square/sprite.png) -22px -71px no-repeat; } /* The next arrow in the bottom nav */
|
||||
div.dark_square .pp_arrow_next.disabled { background-position: -22px -87px; cursor: default; }
|
||||
|
||||
div.dark_square .pp_next:hover { background: url(../img/prettyPhoto/dark_square/btnNext.png) center right no-repeat; cursor: pointer; } /* Next button */
|
||||
div.dark_square .pp_previous:hover { background: url(../img/prettyPhoto/dark_square/btnPrevious.png) center left no-repeat; cursor: pointer; } /* Previous button */
|
||||
|
||||
|
||||
/* ----------------------------------
|
||||
Light Square Theme
|
||||
----------------------------------- */
|
||||
|
||||
div.light_square .pp_left ,
|
||||
div.light_square .pp_middle,
|
||||
div.light_square .pp_right,
|
||||
div.light_square .pp_content { background: #fff; }
|
||||
|
||||
div.light_square .pp_content .ppt { color: #000; }
|
||||
div.light_square .pp_expand { background: url(../img/prettyPhoto/light_square/sprite.png) -31px -26px no-repeat; cursor: pointer; } /* Expand button */
|
||||
div.light_square .pp_expand:hover { background: url(../img/prettyPhoto/light_square/sprite.png) -31px -47px no-repeat; cursor: pointer; } /* Expand button hover */
|
||||
div.light_square .pp_contract { background: url(../img/prettyPhoto/light_square/sprite.png) 0 -26px no-repeat; cursor: pointer; } /* Contract button */
|
||||
div.light_square .pp_contract:hover { background: url(../img/prettyPhoto/light_square/sprite.png) 0 -47px no-repeat; cursor: pointer; } /* Contract button hover */
|
||||
div.light_square .pp_close { width: 75px; height: 22px; background: url(../img/prettyPhoto/light_square/sprite.png) -1px -1px no-repeat; cursor: pointer; } /* Close button */
|
||||
div.light_square .pp_details { position: relative; }
|
||||
div.light_square .pp_description { margin-right: 85px; }
|
||||
div.light_square #pp_full_res .pp_inline { color: #000; }
|
||||
div.light_square .pp_gallery a.pp_arrow_previous,
|
||||
div.light_square .pp_gallery a.pp_arrow_next { margin-top: 12px !important; }
|
||||
div.light_square .pp_nav .pp_play { background: url(../img/prettyPhoto/light_square/sprite.png) -1px -100px no-repeat; height: 15px; width: 14px; }
|
||||
div.light_square .pp_nav .pp_pause { background: url(../img/prettyPhoto/light_square/sprite.png) -24px -100px no-repeat; height: 15px; width: 14px; }
|
||||
|
||||
div.light_square .pp_arrow_previous { background: url(../img/prettyPhoto/light_square/sprite.png) 0 -71px no-repeat; } /* The previous arrow in the bottom nav */
|
||||
div.light_square .pp_arrow_previous.disabled { background-position: 0 -87px; cursor: default; }
|
||||
div.light_square .pp_arrow_next { background: url(../img/prettyPhoto/light_square/sprite.png) -22px -71px no-repeat; } /* The next arrow in the bottom nav */
|
||||
div.light_square .pp_arrow_next.disabled { background-position: -22px -87px; cursor: default; }
|
||||
|
||||
div.light_square .pp_next:hover { background: url(../img/prettyPhoto/light_square/btnNext.png) center right no-repeat; cursor: pointer; } /* Next button */
|
||||
div.light_square .pp_previous:hover { background: url(../img/prettyPhoto/light_square/btnPrevious.png) center left no-repeat; cursor: pointer; } /* Previous button */
|
||||
|
||||
div.light_square .pp_loaderIcon { background: url(../img/prettyPhoto/light_rounded/loader.gif) center center no-repeat; } /* Loader icon */
|
||||
|
||||
|
||||
/* ----------------------------------
|
||||
Facebook style Theme
|
||||
----------------------------------- */
|
||||
|
||||
div.facebook .pp_top .pp_left { background: url(../img/prettyPhoto/facebook/sprite.png) -88px -53px no-repeat; } /* Top left corner */
|
||||
div.facebook .pp_top .pp_middle { background: url(../img/prettyPhoto/facebook/contentPatternTop.png) top left repeat-x; } /* Top pattern/color */
|
||||
div.facebook .pp_top .pp_right { background: url(../img/prettyPhoto/facebook/sprite.png) -110px -53px no-repeat; } /* Top right corner */
|
||||
|
||||
div.facebook .pp_content .ppt { color: #000; }
|
||||
div.facebook .pp_content_container .pp_left { background: url(../img/prettyPhoto/facebook/contentPatternLeft.png) top left repeat-y; } /* Content background */
|
||||
div.facebook .pp_content_container .pp_right { background: url(../img/prettyPhoto/facebook/contentPatternRight.png) top right repeat-y; } /* Content background */
|
||||
div.facebook .pp_content { background: #fff; } /* Content background */
|
||||
div.facebook .pp_expand { background: url(../img/prettyPhoto/facebook/sprite.png) -31px -26px no-repeat; cursor: pointer; } /* Expand button */
|
||||
div.facebook .pp_expand:hover { background: url(../img/prettyPhoto/facebook/sprite.png) -31px -47px no-repeat; cursor: pointer; } /* Expand button hover */
|
||||
div.facebook .pp_contract { background: url(../img/prettyPhoto/facebook/sprite.png) 0 -26px no-repeat; cursor: pointer; } /* Contract button */
|
||||
div.facebook .pp_contract:hover { background: url(../img/prettyPhoto/facebook/sprite.png) 0 -47px no-repeat; cursor: pointer; } /* Contract button hover */
|
||||
div.facebook .pp_close { width: 22px; height: 22px; background: url(../img/prettyPhoto/facebook/sprite.png) -1px -1px no-repeat; cursor: pointer; } /* Close button */
|
||||
div.facebook .pp_details { position: relative; }
|
||||
div.facebook .pp_description { margin: 0 37px 0 0; }
|
||||
div.facebook #pp_full_res .pp_inline { color: #000; }
|
||||
div.facebook .pp_loaderIcon { background: url(../img/prettyPhoto/facebook/loader.gif) center center no-repeat; } /* Loader icon */
|
||||
|
||||
div.facebook .pp_arrow_previous { background: url(../img/prettyPhoto/facebook/sprite.png) 0 -71px no-repeat; height: 22px; margin-top: 0; width: 22px; } /* The previous arrow in the bottom nav */
|
||||
div.facebook .pp_arrow_previous.disabled { background-position: 0 -96px; cursor: default; }
|
||||
div.facebook .pp_arrow_next { background: url(../img/prettyPhoto/facebook/sprite.png) -32px -71px no-repeat; height: 22px; margin-top: 0; width: 22px; } /* The next arrow in the bottom nav */
|
||||
div.facebook .pp_arrow_next.disabled { background-position: -32px -96px; cursor: default; }
|
||||
div.facebook .pp_nav { margin-top: 0; }
|
||||
div.facebook .pp_nav p { font-size: 15px; padding: 0 3px 0 4px; }
|
||||
div.facebook .pp_nav .pp_play { background: url(../img/prettyPhoto/facebook/sprite.png) -1px -123px no-repeat; height: 22px; width: 22px; }
|
||||
div.facebook .pp_nav .pp_pause { background: url(../img/prettyPhoto/facebook/sprite.png) -32px -123px no-repeat; height: 22px; width: 22px; }
|
||||
|
||||
div.facebook .pp_next:hover { background: url(../img/prettyPhoto/facebook/btnNext.png) center right no-repeat; cursor: pointer; } /* Next button */
|
||||
div.facebook .pp_previous:hover { background: url(../img/prettyPhoto/facebook/btnPrevious.png) center left no-repeat; cursor: pointer; } /* Previous button */
|
||||
|
||||
div.facebook .pp_bottom .pp_left { background: url(../img/prettyPhoto/facebook/sprite.png) -88px -80px no-repeat; } /* Bottom left corner */
|
||||
div.facebook .pp_bottom .pp_middle { background: url(../img/prettyPhoto/facebook/contentPatternBottom.png) top left repeat-x; } /* Bottom pattern/color */
|
||||
div.facebook .pp_bottom .pp_right { background: url(../img/prettyPhoto/facebook/sprite.png) -110px -80px no-repeat; } /* Bottom right corner */
|
||||
|
||||
|
||||
/* ------------------------------------------------------------------------
|
||||
DO NOT CHANGE
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
div.pp_pic_holder a:focus { outline:none; }
|
||||
|
||||
div.pp_overlay {
|
||||
background: #000;
|
||||
display: none;
|
||||
left: 0;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
z-index: 9500;
|
||||
}
|
||||
|
||||
div.pp_pic_holder {
|
||||
display: none;
|
||||
position: absolute;
|
||||
width: 100px;
|
||||
z-index: 10000;
|
||||
}
|
||||
|
||||
|
||||
.pp_top {
|
||||
height: 20px;
|
||||
position: relative;
|
||||
}
|
||||
* html .pp_top { padding: 0 20px; }
|
||||
|
||||
.pp_top .pp_left {
|
||||
height: 20px;
|
||||
left: 0;
|
||||
position: absolute;
|
||||
width: 20px;
|
||||
}
|
||||
.pp_top .pp_middle {
|
||||
height: 20px;
|
||||
left: 20px;
|
||||
position: absolute;
|
||||
right: 20px;
|
||||
}
|
||||
* html .pp_top .pp_middle {
|
||||
left: 0;
|
||||
position: static;
|
||||
}
|
||||
|
||||
.pp_top .pp_right {
|
||||
height: 20px;
|
||||
left: auto;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
.pp_content { height: 40px; min-width: 40px; }
|
||||
* html .pp_content { width: 40px; }
|
||||
|
||||
.pp_fade { display: none; }
|
||||
|
||||
.pp_content_container {
|
||||
position: relative;
|
||||
text-align: left;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.pp_content_container .pp_left { padding-left: 20px; }
|
||||
.pp_content_container .pp_right { padding-right: 20px; }
|
||||
|
||||
.pp_content_container .pp_details {
|
||||
float: left;
|
||||
margin: 10px 0 2px 0;
|
||||
}
|
||||
.pp_description {
|
||||
display: none;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.pp_social { float: left; margin: 7px 0 0 0; }
|
||||
.pp_social .facebook { float: left; position: relative; top: -1px; margin-left: 5px; width: 55px; overflow: hidden; }
|
||||
.pp_social .twitter { float: left; }
|
||||
|
||||
.pp_nav {
|
||||
clear: right;
|
||||
float: left;
|
||||
margin: 3px 10px 0 0;
|
||||
}
|
||||
|
||||
.pp_nav p {
|
||||
float: left;
|
||||
margin: 2px 4px;
|
||||
}
|
||||
|
||||
.pp_nav .pp_play,
|
||||
.pp_nav .pp_pause {
|
||||
float: left;
|
||||
margin-right: 4px;
|
||||
text-indent: -10000px;
|
||||
}
|
||||
|
||||
a.pp_arrow_previous,
|
||||
a.pp_arrow_next {
|
||||
display: block;
|
||||
float: left;
|
||||
height: 15px;
|
||||
margin-top: 3px;
|
||||
overflow: hidden;
|
||||
text-indent: -10000px;
|
||||
width: 14px;
|
||||
}
|
||||
|
||||
.pp_hoverContainer {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
z-index: 2000;
|
||||
}
|
||||
|
||||
.pp_gallery {
|
||||
display: none;
|
||||
left: 50%;
|
||||
margin-top: -50px;
|
||||
position: absolute;
|
||||
z-index: 10000;
|
||||
}
|
||||
|
||||
.pp_gallery div {
|
||||
float: left;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.pp_gallery ul {
|
||||
float: left;
|
||||
height: 35px;
|
||||
margin: 0 0 0 5px;
|
||||
padding: 0;
|
||||
position: relative;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.pp_gallery ul a {
|
||||
border: 1px #000 solid;
|
||||
border: 1px rgba(0,0,0,0.5) solid;
|
||||
display: block;
|
||||
float: left;
|
||||
height: 33px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.pp_gallery ul a:hover,
|
||||
.pp_gallery li.selected a { border-color: #fff; }
|
||||
|
||||
.pp_gallery ul a img { border: 0; }
|
||||
|
||||
.pp_gallery li {
|
||||
display: block;
|
||||
float: left;
|
||||
margin: 0 5px 0 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.pp_gallery li.default a {
|
||||
background: url(../img/prettyPhoto/facebook/default_thumbnail.gif) 0 0 no-repeat;
|
||||
display: block;
|
||||
height: 33px;
|
||||
width: 50px;
|
||||
}
|
||||
|
||||
.pp_gallery li.default a img { display: none; }
|
||||
|
||||
.pp_gallery .pp_arrow_previous,
|
||||
.pp_gallery .pp_arrow_next {
|
||||
margin-top: 7px !important;
|
||||
}
|
||||
|
||||
a.pp_next {
|
||||
background: url(../img/prettyPhoto/light_rounded/btnNext.png) 10000px 10000px no-repeat;
|
||||
display: block;
|
||||
float: right;
|
||||
height: 100%;
|
||||
text-indent: -10000px;
|
||||
width: 49%;
|
||||
}
|
||||
|
||||
a.pp_previous {
|
||||
background: url(../img/prettyPhoto/light_rounded/btnNext.png) 10000px 10000px no-repeat;
|
||||
display: block;
|
||||
float: left;
|
||||
height: 100%;
|
||||
text-indent: -10000px;
|
||||
width: 49%;
|
||||
}
|
||||
|
||||
a.pp_expand,
|
||||
a.pp_contract {
|
||||
cursor: pointer;
|
||||
display: none;
|
||||
height: 20px;
|
||||
position: absolute;
|
||||
right: 30px;
|
||||
text-indent: -10000px;
|
||||
top: 10px;
|
||||
width: 20px;
|
||||
z-index: 20000;
|
||||
}
|
||||
|
||||
a.pp_close {
|
||||
position: absolute; right: 0; top: 0;
|
||||
display: block;
|
||||
line-height:22px;
|
||||
text-indent: -10000px;
|
||||
}
|
||||
|
||||
.pp_bottom {
|
||||
height: 20px;
|
||||
position: relative;
|
||||
}
|
||||
* html .pp_bottom { padding: 0 20px; }
|
||||
|
||||
.pp_bottom .pp_left {
|
||||
height: 20px;
|
||||
left: 0;
|
||||
position: absolute;
|
||||
width: 20px;
|
||||
}
|
||||
.pp_bottom .pp_middle {
|
||||
height: 20px;
|
||||
left: 20px;
|
||||
position: absolute;
|
||||
right: 20px;
|
||||
}
|
||||
* html .pp_bottom .pp_middle {
|
||||
left: 0;
|
||||
position: static;
|
||||
}
|
||||
|
||||
.pp_bottom .pp_right {
|
||||
height: 20px;
|
||||
left: auto;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
.pp_loaderIcon {
|
||||
display: block;
|
||||
height: 24px;
|
||||
left: 50%;
|
||||
margin: -12px 0 0 -12px;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
width: 24px;
|
||||
}
|
||||
|
||||
#pp_full_res {
|
||||
line-height: 1 !important;
|
||||
}
|
||||
|
||||
#pp_full_res .pp_inline {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
#pp_full_res .pp_inline p { margin: 0 0 15px 0; }
|
||||
|
||||
div.ppt {
|
||||
color: #fff;
|
||||
display: none;
|
||||
font-size: 17px;
|
||||
margin: 0 0 5px 15px;
|
||||
z-index: 9999;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------
|
||||
Miscellaneous
|
||||
------------------------------------------------------------------------- */
|
||||
|
52
public/assets/teaser/dc/css/reset.css
Normal file
@ -0,0 +1,52 @@
|
||||
/* RESET CSS */
|
||||
|
||||
/* v1.0 | 20080212 */
|
||||
|
||||
html, body, div, span, applet, object, iframe,
|
||||
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||
a, abbr, acronym, address, big, cite, code,
|
||||
del, dfn, em, font, img, ins, kbd, q, s, samp,
|
||||
small, strike, strong, sub, sup, tt, var,
|
||||
b, u, i, center,
|
||||
dl, dt, dd, ol, ul, li,
|
||||
fieldset, form, label, legend,
|
||||
table, caption, tbody, tfoot, thead, tr, th, td {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
outline: 0;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
body {
|
||||
line-height: normal;
|
||||
}
|
||||
ol, ul {
|
||||
list-style: none;
|
||||
padding:0;
|
||||
}
|
||||
blockquote, q {
|
||||
quotes: none;
|
||||
}
|
||||
blockquote:before, blockquote:after, q:before, q:after {
|
||||
content: '';
|
||||
content: none;
|
||||
}
|
||||
|
||||
/* remember to define focus styles! */
|
||||
:focus {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
/* remember to highlight inserts somehow! */
|
||||
ins {
|
||||
text-decoration: none;
|
||||
}
|
||||
del {
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
/* tables still need 'cellspacing="0"' in the markup */
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
BIN
public/assets/teaser/dc/img/homethumb_1.jpg
Normal file
After Width: | Height: | Size: 7.0 KiB |
BIN
public/assets/teaser/dc/img/homethumb_2.jpg
Normal file
After Width: | Height: | Size: 5.9 KiB |
BIN
public/assets/teaser/dc/img/homethumb_3.jpg
Normal file
After Width: | Height: | Size: 4.3 KiB |
BIN
public/assets/teaser/dc/img/main/body-bg.jpg
Normal file
After Width: | Height: | Size: 192 KiB |
BIN
public/assets/teaser/dc/img/main/content-bar.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
public/assets/teaser/dc/img/main/content-bg.jpg
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
public/assets/teaser/dc/img/main/footer-bg.jpg
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
public/assets/teaser/dc/img/main/gameforgelogo-hover.png
Normal file
After Width: | Height: | Size: 5.4 KiB |
BIN
public/assets/teaser/dc/img/main/gameforgelogo.png
Normal file
After Width: | Height: | Size: 5.3 KiB |
BIN
public/assets/teaser/dc/img/main/headcontent-bg.jpg
Normal file
After Width: | Height: | Size: 90 KiB |
BIN
public/assets/teaser/dc/img/main/headcontent-youtube.png
Normal file
After Width: | Height: | Size: 106 KiB |
BIN
public/assets/teaser/dc/img/main/nav-bar.jpg
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
public/assets/teaser/dc/img/main/nav-btn-hover.png
Normal file
After Width: | Height: | Size: 5.7 KiB |
BIN
public/assets/teaser/dc/img/main/nav-btn.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
BIN
public/assets/teaser/dc/img/main/news-list.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
public/assets/teaser/dc/img/main/playbutton-hover.png
Normal file
After Width: | Height: | Size: 5.9 KiB |
BIN
public/assets/teaser/dc/img/main/playbutton.png
Normal file
After Width: | Height: | Size: 5.8 KiB |
BIN
public/assets/teaser/dc/img/main/socials-facebook-ymir.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
public/assets/teaser/dc/img/main/socials-facebook.png
Normal file
After Width: | Height: | Size: 9.1 KiB |
BIN
public/assets/teaser/dc/img/main/socials-rss.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
public/assets/teaser/dc/img/main/socials-twitter.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
public/assets/teaser/dc/img/main/story.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
public/assets/teaser/dc/img/media/artwork-1-thumb.jpg
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
public/assets/teaser/dc/img/media/artwork-1.jpg
Normal file
After Width: | Height: | Size: 204 KiB |
BIN
public/assets/teaser/dc/img/media/artwork-2-thumb.jpg
Normal file
After Width: | Height: | Size: 5.3 KiB |
BIN
public/assets/teaser/dc/img/media/artwork-2.jpg
Normal file
After Width: | Height: | Size: 376 KiB |
BIN
public/assets/teaser/dc/img/media/artwork-3-thumb.jpg
Normal file
After Width: | Height: | Size: 5.2 KiB |