Compare commits
2 Commits
ef842f99c6
...
7cd2260d04
| Author | SHA1 | Date |
|---|---|---|
|
|
7cd2260d04 | |
|
|
c74891af87 |
|
|
@ -8,7 +8,7 @@ enum CostumeSubTypesEnum: int
|
||||||
case COSTUME_HAIR = 1;
|
case COSTUME_HAIR = 1;
|
||||||
case COSTUME_MOUNT = 2;
|
case COSTUME_MOUNT = 2;
|
||||||
case COSTUME_WEAPON = 3;
|
case COSTUME_WEAPON = 3;
|
||||||
case COSTUME_SASH = 4;
|
case COSTUME_ACCE = 4;
|
||||||
case COSTUME_NUM_TYPES = 5;
|
case COSTUME_NUM_TYPES = 5;
|
||||||
|
|
||||||
public function getLabel(): string
|
public function getLabel(): string
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models\Enums;
|
||||||
|
|
||||||
|
enum GrowthPetAffectEnum: string
|
||||||
|
{
|
||||||
|
case JIJOONG_WARRIOR = 'JIJOONG_WARRIOR';
|
||||||
|
case JIJOONG_SURA = 'JIJOONG_SURA';
|
||||||
|
case JIJOONG_ASSASSIN = 'JIJOONG_ASSASSIN';
|
||||||
|
case JIJOONG_SHAMAN = 'JIJOONG_SHAMAN';
|
||||||
|
case PACHEON = 'PACHEON';
|
||||||
|
case BANYA = 'BANYA';
|
||||||
|
case CHEONRYEONG = 'CHEONRYEONG';
|
||||||
|
case CHOEHOENBIMU = 'CHOEHOENBIMU';
|
||||||
|
case HEAL = 'HEAL';
|
||||||
|
case STEALHP = 'STEALHP';
|
||||||
|
case STEALMP = 'STEALMP';
|
||||||
|
case BLOCK = 'BLOCK';
|
||||||
|
case REFLECT_MELEE = 'REFLECT_MELEE';
|
||||||
|
case GOLD_DROP = 'GOLD_DROP';
|
||||||
|
case BOW_DISTANCE = 'BOW_DISTANCE';
|
||||||
|
case INVINCIBILITY = 'INVINCIBILITY';
|
||||||
|
case REMOVAL = 'REMOVAL';
|
||||||
|
case POTION = 'POTION';
|
||||||
|
case MOB_BONUS = 'MOB_BONUS';
|
||||||
|
case EXP = 'EXP';
|
||||||
|
case HP_RECOVER = 'HP_RECOVER';
|
||||||
|
case FEATHER = 'FEATHER';
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models\Enums;
|
||||||
|
|
||||||
|
enum GrowthPetPointEnum: string
|
||||||
|
{
|
||||||
|
case RESIST_WARRIOR = 'RESIST_WARRIOR';
|
||||||
|
case RESIST_SURA = 'RESIST_SURA';
|
||||||
|
case RESIST_ASSASSIN = 'RESIST_ASSASSIN';
|
||||||
|
case RESIST_SHAMAN = 'RESIST_SHAMAN';
|
||||||
|
case RESIST_MAGIC_REDUCTION = 'RESIST_MAGIC_REDUCTION';
|
||||||
|
case MELEE_MAGIC_ATT_BONUS_PER = 'MELEE_MAGIC_ATT_BONUS_PER';
|
||||||
|
case ATTBONUS_MONSTER = 'ATTBONUS_MONSTER';
|
||||||
|
case PENETRATE_PCT = 'PENETRATE_PCT';
|
||||||
|
case CASTING_SPEED = 'CASTING_SPEED';
|
||||||
|
case BOW_DISTANCE = 'BOW_DISTANCE';
|
||||||
|
case STEAL_SP = 'STEAL_SP';
|
||||||
|
case STEAL_HP = 'STEAL_HP';
|
||||||
|
case KILL_HP_RECOVERY = 'KILL_HP_RECOVERY';
|
||||||
|
case BLOCK = 'BLOCK';
|
||||||
|
case REFLECT_MELEE = 'REFLECT_MELEE';
|
||||||
|
case GOLD_DOUBLE_BONUS = 'GOLD_DOUBLE_BONUS';
|
||||||
|
case EXP_DOUBLE_BONUS = 'EXP_DOUBLE_BONUS';
|
||||||
|
case POTION_BONUS = 'POTION_BONUS';
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models\Enums;
|
||||||
|
|
||||||
|
enum GrowthPetStateEnum: string
|
||||||
|
{
|
||||||
|
case UPBRINGING = 'UPBRINGING';
|
||||||
|
case BAG = 'BAG';
|
||||||
|
case SAFEBOX = 'SAFEBOX';
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models\Enums;
|
||||||
|
|
||||||
|
enum GrowthPetTypeEnum: string
|
||||||
|
{
|
||||||
|
case PASSIVE = 'PASSIVE';
|
||||||
|
case AUTO = 'AUTO';
|
||||||
|
}
|
||||||
|
|
@ -39,7 +39,10 @@ enum ItemTypesEnum: int
|
||||||
case ITEM_TYPE_SECONDARY_COIN = 32;
|
case ITEM_TYPE_SECONDARY_COIN = 32;
|
||||||
case ITEM_TYPE_RING = 33;
|
case ITEM_TYPE_RING = 33;
|
||||||
case ITEM_TYPE_BELT = 34;
|
case ITEM_TYPE_BELT = 34;
|
||||||
case ITEM_TYPE_MAX_NUM = 35;
|
case ITEM_TYPE_SOUL = 35;
|
||||||
|
case ITEM_TYPE_GACHA = 36;
|
||||||
|
case ITEM_TYPE_PET = 37;
|
||||||
|
case ITEM_TYPE_MAX_NUM = 38;
|
||||||
|
|
||||||
public function getLabel(): string
|
public function getLabel(): string
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models\Game\Player;
|
||||||
|
|
||||||
|
use App\Models\Enums\GrowthPetStateEnum;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class GrowthPet extends Model
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Indicates if the model should be timestamped.
|
||||||
|
*
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
public $timestamps = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The table associated with the model.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $table = 'growth_pet';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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 = [
|
||||||
|
'state' => GrowthPetStateEnum::class,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,60 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models\Game\Player;
|
||||||
|
|
||||||
|
use App\Models\Enums\GrowthPetAffectEnum;
|
||||||
|
use App\Models\Enums\GrowthPetPointEnum;
|
||||||
|
use App\Models\Enums\GrowthPetTypeEnum;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class GrowthPetSkillProto extends Model
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Indicates if the model should be timestamped.
|
||||||
|
*
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
public $timestamps = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The table associated with the model.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $table = 'growth_pet_skill_proto';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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 = [
|
||||||
|
'bType' => GrowthPetTypeEnum::class,
|
||||||
|
'setAffectFlag' => GrowthPetAffectEnum::class,
|
||||||
|
'szPointOn' => GrowthPetPointEnum::class,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
@ -44,7 +44,7 @@ use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||||
* @property int $part_main
|
* @property int $part_main
|
||||||
* @property int $part_base
|
* @property int $part_base
|
||||||
* @property int $part_hair
|
* @property int $part_hair
|
||||||
* @property int $part_sash
|
* @property int $part_acce
|
||||||
* @property int $skill_group
|
* @property int $skill_group
|
||||||
* @property string|null $skill_level
|
* @property string|null $skill_level
|
||||||
* @property int $alignment
|
* @property int $alignment
|
||||||
|
|
@ -62,6 +62,7 @@ use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||||
* @property-read Account $account
|
* @property-read Account $account
|
||||||
* @property-read HighscoreCache|null $highscore
|
* @property-read HighscoreCache|null $highscore
|
||||||
* @property-read \App\Models\Game\Player\PlayerIndex $index
|
* @property-read \App\Models\Game\Player\PlayerIndex $index
|
||||||
|
*
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|Player newModelQuery()
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Player newModelQuery()
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|Player newQuery()
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Player newQuery()
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|Player query()
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Player query()
|
||||||
|
|
@ -97,7 +98,7 @@ use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|Player wherePartBase($value)
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Player wherePartBase($value)
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|Player wherePartHair($value)
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Player wherePartHair($value)
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|Player wherePartMain($value)
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Player wherePartMain($value)
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|Player wherePartSash($value)
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Player wherePartAcce($value)
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|Player wherePlaytime($value)
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Player wherePlaytime($value)
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|Player whereQuickslot($value)
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Player whereQuickslot($value)
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|Player whereRandomHp($value)
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Player whereRandomHp($value)
|
||||||
|
|
@ -114,6 +115,7 @@ use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|Player whereX($value)
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Player whereX($value)
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|Player whereY($value)
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Player whereY($value)
|
||||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|Player whereZ($value)
|
* @method static \Illuminate\Database\Eloquent\Builder<static>|Player whereZ($value)
|
||||||
|
*
|
||||||
* @mixin \Eloquent
|
* @mixin \Eloquent
|
||||||
*/
|
*/
|
||||||
class Player extends Model
|
class Player extends Model
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,435 @@
|
||||||
|
{
|
||||||
|
"55701": [
|
||||||
|
{
|
||||||
|
"dwSkillVnum": 1,
|
||||||
|
"szName": "Resistance (Warrior)",
|
||||||
|
"bType": "PASSIVE",
|
||||||
|
"dwCooldown": 0,
|
||||||
|
"setAffectFlag": "JIJOONG_WARRIOR",
|
||||||
|
"szPointOn": "RESIST_WARRIOR",
|
||||||
|
"pointPoly": [
|
||||||
|
"1 + (k*0.42 + lv*0.15)",
|
||||||
|
"1 + (k*0.42 + lv*0.15)",
|
||||||
|
"1 + (k*0.42 + lv*0.15)",
|
||||||
|
"1 + (k*0.42 + lv*0.15)",
|
||||||
|
"1 + (k*0.455 + lv*0.1625)",
|
||||||
|
"1 + (k*0.455 + lv*0.1625)",
|
||||||
|
"1 + (k*0.455 + lv*0.1625)",
|
||||||
|
"1 + (k*0.455 + lv*0.1625)"
|
||||||
|
],
|
||||||
|
"szActivatePctPoly": "0",
|
||||||
|
"szDurationPoly": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dwSkillVnum": 2,
|
||||||
|
"szName": "Resistance (Sura)",
|
||||||
|
"bType": "PASSIVE",
|
||||||
|
"dwCooldown": 0,
|
||||||
|
"setAffectFlag": "JIJOONG_SURA",
|
||||||
|
"szPointOn": "RESIST_SURA",
|
||||||
|
"pointPoly": [
|
||||||
|
"1 + (k*0.42 + lv*0.15)",
|
||||||
|
"1 + (k*0.42 + lv*0.15)",
|
||||||
|
"1 + (k*0.42 + lv*0.15)",
|
||||||
|
"1 + (k*0.42 + lv*0.15)",
|
||||||
|
"1 + (k*0.455 + lv*0.1625)",
|
||||||
|
"1 + (k*0.455 + lv*0.1625)",
|
||||||
|
"1 + (k*0.455 + lv*0.1625)",
|
||||||
|
"1 + (k*0.455 + lv*0.1625)"
|
||||||
|
],
|
||||||
|
"szActivatePctPoly": "0",
|
||||||
|
"szDurationPoly": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dwSkillVnum": 3,
|
||||||
|
"szName": "Resistance (Ninja)",
|
||||||
|
"bType": "PASSIVE",
|
||||||
|
"dwCooldown": 0,
|
||||||
|
"setAffectFlag": "JIJOONG_ASSASSIN",
|
||||||
|
"szPointOn": "RESIST_ASSASSIN",
|
||||||
|
"pointPoly": [
|
||||||
|
"1 + (k*0.385 + lv*0.1375)",
|
||||||
|
"1 + (k*0.385 + lv*0.1375)",
|
||||||
|
"1 + (k*0.385 + lv*0.1375)",
|
||||||
|
"1 + (k*0.385 + lv*0.1375)",
|
||||||
|
"1 + (k*0.385 + lv*0.1375)",
|
||||||
|
"1 + (k*0.385 + lv*0.1375)",
|
||||||
|
"1 + (k*0.385 + lv*0.1375)",
|
||||||
|
"1 + (k*0.385 + lv*0.1375)"
|
||||||
|
],
|
||||||
|
"szActivatePctPoly": "0",
|
||||||
|
"szDurationPoly": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dwSkillVnum": 4,
|
||||||
|
"szName": "Resistance (Shaman)",
|
||||||
|
"bType": "PASSIVE",
|
||||||
|
"dwCooldown": 0,
|
||||||
|
"setAffectFlag": "JIJOONG_SHAMAN",
|
||||||
|
"szPointOn": "RESIST_SHAMAN",
|
||||||
|
"pointPoly": [
|
||||||
|
"1 + (k*0.385 + lv*0.1375)",
|
||||||
|
"1 + (k*0.385 + lv*0.1375)",
|
||||||
|
"1 + (k*0.385 + lv*0.1375)",
|
||||||
|
"1 + (k*0.385 + lv*0.1375)",
|
||||||
|
"1 + (k*0.385 + lv*0.1375)",
|
||||||
|
"1 + (k*0.385 + lv*0.1375)",
|
||||||
|
"1 + (k*0.385 + lv*0.1375)",
|
||||||
|
"1 + (k*0.385 + lv*0.1375)"
|
||||||
|
],
|
||||||
|
"szActivatePctPoly": "0",
|
||||||
|
"szDurationPoly": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dwSkillVnum": 6,
|
||||||
|
"szName": "Berserker",
|
||||||
|
"bType": "PASSIVE",
|
||||||
|
"dwCooldown": 0,
|
||||||
|
"setAffectFlag": "PACHEON",
|
||||||
|
"szPointOn": "MELEE_MAGIC_ATT_BONUS_PER",
|
||||||
|
"pointPoly": [
|
||||||
|
"1 + (k*0.245 + lv*0.0875)",
|
||||||
|
"1 + (k*0.245 + lv*0.0875)",
|
||||||
|
"1 + (k*0.245 + lv*0.0875)",
|
||||||
|
"1 + (k*0.245 + lv*0.0875)",
|
||||||
|
"1 + (k*0.245 + lv*0.0875)",
|
||||||
|
"1 + (k*0.245 + lv*0.0875)",
|
||||||
|
"1 + (k*0.245 + lv*0.0875)",
|
||||||
|
"1 + (k*0.245 + lv*0.0875)"
|
||||||
|
],
|
||||||
|
"szActivatePctPoly": "0",
|
||||||
|
"szDurationPoly": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dwSkillVnum": 7,
|
||||||
|
"szName": "Anti-Magic",
|
||||||
|
"bType": "PASSIVE",
|
||||||
|
"dwCooldown": 0,
|
||||||
|
"setAffectFlag": "BANYA",
|
||||||
|
"szPointOn": "RESIST_MAGIC_REDUCTION",
|
||||||
|
"pointPoly": [
|
||||||
|
"1 + (k*0.315 + lv*0.1125)",
|
||||||
|
"1 + (k*0.315 + lv*0.1125)",
|
||||||
|
"1 + (k*0.315 + lv*0.1125)",
|
||||||
|
"1 + (k*0.315 + lv*0.1125)",
|
||||||
|
"1 + (k*0.315 + lv*0.1125)",
|
||||||
|
"1 + (k*0.315 + lv*0.1125)",
|
||||||
|
"1 + (k*0.315 + lv*0.1125)",
|
||||||
|
"1 + (k*0.315 + lv*0.1125)"
|
||||||
|
],
|
||||||
|
"szActivatePctPoly": "0",
|
||||||
|
"szDurationPoly": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dwSkillVnum": 8,
|
||||||
|
"szName": "Haste",
|
||||||
|
"bType": "PASSIVE",
|
||||||
|
"dwCooldown": 0,
|
||||||
|
"setAffectFlag": "CHEONRYEONG",
|
||||||
|
"szPointOn": "CASTING_SPEED",
|
||||||
|
"pointPoly": [
|
||||||
|
"1 + (k*0.595 + lv*0.2125)",
|
||||||
|
"1 + (k*0.595 + lv*0.2125)",
|
||||||
|
"1 + (k*0.595 + lv*0.2125)",
|
||||||
|
"1 + (k*0.595 + lv*0.2125)",
|
||||||
|
"1 + (k*0.595 + lv*0.2125)",
|
||||||
|
"1 + (k*0.595 + lv*0.2125)",
|
||||||
|
"1 + (k*0.595 + lv*0.2125)",
|
||||||
|
"1 + (k*0.595 + lv*0.2125)"
|
||||||
|
],
|
||||||
|
"szActivatePctPoly": "0",
|
||||||
|
"szDurationPoly": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dwSkillVnum": 9,
|
||||||
|
"szName": "Drill",
|
||||||
|
"bType": "PASSIVE",
|
||||||
|
"dwCooldown": 0,
|
||||||
|
"setAffectFlag": "CHOEHOENBIMU",
|
||||||
|
"szPointOn": "PENETRATE_PCT",
|
||||||
|
"pointPoly": [
|
||||||
|
"1 + (k*0.315 + lv*0.1125)",
|
||||||
|
"1 + (k*0.315 + lv*0.1125)",
|
||||||
|
"1 + (k*0.315 + lv*0.1125)",
|
||||||
|
"1 + (k*0.315 + lv*0.1125)",
|
||||||
|
"1 + (k*0.315 + lv*0.1125)",
|
||||||
|
"1 + (k*0.315 + lv*0.1125)",
|
||||||
|
"1 + (k*0.315 + lv*0.1125)",
|
||||||
|
"1 + (k*0.315 + lv*0.1125)"
|
||||||
|
],
|
||||||
|
"szActivatePctPoly": "0",
|
||||||
|
"szDurationPoly": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dwSkillVnum": 10,
|
||||||
|
"szName": "Restoration",
|
||||||
|
"bType": "AUTO",
|
||||||
|
"dwCooldown": 480,
|
||||||
|
"setAffectFlag": "HEAL",
|
||||||
|
"szPointOn": null,
|
||||||
|
"pointPoly": [
|
||||||
|
"706.6 + (k*222.579 + lv*79.4925)",
|
||||||
|
"706.6 + (k*222.579 + lv*79.4925)",
|
||||||
|
"706.6 + (k*222.579 + lv*79.4925)",
|
||||||
|
"706.6 + (k*222.579 + lv*79.4925)",
|
||||||
|
"706.6 + (k*222.579 + lv*79.4925)",
|
||||||
|
"706.6 + (k*222.579 + lv*79.4925)",
|
||||||
|
"706.6 + (k*222.579 + lv*79.4925)",
|
||||||
|
"706.6 + (k*222.579 + lv*79.4925)"
|
||||||
|
],
|
||||||
|
"szActivatePctPoly": "58",
|
||||||
|
"szDurationPoly": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dwSkillVnum": 11,
|
||||||
|
"szName": "Vampirism",
|
||||||
|
"bType": "PASSIVE",
|
||||||
|
"dwCooldown": 0,
|
||||||
|
"setAffectFlag": "STEALHP",
|
||||||
|
"szPointOn": "STEAL_HP",
|
||||||
|
"pointPoly": [
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)"
|
||||||
|
],
|
||||||
|
"szActivatePctPoly": "0",
|
||||||
|
"szDurationPoly": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dwSkillVnum": 12,
|
||||||
|
"szName": "Spiritualism",
|
||||||
|
"bType": "PASSIVE",
|
||||||
|
"dwCooldown": 0,
|
||||||
|
"setAffectFlag": "STEALMP",
|
||||||
|
"szPointOn": "STEAL_SP",
|
||||||
|
"pointPoly": [
|
||||||
|
"1 + (k*0.21 + lv*0.075)",
|
||||||
|
"1 + (k*0.21 + lv*0.075)",
|
||||||
|
"1 + (k*0.21 + lv*0.075)",
|
||||||
|
"1 + (k*0.21 + lv*0.075)",
|
||||||
|
"1 + (k*0.21 + lv*0.075)",
|
||||||
|
"1 + (k*0.21 + lv*0.075)",
|
||||||
|
"1 + (k*0.21 + lv*0.075)",
|
||||||
|
"1 + (k*0.21 + lv*0.075)"
|
||||||
|
],
|
||||||
|
"szActivatePctPoly": "0",
|
||||||
|
"szDurationPoly": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dwSkillVnum": 13,
|
||||||
|
"szName": "Bulwark",
|
||||||
|
"bType": "PASSIVE",
|
||||||
|
"dwCooldown": 0,
|
||||||
|
"setAffectFlag": "BLOCK",
|
||||||
|
"szPointOn": "BLOCK",
|
||||||
|
"pointPoly": [
|
||||||
|
"1 + (k*0.385 + lv*0.1375)",
|
||||||
|
"1 + (k*0.385 + lv*0.1375)",
|
||||||
|
"1 + (k*0.385 + lv*0.1375)",
|
||||||
|
"1 + (k*0.385 + lv*0.1375)",
|
||||||
|
"1 + (k*0.385 + lv*0.1375)",
|
||||||
|
"1 + (k*0.385 + lv*0.1375)",
|
||||||
|
"1 + (k*0.385 + lv*0.1375)",
|
||||||
|
"1 + (k*0.385 + lv*0.1375)"
|
||||||
|
],
|
||||||
|
"szActivatePctPoly": "0",
|
||||||
|
"szDurationPoly": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dwSkillVnum": 14,
|
||||||
|
"szName": "Reflection",
|
||||||
|
"bType": "PASSIVE",
|
||||||
|
"dwCooldown": 0,
|
||||||
|
"setAffectFlag": "REFLECT_MELEE",
|
||||||
|
"szPointOn": "REFLECT_MELEE",
|
||||||
|
"pointPoly": [
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)"
|
||||||
|
],
|
||||||
|
"szActivatePctPoly": "0",
|
||||||
|
"szDurationPoly": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dwSkillVnum": 15,
|
||||||
|
"szName": "Yang Drop",
|
||||||
|
"bType": "PASSIVE",
|
||||||
|
"dwCooldown": 0,
|
||||||
|
"setAffectFlag": "GOLD_DROP",
|
||||||
|
"szPointOn": "GOLD_DOUBLE_BONUS",
|
||||||
|
"pointPoly": [
|
||||||
|
"10.6 + (k*3.339 + lv*1.1925)",
|
||||||
|
"10.8 + (k*3.402 + lv*1.215)",
|
||||||
|
"10.8 + (k*3.402 + lv*1.215)",
|
||||||
|
"11.2 + (k*3.528 + lv*1.26)",
|
||||||
|
"11.2 + (k*3.528 + lv*1.26)",
|
||||||
|
"11.6 + (k*3.654 + lv*1.305)",
|
||||||
|
"11.6 + (k*3.654 + lv*1.305)",
|
||||||
|
"11.6 + (k*3.654 + lv*1.305)"
|
||||||
|
],
|
||||||
|
"szActivatePctPoly": "0",
|
||||||
|
"szDurationPoly": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dwSkillVnum": 16,
|
||||||
|
"szName": "Range",
|
||||||
|
"bType": "PASSIVE",
|
||||||
|
"dwCooldown": 0,
|
||||||
|
"setAffectFlag": "BOW_DISTANCE",
|
||||||
|
"szPointOn": "BOW_DISTANCE",
|
||||||
|
"pointPoly": [
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.21 + lv*0.075)",
|
||||||
|
"1 + (k*0.21 + lv*0.075)",
|
||||||
|
"1 + (k*0.245 + lv*0.0875)",
|
||||||
|
"1 + (k*0.245 + lv*0.0875)",
|
||||||
|
"1 + (k*0.245 + lv*0.0875)",
|
||||||
|
"1 + (k*0.245 + lv*0.0875)"
|
||||||
|
],
|
||||||
|
"szActivatePctPoly": "0",
|
||||||
|
"szDurationPoly": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dwSkillVnum": 17,
|
||||||
|
"szName": "Immortal",
|
||||||
|
"bType": "AUTO",
|
||||||
|
"dwCooldown": 600,
|
||||||
|
"setAffectFlag": "INVINCIBILITY",
|
||||||
|
"szPointOn": null,
|
||||||
|
"pointPoly": [
|
||||||
|
"10 + (k*0.595 + lv*0.2125)",
|
||||||
|
"10 + (k*0.595 + lv*0.2125)",
|
||||||
|
"10 + (k*0.595 + lv*0.2125)",
|
||||||
|
"10 + (k*0.595 + lv*0.2125)",
|
||||||
|
"10 + (k*0.595 + lv*0.2125)",
|
||||||
|
"10 + (k*0.595 + lv*0.2125)",
|
||||||
|
"10 + (k*0.595 + lv*0.2125)",
|
||||||
|
"10 + (k*0.595 + lv*0.2125)"
|
||||||
|
],
|
||||||
|
"szActivatePctPoly": "53",
|
||||||
|
"szDurationPoly": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dwSkillVnum": 18,
|
||||||
|
"szName": "Panacea",
|
||||||
|
"bType": "AUTO",
|
||||||
|
"dwCooldown": 480,
|
||||||
|
"setAffectFlag": "REMOVAL",
|
||||||
|
"szPointOn": null,
|
||||||
|
"pointPoly": ["0", "0", "0", "0", "0", "0", "0", "0"],
|
||||||
|
"szActivatePctPoly": "41",
|
||||||
|
"szDurationPoly": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dwSkillVnum": 19,
|
||||||
|
"szName": "Master Brewer",
|
||||||
|
"bType": "PASSIVE",
|
||||||
|
"dwCooldown": 0,
|
||||||
|
"setAffectFlag": "POTION",
|
||||||
|
"szPointOn": "POTION_BONUS",
|
||||||
|
"pointPoly": [
|
||||||
|
"1 + (k*0.315 + lv*0.1125)",
|
||||||
|
"1 + (k*0.315 + lv*0.1125)",
|
||||||
|
"1 + (k*0.315 + lv*0.1125)",
|
||||||
|
"1 + (k*0.315 + lv*0.1125)",
|
||||||
|
"1 + (k*0.315 + lv*0.1125)",
|
||||||
|
"1 + (k*0.315 + lv*0.1125)",
|
||||||
|
"1 + (k*0.315 + lv*0.1125)",
|
||||||
|
"1 + (k*0.315 + lv*0.1125)"
|
||||||
|
],
|
||||||
|
"szActivatePctPoly": "0",
|
||||||
|
"szDurationPoly": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dwSkillVnum": 20,
|
||||||
|
"szName": "Monster Hunter",
|
||||||
|
"bType": "PASSIVE",
|
||||||
|
"dwCooldown": 0,
|
||||||
|
"setAffectFlag": "MOB_BONUS",
|
||||||
|
"szPointOn": "ATTBONUS_MONSTER",
|
||||||
|
"pointPoly": [
|
||||||
|
"1 + (k*0.245 + lv*0.0875)",
|
||||||
|
"1 + (k*0.245 + lv*0.0875)",
|
||||||
|
"1 + (k*0.245 + lv*0.0875)",
|
||||||
|
"1 + (k*0.245 + lv*0.0875)",
|
||||||
|
"1 + (k*0.245 + lv*0.0875)",
|
||||||
|
"1 + (k*0.245 + lv*0.0875)",
|
||||||
|
"1 + (k*0.245 + lv*0.0875)",
|
||||||
|
"1 + (k*0.245 + lv*0.0875)"
|
||||||
|
],
|
||||||
|
"szActivatePctPoly": "0",
|
||||||
|
"szDurationPoly": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dwSkillVnum": 21,
|
||||||
|
"szName": "Eagle Eyes",
|
||||||
|
"bType": "PASSIVE",
|
||||||
|
"dwCooldown": 0,
|
||||||
|
"setAffectFlag": "EXP",
|
||||||
|
"szPointOn": "EXP_DOUBLE_BONUS",
|
||||||
|
"pointPoly": [
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)"
|
||||||
|
],
|
||||||
|
"szActivatePctPoly": "0",
|
||||||
|
"szDurationPoly": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dwSkillVnum": 22,
|
||||||
|
"szName": "Life Drain",
|
||||||
|
"bType": "PASSIVE",
|
||||||
|
"dwCooldown": 0,
|
||||||
|
"setAffectFlag": "HP_RECOVER",
|
||||||
|
"szPointOn": "KILL_HP_RECOVERY",
|
||||||
|
"pointPoly": [
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)",
|
||||||
|
"1 + (k*0.175 + lv*0.0625)"
|
||||||
|
],
|
||||||
|
"szActivatePctPoly": "0",
|
||||||
|
"szDurationPoly": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"dwSkillVnum": 23,
|
||||||
|
"szName": "Light as a Feather",
|
||||||
|
"bType": "AUTO",
|
||||||
|
"dwCooldown": 10,
|
||||||
|
"setAffectFlag": "FEATHER",
|
||||||
|
"szPointOn": null,
|
||||||
|
"pointPoly": [
|
||||||
|
"150 + (k*5.25 + lv*1.875)",
|
||||||
|
"150 + (k*5.25 + lv*1.875)",
|
||||||
|
"150 + (k*5.25 + lv*1.875)",
|
||||||
|
"150 + (k*5.25 + lv*1.875)",
|
||||||
|
"150 + (k*5.25 + lv*1.875)",
|
||||||
|
"150 + (k*5.25 + lv*1.875)",
|
||||||
|
"150 + (k*5.25 + lv*1.875)",
|
||||||
|
"150 + (k*5.25 + lv*1.875)"
|
||||||
|
],
|
||||||
|
"szActivatePctPoly": "44+ (k*0.455 + lv*0.1625)",
|
||||||
|
"szDurationPoly": "50 + (k*2.8 + lv*1)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -41,12 +41,18 @@ return new class extends Migration
|
||||||
$table->integer('applyvalue1')->nullable()->default(0);
|
$table->integer('applyvalue1')->nullable()->default(0);
|
||||||
$table->tinyInteger('applytype2')->nullable()->default(0);
|
$table->tinyInteger('applytype2')->nullable()->default(0);
|
||||||
$table->integer('applyvalue2')->nullable()->default(0);
|
$table->integer('applyvalue2')->nullable()->default(0);
|
||||||
|
$table->tinyInteger('applytype3')->nullable()->default(0);
|
||||||
|
$table->integer('applyvalue3')->nullable()->default(0);
|
||||||
$table->integer('value0')->nullable()->default(0);
|
$table->integer('value0')->nullable()->default(0);
|
||||||
$table->integer('value1')->nullable()->default(0);
|
$table->integer('value1')->nullable()->default(0);
|
||||||
$table->integer('value2')->nullable()->default(0);
|
$table->integer('value2')->nullable()->default(0);
|
||||||
$table->integer('value3')->nullable()->default(0);
|
$table->integer('value3')->nullable()->default(0);
|
||||||
$table->integer('value4')->nullable()->default(0);
|
$table->integer('value4')->nullable()->default(0);
|
||||||
$table->integer('value5')->nullable()->default(0);
|
$table->integer('value5')->nullable()->default(0);
|
||||||
|
$table->integer('value6')->nullable()->default(0);
|
||||||
|
$table->integer('value7')->nullable()->default(0);
|
||||||
|
$table->integer('value8')->nullable()->default(0);
|
||||||
|
$table->integer('value9')->nullable()->default(0);
|
||||||
$table->tinyInteger('socket0')->nullable()->default(-1);
|
$table->tinyInteger('socket0')->nullable()->default(-1);
|
||||||
$table->tinyInteger('socket1')->nullable()->default(-1);
|
$table->tinyInteger('socket1')->nullable()->default(-1);
|
||||||
$table->tinyInteger('socket2')->nullable()->default(-1);
|
$table->tinyInteger('socket2')->nullable()->default(-1);
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use App\Models\Game\Player\RefineProto;
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use Illuminate\Database\Migrations\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
use Illuminate\Support\Facades\File;
|
use Illuminate\Support\Facades\File;
|
||||||
|
|
@ -15,7 +16,7 @@ return new class extends Migration
|
||||||
public function up()
|
public function up()
|
||||||
{
|
{
|
||||||
Schema::create('refine_proto', function (Blueprint $table) {
|
Schema::create('refine_proto', function (Blueprint $table) {
|
||||||
$table->unsignedInteger('id', true)->primary();
|
$table->unsignedInteger('id', false)->primary();
|
||||||
$table->unsignedInteger('vnum0')->default(0);
|
$table->unsignedInteger('vnum0')->default(0);
|
||||||
$table->smallInteger('count0')->default(0);
|
$table->smallInteger('count0')->default(0);
|
||||||
$table->unsignedInteger('vnum1')->default(0);
|
$table->unsignedInteger('vnum1')->default(0);
|
||||||
|
|
@ -34,7 +35,7 @@ return new class extends Migration
|
||||||
|
|
||||||
// Populate the table data
|
// Populate the table data
|
||||||
$data = File::json(database_path('data/refine_proto.json'));
|
$data = File::json(database_path('data/refine_proto.json'));
|
||||||
\App\Models\Game\Player\RefineProto::upsert($data, ['id']);
|
RefineProto::upsert($data, ['id']);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ return new class extends Migration
|
||||||
*/
|
*/
|
||||||
public function up(): void
|
public function up(): void
|
||||||
{
|
{
|
||||||
Schema::create('sash', function (Blueprint $table) {
|
Schema::create('acce', function (Blueprint $table) {
|
||||||
$table->unsignedInteger('pid');
|
$table->unsignedInteger('pid');
|
||||||
$table->timestamp('time')->useCurrent();
|
$table->timestamp('time')->useCurrent();
|
||||||
$table->tinyInteger('x');
|
$table->tinyInteger('x');
|
||||||
|
|
@ -26,11 +26,11 @@ return new class extends Migration
|
||||||
});
|
});
|
||||||
|
|
||||||
Schema::table('player', function (Blueprint $table) {
|
Schema::table('player', function (Blueprint $table) {
|
||||||
$table->unsignedSmallInteger('part_sash')->default(0)->after('part_hair');
|
$table->unsignedSmallInteger('part_acce')->default(0)->after('part_hair');
|
||||||
});
|
});
|
||||||
|
|
||||||
Schema::table('player_deleted', function (Blueprint $table) {
|
Schema::table('player_deleted', function (Blueprint $table) {
|
||||||
$table->unsignedSmallInteger('part_sash')->default(0)->after('part_hair');
|
$table->unsignedSmallInteger('part_acce')->default(0)->after('part_hair');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -39,14 +39,14 @@ return new class extends Migration
|
||||||
*/
|
*/
|
||||||
public function down(): void
|
public function down(): void
|
||||||
{
|
{
|
||||||
Schema::dropIfExists('sash');
|
Schema::dropIfExists('acce');
|
||||||
|
|
||||||
Schema::table('player', function (Blueprint $table) {
|
Schema::table('player', function (Blueprint $table) {
|
||||||
$table->dropColumn('part_sash');
|
$table->dropColumn('part_acce');
|
||||||
});
|
});
|
||||||
|
|
||||||
Schema::table('player_deleted', function (Blueprint $table) {
|
Schema::table('player_deleted', function (Blueprint $table) {
|
||||||
$table->dropColumn('part_sash');
|
$table->dropColumn('part_acce');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,59 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use App\Models\Enums\GrowthPetStateEnum;
|
||||||
|
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::create('growth_pet', function (Blueprint $table) {
|
||||||
|
$table->integer('id')->primary();
|
||||||
|
$table->integer('owner_id');
|
||||||
|
$table->integer('vnum');
|
||||||
|
|
||||||
|
$table->enum('state', array_column(GrowthPetStateEnum::cases(), 'value'))
|
||||||
|
->default(GrowthPetStateEnum::UPBRINGING)
|
||||||
|
->nullable();
|
||||||
|
|
||||||
|
$table->string('name', 20)->nullable();
|
||||||
|
|
||||||
|
$table->tinyInteger('size');
|
||||||
|
$table->integer('level')->default(1)->nullable();
|
||||||
|
$table->tinyInteger('level_step')->default(0)->nullable();
|
||||||
|
$table->tinyInteger('evolution')->default(1)->nullable();
|
||||||
|
$table->tinyInteger('type')->nullable();
|
||||||
|
|
||||||
|
$table->integer('hp')->default(0)->nullable();
|
||||||
|
$table->integer('sp')->default(0)->nullable();
|
||||||
|
$table->integer('def')->default(0)->nullable();
|
||||||
|
|
||||||
|
$table->tinyInteger('hp_apply')->default(0)->nullable();
|
||||||
|
$table->tinyInteger('sp_apply')->default(0)->nullable();
|
||||||
|
$table->tinyInteger('def_apply')->default(0)->nullable();
|
||||||
|
$table->tinyInteger('age_apply')->default(0)->nullable();
|
||||||
|
|
||||||
|
$table->binary('skill_level')->nullable();
|
||||||
|
|
||||||
|
$table->integer('exp')->nullable();
|
||||||
|
$table->integer('item_exp')->nullable();
|
||||||
|
|
||||||
|
$table->dateTime('birthday')->nullable();
|
||||||
|
$table->integer('end_time')->default(0)->nullable();
|
||||||
|
$table->integer('max_time')->nullable();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('growth_pet');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,72 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
use App\Models\Enums\GrowthPetAffectEnum;
|
||||||
|
use App\Models\Enums\GrowthPetPointEnum;
|
||||||
|
use App\Models\Enums\GrowthPetTypeEnum;
|
||||||
|
use App\Models\Game\Player\GrowthPetSkillProto;
|
||||||
|
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::create('growth_pet_skill_proto', function (Blueprint $table) {
|
||||||
|
$table->integer('dwPetVnum');
|
||||||
|
$table->integer('dwSkillVnum');
|
||||||
|
$table->string('szName', 32);
|
||||||
|
$table->enum('bType', array_column(GrowthPetTypeEnum::cases(), 'value'));
|
||||||
|
$table->integer('dwCooldown')->length(3);
|
||||||
|
|
||||||
|
$table->enum('setAffectFlag', array_column(GrowthPetAffectEnum::cases(), 'value'))->nullable();
|
||||||
|
|
||||||
|
$table->enum('szPointOn', array_column(GrowthPetPointEnum::cases(), 'value'))->nullable();
|
||||||
|
|
||||||
|
$table->string('szPointPoly1', 100);
|
||||||
|
$table->string('szPointPoly2', 100);
|
||||||
|
$table->string('szPointPoly3', 100);
|
||||||
|
$table->string('szPointPoly4', 100);
|
||||||
|
$table->string('szPointPoly5', 100);
|
||||||
|
$table->string('szPointPoly6', 100);
|
||||||
|
$table->string('szPointPoly7', 100);
|
||||||
|
$table->string('szPointPoly8', 100);
|
||||||
|
$table->string('szActivatePctPoly', 100);
|
||||||
|
$table->string('szDurationPoly', 100);
|
||||||
|
|
||||||
|
$table->primary(['dwPetVnum', 'dwSkillVnum']);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Populate the table data
|
||||||
|
$data = File::json(database_path('data/growth_pet_skill_proto.json'));
|
||||||
|
|
||||||
|
GrowthPetSkillProto::upsert(
|
||||||
|
collect($data)->flatMap(function ($skills, $petVnum) {
|
||||||
|
return collect($skills)->map(function ($skill) use ($petVnum) {
|
||||||
|
$skill['dwPetVnum'] = $petVnum;
|
||||||
|
$skill = [
|
||||||
|
...$skill,
|
||||||
|
...collect(array_pad($skill['pointPoly'], 8, 0))
|
||||||
|
->mapWithKeys(fn ($val, $key) => ['szPointPoly'.($key + 1) => $val])
|
||||||
|
->toArray(),
|
||||||
|
];
|
||||||
|
unset($skill['pointPoly']);
|
||||||
|
|
||||||
|
return $skill;
|
||||||
|
});
|
||||||
|
})->toArray(),
|
||||||
|
['dwPetVnum', 'dwSkillVnum']
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::dropIfExists('growth_pet_skill_proto');
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
<?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::table('item_attr', function (Blueprint $table) {
|
||||||
|
$table->string('pendant', 100)->after('ear');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('item_attr', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('pendant');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
Loading…
Reference in New Issue