0
0
mirror of https://github.com/marcrobledo/savegame-editors.git synced 2025-05-29 08:25:25 +00:00
2023-07-29 11:29:28 +02:00

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'}
];