lukanpeixe / projetocastleroid

Trabalhando em códigos para o mod/mapa de aventura para Terraria produzido pelo Idealizador e seguidores do canal Press key to play.
Apache License 2.0
8 stars 7 forks source link

15 - Permitir alteração de música para ambientes específico. #31

Closed Gurigraphics closed 7 years ago

Gurigraphics commented 7 years ago

O código da Music Box (Title):

using Microsoft.Xna.Framework;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
using Terraria.ObjectData;
using Microsoft.Xna.Framework.Audio;
namespace Castleroid.Items
{
    public class Item : ModItem
    {
        public override void SetDefaults()
        {
        item.name = "Music Box (Title)";
        item.useStyle = 1;
        item.useTurn = true;
        item.useAnimation = 15;
        item.useTime = 10;
        item.autoReuse = true;
        item.consumable = true;
        item.createTile = 139;
        item.placeStyle = 3;
        item.width = 24;
        item.height = 24;
        item.rare = 4;
        item.value = 100000;
        item.accessory = true;           
        }       
        public override void AddRecipes()
        {
            ModRecipe recipe = new ModRecipe(mod);
            recipe.AddIngredient(ItemID.DirtBlock, 1);
            recipe.AddTile(TileID.WorkBenches);
            recipe.SetResult(this);
            recipe.AddRecipe(); 
        }       
    }       
}
Gurigraphics commented 7 years ago

Os IDs http://terraria.gamepedia.com/Music_Box


//  MusicBoxOverworldDay = 562
//  MusicBoxEerie = 563
//  MusicBoxNight = 564
//  MusicBoxTitle = 565
//  MusicBoxBoss1 = 567
//  MusicBoxJungle = 568
//  MusicBoxCorruption = 569
//  MusicBoxUndergroundCorruption = 570
//  MusicBoxTheHallow = 571
//  MusicBoxBoss2 = 572
//  MusicBoxUndergroundHallow = 573
//  MusicBoxBoss3 = 574
//  SoulofFlight = 575
//  MusicBox = 576
//  MusicBoxSnow = 1596
//  MusicBoxSpace = 1597
//  MusicBoxCrimson = 1598
//  MusicBoxBoss4 = 1599
//  MusicBoxAltOverworldDay = 1600
//  MusicBoxRain = 1601
//  MusicBoxIce = 1602
//  MusicBoxDesert = 1603
//  MusicBoxOcean = 1604
//  MusicBoxDungeon = 1605
//  MusicBoxPlantera = 1606
//  MusicBoxBoss5 = 1607
//  MusicBoxTemple = 1608
//  MusicBoxEclipse = 1609
//  MusicBoxMushrooms = 1610
//  MusicBoxPumpkinMoon = 1963
//  MusicBoxAltUnderground = 1964
//  MusicBoxFrostMoon = 1965
//  MusicWallpaper = 2010
//  MusicBoxUndergroundCrimson = 2742
//  MusicBoxLunarBoss = 3044
//  MusicBoxMartians = 3235
//  MusicBoxPirates = 3236
//  MusicBoxHell = 3237
//  MusicBoxTowers = 3370
//  MusicBoxGoblins = 3371
//  MusicBoxSandstorm = 3796
Gurigraphics commented 7 years ago

O problema aqui é o seguinte. O que define a música que vai tocar é o estilo da caixa.

//  MusicBoxSandstorm = 3796
this.placeStyle = 3796 - 1596 + 13;

Então, se não der pra elas ficarem invisíveis é melhor criar um spawn e pegar todas elas. Porque daí criar todas estas caixas vai dar no mesmo.

Outra solução talvez seja usar actuators e enviá-las para o plano de fundo.

Gurigraphics commented 7 years ago

Os estilos:

this.name = "Music Box (Overworld Day)";
this.placeStyle = 0;

this.name = "Music Box (Eerie)";
this.placeStyle = 1;

this.name = "Music Box (Night)";
this.placeStyle = 2;

this.name = "Music Box (Title)";
this.placeStyle = 3;

this.name = "Music Box (Underground)";
this.placeStyle = 4;

this.name = "Music Box (Boss 1)";
this.placeStyle = 5;

this.name = "Music Box (Jungle)";
this.placeStyle = 6;

this.name = "Music Box (Corruption)";
this.placeStyle = 7;

this.name = "Music Box (Underground Corruption)";
this.placeStyle = 8;

this.name = "Music Box (The Hallow)";
this.placeStyle = 9;

this.name = "Music Box (Boss 2)";
this.placeStyle = 10;

this.name = "Music Box (Underground Hallow)";
this.placeStyle = 11;

this.name = "Music Box (Boss 3)";
this.placeStyle = 12;

type >= 1596 && type <= 1610
{
        this.name = "Music Box";
        this.useStyle = 1;
        this.useTurn = true;
        this.useAnimation = 15;
        this.useTime = 10;
        this.autoReuse = true;
        this.consumable = true;
        this.createTile = 139;
        this.placeStyle = type - 1596 + 13;
        this.width = 24;
        this.height = 24;
        this.rare = 4;
        this.value = 100000;
        this.accessory = true;
}
lukanpeixe commented 7 years ago

Nesse caso eu não peguei o espirito da coisa... Em outras palavras, não entendi nada :P

Gurigraphics commented 7 years ago

O primeiro código cria uma Music Box como qualquer outro ítem. O item.placeStyle = 3; define qual o estilo da caixa(qual sprite, qual animação), e qual música vai tocar. Os IDS servem para saber qual spawn deve ser feito para pegar uma caixa.

Em resumo, para alterar a Sprite da caixa é preciso alterar a pasta Content.

lukanpeixe commented 7 years ago

Em resumo, para alterar a Sprite da caixa é preciso alterar a pasta Content.

Parece que não vamos ter opção mesmo, mexer na pasta content é muito atentador haha :smiling_imp: