mirror of
https://github.com/marcrobledo/savegame-editors.git
synced 2025-05-29 08:25:25 +00:00
342 lines
12 KiB
JavaScript
342 lines
12 KiB
JavaScript
/*
|
|
The legend of Zelda: Tears of the Kingdom savegame editor - Horse class (last update 2023-07-29)
|
|
|
|
by Marc Robledo 2023
|
|
horse data thanks to JonJaded, Ozymandias07 and Karlos007
|
|
*/
|
|
|
|
function Horse(itemData, overrideId){
|
|
this.category='horses';
|
|
|
|
this.id=itemData.id;
|
|
this.name=itemData.name;
|
|
this.mane=typeof itemData.mane==='string'? hash(itemData.mane): itemData.mane;
|
|
this.saddles=typeof itemData.saddles==='string'? hash(itemData.saddles): itemData.saddles;
|
|
this.reins=typeof itemData.reins==='string'? hash(itemData.reins): itemData.reins;
|
|
this.bond=itemData.bond;
|
|
this.bondChecked=itemData.bondChecked;
|
|
this.statsStrength=itemData.statsStrength;
|
|
this.statsSpeed=itemData.statsSpeed;
|
|
this.statsStamina=itemData.statsStamina;
|
|
this.statsPull=itemData.statsPull;
|
|
this.horseType=itemData.horseType;
|
|
this.colorType=itemData.colorType;
|
|
this.footType=itemData.footType;
|
|
this.amiiboUidHash=typeof itemData.amiiboUidHash==='string'? BigInt(itemData.amiiboUidHash) : itemData.amiiboUidHash;
|
|
this.roomId=itemData.roomId;
|
|
|
|
this.iconPattern=itemData.iconPattern;
|
|
this.iconEyeColor=itemData.iconEyeColor;
|
|
this.iconPrimaryColorRed=itemData.iconPrimaryColorRed;
|
|
this.iconPrimaryColorGreen=itemData.iconPrimaryColorGreen;
|
|
this.iconPrimaryColorBlue=itemData.iconPrimaryColorBlue;
|
|
this.iconSecondaryColorRed=itemData.iconSecondaryColorRed;
|
|
this.iconSecondaryColorGreen=itemData.iconSecondaryColorGreen;
|
|
this.iconSecondaryColorBlue=itemData.iconSecondaryColorBlue;
|
|
this.iconNoseColorRed=itemData.iconNoseColorRed;
|
|
this.iconNoseColorGreen=itemData.iconNoseColorGreen;
|
|
this.iconNoseColorBlue=itemData.iconNoseColorBlue;
|
|
this.iconHairPrimaryColorRed=itemData.iconHairPrimaryColorRed;
|
|
this.iconHairPrimaryColorGreen=itemData.iconHairPrimaryColorGreen;
|
|
this.iconHairPrimaryColorBlue=itemData.iconHairPrimaryColorBlue;
|
|
this.iconHairSecondaryColorRed=itemData.iconHairSecondaryColorRed;
|
|
this.iconHairSecondaryColorGreen=itemData.iconHairSecondaryColorGreen;
|
|
this.iconHairSecondaryColorBlue=itemData.iconHairSecondaryColorBlue;
|
|
|
|
if(this.horseType===6 || this.horseType===11 || this.horseType>13)
|
|
console.warn('unknown horse horseType value: '+this.horseType);
|
|
}
|
|
|
|
Horse.prototype.getItemTranslation=function(){
|
|
return _(this.id);
|
|
}
|
|
Horse.prototype.export=function(){
|
|
return{
|
|
totkStruct:Pouch.getCategoryItemStructId(this.category),
|
|
id:this.id,
|
|
name:this.name,
|
|
mane:this.mane,
|
|
saddles:this.saddles,
|
|
reins:this.reins,
|
|
bond:this.bond,
|
|
bondChecked:this.bondChecked,
|
|
statsStrength:this.statsStrength,
|
|
statsSpeed:this.statsSpeed,
|
|
statsStamina:this.statsStamina,
|
|
statsPull:this.statsPull,
|
|
horseType:this.horseType,
|
|
colorType:this.colorType,
|
|
footType:this.footType,
|
|
amiiboUidHash:this.amiiboUidHash.toString(),
|
|
roomId:this.roomId,
|
|
|
|
iconPattern:this.iconPattern,
|
|
iconEyeColor:this.iconEyeColor,
|
|
iconPrimaryColorRed:this.iconPrimaryColorRed,
|
|
iconPrimaryColorGreen:this.iconPrimaryColorGreen,
|
|
iconPrimaryColorBlue:this.iconPrimaryColorBlue,
|
|
iconSecondaryColorRed:this.iconSecondaryColorRed,
|
|
iconSecondaryColorGreen:this.iconSecondaryColorGreen,
|
|
iconSecondaryColorBlue:this.iconSecondaryColorBlue,
|
|
iconNoseColorRed:this.iconNoseColorRed,
|
|
iconNoseColorGreen:this.iconNoseColorGreen,
|
|
iconNoseColorBlue:this.iconNoseColorBlue,
|
|
iconHairPrimaryColorRed:this.iconHairPrimaryColorRed,
|
|
iconHairPrimaryColorGreen:this.iconHairPrimaryColorGreen,
|
|
iconHairPrimaryColorBlue:this.iconHairPrimaryColorBlue,
|
|
iconHairSecondaryColorRed:this.iconHairSecondaryColorRed,
|
|
iconHairSecondaryColorGreen:this.iconHairSecondaryColorGreen,
|
|
iconHairSecondaryColorBlue:this.iconHairSecondaryColorBlue
|
|
}
|
|
}
|
|
Horse.prototype.refreshHtmlInputs=function(fixValues, ignoreEquipment){
|
|
if(fixValues){
|
|
var defaultValues=Horse.DEFAULT_VALUES[this.id] || Horse.DEFAULT_VALUES['GameRomHorse'];
|
|
if(defaultValues.horseType)
|
|
this.horseType=defaultValues.horseType;
|
|
if(defaultValues.mane)
|
|
this.mane=defaultValues.mane;
|
|
if(defaultValues.saddles)
|
|
this.saddles=defaultValues.saddles;
|
|
if(defaultValues.reins)
|
|
this.reins=defaultValues.reins;
|
|
}
|
|
this._htmlInputs.colorType.disabled=(this.horseType!==Horse.TYPE_NORMAL);
|
|
this._htmlInputs.footType.disabled=(this.horseType!==Horse.TYPE_NORMAL);
|
|
}
|
|
|
|
|
|
|
|
Horse.buildHtmlElements=function(item){
|
|
item._htmlInputs={
|
|
name:Pouch.createItemInput(item, 'name', 'WString16', {maxLength:9, label:_('Horse name')}),
|
|
mane:Pouch.createItemInput(item, 'mane', 'Enum', {enumValues:Horse.MANES, label:_('Mane')}),
|
|
saddles:Pouch.createItemInput(item, 'saddles', 'Enum', {enumValues:Horse.SADDLES, label:_('Saddle')}),
|
|
reins:Pouch.createItemInput(item, 'reins', 'Enum', {enumValues:Horse.REINS, label:_('Reins')}),
|
|
bond:Pouch.createItemInput(item, 'bond', 'Float', {min:0, max:100, label:_('Bond')}),
|
|
statsStrength:Pouch.createItemInput(item, 'statsStrength', 'Int', {min:100, max:350, label:_('Stats: Strength')}),
|
|
statsSpeed:Pouch.createItemInput(item, 'statsSpeed', 'Int', {enumValues:Horse.OPTIONS_STATS, label:_('Stats: Speed')}),
|
|
statsStamina:Pouch.createItemInput(item, 'statsStamina', 'Int', {enumValues:Horse.OPTIONS_STATS_STAMINA, label:_('Stats: Stamina')}),
|
|
statsPull:Pouch.createItemInput(item, 'statsPull', 'Int', {enumValues:Horse.OPTIONS_STATS, label:_('Stats: Pull')}),
|
|
colorType:Pouch.createItemInput(item, 'colorType', 'Int', {min:0, max:40, label:_('Horse color')}),
|
|
footType:Pouch.createItemInput(item, 'footType', 'Int', {min:0, max:1, label:_('Foot type')})
|
|
};
|
|
}
|
|
|
|
|
|
Horse.OPTIONS_STATS=[
|
|
{value:1, name:'★★'},
|
|
{value:2, name:'★★★'},
|
|
{value:3, name:'★★★★'},
|
|
{value:4, name:'★★★★★'}
|
|
];
|
|
Horse.OPTIONS_STATS_STAMINA=[
|
|
{value:2, name:'★★'},
|
|
{value:3, name:'★★★'},
|
|
{value:4, name:'★★★★'},
|
|
{value:5, name:'★★★★★'},
|
|
{value:0, originalName:'Infinite'}
|
|
];
|
|
Horse.AVAILABILITY=[
|
|
'GameRomHorse',
|
|
'GameRomHorse00',
|
|
'GameRomHorse01',
|
|
'GameRomHorse02',
|
|
'GameRomHorse03',
|
|
'GameRomHorse04',
|
|
'GameRomHorse05',
|
|
'GameRomHorse06',
|
|
'GameRomHorse07',
|
|
'GameRomHorse08',
|
|
'GameRomHorse09',
|
|
'GameRomHorse10',
|
|
'GameRomHorse11',
|
|
'GameRomHorse12',
|
|
'GameRomHorse13',
|
|
'GameRomHorse14',
|
|
'GameRomHorse15',
|
|
'GameRomHorse16',
|
|
'GameRomHorse17',
|
|
'GameRomHorse18',
|
|
'GameRomHorse19',
|
|
'GameRomHorse20',
|
|
'GameRomHorse21',
|
|
'GameRomHorse22',
|
|
'GameRomHorse23',
|
|
'GameRomHorse25',
|
|
'GameRomHorse26',
|
|
'GameRomHorseEpona',
|
|
'GameRomHorseZelda',
|
|
'GameRomHorse00L',
|
|
'GameRomHorse01L',
|
|
'GameRomHorseGold',
|
|
'GameRomHorseSpPattern',
|
|
|
|
//untammable
|
|
'GameRomHorseBone',
|
|
'GameRomHorseBone_AllDay',
|
|
'GameRomHorseForStreetVender',
|
|
'GameRomHorseNushi'
|
|
];
|
|
|
|
|
|
|
|
Horse.TYPE_NORMAL=1; //normal
|
|
Horse.TYPE_ZELDA=3; //Royal White Stallion
|
|
Horse.TYPE_EPONA=4; //Epona
|
|
Horse.TYPE_GIANT_BLACK=2; //00L (Giant Black Stallion)
|
|
Horse.TYPE_GIANT_WHITE=13; //01L (Giant White Stallion)
|
|
Horse.TYPE_GOLD=12; //Gold
|
|
Horse.TYPE_SPOT=8; //SpPattern
|
|
|
|
Horse.TYPE_DEER=0; //deer
|
|
Horse.TYPE_DONKEY=7; //Donkey
|
|
Horse.TYPE_STALHORSE=5; //Stalhorse
|
|
Horse.TYPE_LORD=9; //Lord of the mountain
|
|
Horse.TYPE_BEAR=10; //Bear
|
|
|
|
Horse.DEFAULT_VALUES={
|
|
GameRomHorse:{
|
|
horseType:Horse.TYPE_NORMAL
|
|
},
|
|
GameRomHorseZelda:{
|
|
horseType:Horse.TYPE_ZELDA
|
|
},
|
|
GameRomHorseSpPattern:{
|
|
horseType:Horse.TYPE_SPOT,
|
|
iconPattern: '05',
|
|
iconEyeColor: 'Black',
|
|
iconPrimaryColorRed: 2,
|
|
iconPrimaryColorGreen: 3,
|
|
iconPrimaryColorBlue: 2,
|
|
iconSecondaryColorRed: 51,
|
|
iconSecondaryColorGreen: 41,
|
|
iconSecondaryColorBlue: 29,
|
|
iconNoseColorRed: 42,
|
|
iconNoseColorGreen: 32,
|
|
iconNoseColorBlue: 23,
|
|
iconHairPrimaryColorRed: 255,
|
|
iconHairPrimaryColorGreen: 255,
|
|
iconHairPrimaryColorBlue: 255,
|
|
iconHairSecondaryColorRed: 3,
|
|
iconHairSecondaryColorGreen: 3,
|
|
iconHairSecondaryColorBlue: 3
|
|
},
|
|
GameRomHorseGold:{
|
|
horseType:Horse.TYPE_GOLD
|
|
},
|
|
GameRomHorseEpona:{
|
|
horseType:Horse.TYPE_EPONA,
|
|
mane: hash('Horse_Link_Mane'),
|
|
saddles: hash('GameRomHorseSaddle_06') ,
|
|
reins: hash('GameRomHorseReins_06'),
|
|
statsStrength: 220,
|
|
statsSpeed: 3,
|
|
statsStamina: 4,
|
|
statsPull: 2,
|
|
horseType: 4,
|
|
colorType: 0,
|
|
footType: 0,
|
|
iconPattern: '01',
|
|
iconEyeColor: 'Black',
|
|
iconPrimaryColorRed: 14,
|
|
iconPrimaryColorGreen: 5,
|
|
iconPrimaryColorBlue: 3,
|
|
iconSecondaryColorRed: 168,
|
|
iconSecondaryColorGreen: 149,
|
|
iconSecondaryColorBlue: 104,
|
|
iconNoseColorRed: 5,
|
|
iconNoseColorGreen: 4,
|
|
iconNoseColorBlue: 3,
|
|
iconHairPrimaryColorRed: 255,
|
|
iconHairPrimaryColorGreen: 255,
|
|
iconHairPrimaryColorBlue: 255,
|
|
iconHairSecondaryColorRed: 197,
|
|
iconHairSecondaryColorGreen: 179,
|
|
iconHairSecondaryColorBlue: 136
|
|
},
|
|
GameRomHorse00L:{
|
|
horseType:Horse.TYPE_GIANT_BLACK,
|
|
mane:hash('Horse_Link_Mane_00L'),
|
|
saddles:hash('GameRomHorseSaddle_00L'),
|
|
reins:hash('GameRomHorseReins_00L')
|
|
},
|
|
GameRomHorse01L:{
|
|
horseType:Horse.TYPE_GIANT_WHITE,
|
|
mane:hash('Horse_Link_Mane_01L'),
|
|
saddles:hash('GameRomHorseSaddle_00L'),
|
|
reins:hash('GameRomHorseReins_00L')
|
|
},
|
|
GameRomHorse00S:{
|
|
//horseType:Horse.TYPE_DONKEY,
|
|
horseType:Horse.TYPE_NORMAL,
|
|
mane:hash('Horse_Link_Mane_00S'),
|
|
saddles:hash('GameRomHorseSaddle_00S'),
|
|
reins:hash('GameRomHorseReins_00S')
|
|
},
|
|
GameRomHorseBone:{
|
|
horseType:Horse.TYPE_STALHORSE
|
|
},
|
|
GameRomHorseBone_AllDay:{
|
|
horseType:Horse.TYPE_STALHORSE
|
|
},
|
|
GameRomHorseNushi:{
|
|
horseType:Horse.TYPE_LORD
|
|
}
|
|
}
|
|
|
|
|
|
/*Horse.ICON_PATTERNS=[
|
|
{value:hash('00'), name:'00'},
|
|
{value:hash('01'), name:'01'},
|
|
{value:hash('02'), name:'02'},
|
|
{value:hash('03'), name:'03'},
|
|
{value:hash('04'), name:'04'},
|
|
{value:hash('05'), name:'05 (Spotted?)'},
|
|
{value:hash('06'), name:'06 (Special: Gold)'}
|
|
];*/
|
|
Horse.MANES=[
|
|
{value:hash('None'), originalName:'None'},
|
|
{value:hash('Horse_Link_Mane'), originalName:'Normal Mane'},
|
|
{value:hash('Horse_Link_Mane_01'), originalName:'Mane 01'},
|
|
{value:hash('Horse_Link_Mane_02'), originalName:'Mane 02'},
|
|
{value:hash('Horse_Link_Mane_03'), originalName:'Mane 03'},
|
|
{value:hash('Horse_Link_Mane_04'), originalName:'Mane 04'},
|
|
{value:hash('Horse_Link_Mane_05'), originalName:'Mane 05'},
|
|
{value:hash('Horse_Link_Mane_06'), originalName:'Mane 06'},
|
|
{value:hash('Horse_Link_Mane_07'), originalName:'Mane 07'},
|
|
{value:hash('Horse_Link_Mane_08'), originalName:'Mane 08'},
|
|
{value:hash('Horse_Link_Mane_09'), originalName:'Mane 09'},
|
|
{value:hash('Horse_Link_Mane_10'), originalName:'Mane 10'},
|
|
{value:hash('Horse_Link_Mane_11'), originalName:'Mane 11'},
|
|
{value:hash('Horse_Link_Mane_12'), originalName:'Mane 12'},
|
|
{value:hash('Horse_Link_Mane_00L'), originalName:'Giant black mane'},
|
|
{value:hash('Horse_Link_Mane_01L'), originalName:'Giant white mane'},
|
|
{value:hash('Horse_Link_Mane_00S'), originalName:'*Donkey mane'}
|
|
];
|
|
|
|
Horse.SADDLES=[
|
|
{value:hash('None'), originalName:'None'},
|
|
{value:hash('GameRomHorseSaddle_00'), originalName:'GameRomHorseSaddle_00'},
|
|
{value:hash('GameRomHorseSaddle_01'), originalName:'GameRomHorseSaddle_01'},
|
|
{value:hash('GameRomHorseSaddle_02'), originalName:'GameRomHorseSaddle_02'},
|
|
{value:hash('GameRomHorseSaddle_03'), originalName:'GameRomHorseSaddle_03'},
|
|
{value:hash('GameRomHorseSaddle_04'), originalName:'GameRomHorseSaddle_04'},
|
|
{value:hash('GameRomHorseSaddle_05'), originalName:'GameRomHorseSaddle_05'},
|
|
{value:hash('GameRomHorseSaddle_06'), originalName:'GameRomHorseSaddle_06'},
|
|
{value:hash('GameRomHorseSaddle_07'), originalName:'GameRomHorseSaddle_07'},
|
|
{value:hash('GameRomHorseSaddle_00L'), originalName:'GameRomHorseSaddle_00L'},
|
|
{value:hash('GameRomHorseSaddle_00S'), originalName:'GameRomHorseSaddle_00S'}
|
|
];
|
|
Horse.REINS=[
|
|
{value:hash('None'), originalName:'None'},
|
|
{value:hash('GameRomHorseReins_00'), originalName:'GameRomHorseReins_00'},
|
|
{value:hash('GameRomHorseReins_01'), originalName:'GameRomHorseReins_01'},
|
|
{value:hash('GameRomHorseReins_02'), originalName:'GameRomHorseReins_02'},
|
|
{value:hash('GameRomHorseReins_03'), originalName:'GameRomHorseReins_03'},
|
|
{value:hash('GameRomHorseReins_04'), originalName:'GameRomHorseReins_04'},
|
|
{value:hash('GameRomHorseReins_05'), originalName:'GameRomHorseReins_05'},
|
|
{value:hash('GameRomHorseReins_06'), originalName:'GameRomHorseReins_06'},
|
|
{value:hash('GameRomHorseReins_00L'), originalName:'GameRomHorseReins_00L'},
|
|
{value:hash('GameRomHorseReins_00S'), originalName:'GameRomHorseReins_00S'}
|
|
]; |