mirror of
https://github.com/marcrobledo/savegame-editors.git
synced 2025-06-01 08:25:24 +00:00
310 lines
11 KiB
JavaScript
310 lines
11 KiB
JavaScript
/*
|
|
The legend of Zelda: Tears of the Kingdom savegame editor - Horse class (last update 2023-07-08)
|
|
|
|
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!==Horse.TYPE_NORMAL &&
|
|
this.horseType!==Horse.TYPE_ZELDA &&
|
|
this.horseType!==Horse.TYPE_EPONA &&
|
|
this.horseType!==Horse.TYPE_GIANT_BLACK &&
|
|
this.horseType!==Horse.TYPE_GIANT_WHITE &&
|
|
this.horseType!==Horse.TYPE_SPOT &&
|
|
this.horseType!==Horse.TYPE_GOLD
|
|
)
|
|
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')}),
|
|
//horseType:Pouch.createItemInput(item, 'horseType', 'Int', {min:1, max:100, label:_('Horse type')}),
|
|
colorType:Pouch.createItemInput(item, 'colorType', 'Int', {min:1, max:100, 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, name:_('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
|
|
},
|
|
GameRomHorseGold:{
|
|
horseType:Horse.TYPE_GOLD
|
|
},
|
|
GameRomHorseEpona:{
|
|
horseType:Horse.TYPE_EPONA
|
|
},
|
|
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'},
|
|
{value:hash('06'), name:'06 (Special: Gold)'}
|
|
];*/
|
|
Horse.MANES=[
|
|
{value:hash('None'), name:'None'},
|
|
{value:hash('Horse_Link_Mane'), name:'Normal Mane'},
|
|
{value:hash('Horse_Link_Mane_01'), name:'Mane 01'},
|
|
{value:hash('Horse_Link_Mane_02'), name:'Mane 02'},
|
|
{value:hash('Horse_Link_Mane_03'), name:'Mane 03'},
|
|
{value:hash('Horse_Link_Mane_04'), name:'Mane 04'},
|
|
{value:hash('Horse_Link_Mane_05'), name:'Mane 05'},
|
|
{value:hash('Horse_Link_Mane_06'), name:'Mane 06'},
|
|
{value:hash('Horse_Link_Mane_07'), name:'Mane 07'},
|
|
{value:hash('Horse_Link_Mane_08'), name:'Mane 08'},
|
|
{value:hash('Horse_Link_Mane_09'), name:'Mane 09'},
|
|
{value:hash('Horse_Link_Mane_10'), name:'Mane 10'},
|
|
{value:hash('Horse_Link_Mane_11'), name:'Mane 11'},
|
|
{value:hash('Horse_Link_Mane_12'), name:'Mane 12'},
|
|
{value:hash('Horse_Link_Mane_00L'), name:'Giant black mane'},
|
|
{value:hash('Horse_Link_Mane_01L'), name:'Giant white mane'},
|
|
{value:hash('Horse_Link_Mane_00S'), name:'*Donkey mane'}
|
|
];
|
|
|
|
Horse.buildHorseOptions=function(){
|
|
Horse.SADDLES=[
|
|
{value:hash('None'), name:_('None')},
|
|
{value:hash('GameRomHorseSaddle_00'), name:_('GameRomHorseSaddle_00')},
|
|
{value:hash('GameRomHorseSaddle_01'), name:_('GameRomHorseSaddle_01')},
|
|
{value:hash('GameRomHorseSaddle_02'), name:_('GameRomHorseSaddle_02')},
|
|
{value:hash('GameRomHorseSaddle_03'), name:_('GameRomHorseSaddle_03')},
|
|
{value:hash('GameRomHorseSaddle_04'), name:_('GameRomHorseSaddle_04')},
|
|
{value:hash('GameRomHorseSaddle_05'), name:_('GameRomHorseSaddle_05')},
|
|
{value:hash('GameRomHorseSaddle_06'), name:_('GameRomHorseSaddle_06')},
|
|
{value:hash('GameRomHorseSaddle_07'), name:_('GameRomHorseSaddle_07')},
|
|
{value:hash('GameRomHorseSaddle_00L'), name:_('GameRomHorseSaddle_00L')},
|
|
{value:hash('GameRomHorseSaddle_00S'), name:_('GameRomHorseSaddle_00S')}
|
|
];
|
|
Horse.REINS=[
|
|
{value:hash('None'), name:_('None')},
|
|
{value:hash('GameRomHorseReins_00'), name:_('GameRomHorseReins_00')},
|
|
{value:hash('GameRomHorseReins_01'), name:_('GameRomHorseReins_01')},
|
|
{value:hash('GameRomHorseReins_02'), name:_('GameRomHorseReins_02')},
|
|
{value:hash('GameRomHorseReins_03'), name:_('GameRomHorseReins_03')},
|
|
{value:hash('GameRomHorseReins_04'), name:_('GameRomHorseReins_04')},
|
|
{value:hash('GameRomHorseReins_05'), name:_('GameRomHorseReins_05')},
|
|
{value:hash('GameRomHorseReins_06'), name:_('GameRomHorseReins_06')},
|
|
{value:hash('GameRomHorseReins_00L'), name:_('GameRomHorseReins_00L')},
|
|
{value:hash('GameRomHorseReins_00S'), name:_('GameRomHorseReins_00S')}
|
|
];
|
|
} |