Example #1
0
        private void EnableNPCSwatter(NPCdata npcdata)
        {
            for (int i = 0; i < npcdata.GetNPCCount(); i++)
            {
                if (npcdata.GetRoutine((ObjectId)i) == newTalkRoutines.Talk_norm)
                {
                    npcdata.SetRoutine((ObjectId)i, newTalkRoutines.Talk_kill);
                }
            }

            // Protect Lute and Rod Plate
            npcdata.SetRoutine(ObjectId.LutePlate, newTalkRoutines.Talk_norm);
            npcdata.SetRoutine(ObjectId.RodPlate, newTalkRoutines.Talk_norm);
        }
Example #2
0
        public void PacifistEnd(TalkRoutines talkroutines, NPCdata npcdata, bool extendedtraptiles)
        {
            // Remove ToFR Fiends tiles
            var tilesets = Get(TilesetDataOffset, TilesetDataCount * TilesetDataSize * TilesetCount).Chunk(TilesetDataSize).ToList();

            tilesets.ForEach(tile =>
            {
                if (IsBossTrapTile(tile))
                {
                    tile[1] = (byte)(extendedtraptiles ? 0x00 : 0x80);
                }
            });
            Put(TilesetDataOffset, tilesets.SelectMany(tileset => tileset.ToBytes()).ToArray());

            // Update Chaos script
            var Talk_Ending = talkroutines.Add(Blob.FromHex("4C38C9"));

            npcdata.SetRoutine((ObjectId)0x1A, (newTalkRoutines)Talk_Ending);

            //Update Fiends, Garland, Vampire, Astos and Bikke
            var battleJump = Blob.FromHex("2020B1");
            var mapreload  = Blob.FromHex("201896");

            talkroutines.ReplaceChunk(newTalkRoutines.Talk_fight, battleJump, Blob.FromHex("EAEAEA"));
            talkroutines.ReplaceChunk(newTalkRoutines.Talk_fight, mapreload, Blob.FromHex("EAEAEA"));
            talkroutines.ReplaceChunk(newTalkRoutines.Talk_Bikke, battleJump, Blob.FromHex("EAEAEA"));
            talkroutines.ReplaceChunk(newTalkRoutines.Talk_Bikke, mapreload, Blob.FromHex("EAEAEA"));
            talkroutines.ReplaceChunk(newTalkRoutines.Talk_Astos, battleJump, Blob.FromHex("EAEAEA"));
            talkroutines.ReplaceChunk(newTalkRoutines.Talk_Astos, mapreload, Blob.FromHex("EAEAEA"));
        }
Example #3
0
        public void HurrayDwarfFate(Fate fate, NPCdata npcdata, MT19337 rng)
        {
            if (fate == Fate.Spare)
            {
                // Protect Hurray Dwarf from NPC guillotine
                npcdata.SetRoutine(ObjectId.DwarfcaveDwarfHurray, newTalkRoutines.Talk_norm);
            }
            else
            {
                // Whether NPC guillotine is on or not, kill Hurray Dwarf
                npcdata.SetRoutine(ObjectId.DwarfcaveDwarfHurray, newTalkRoutines.Talk_kill);

                // Change the dialogue
                var dialogueStrings = new List <string>
                {
                    "No! I'm gonna disappear.\nYou'll never see\nme again. Please,\nI don't want to die.",
                    "If you strike me down,\nI shall become more\npowerful than you can\npossibly imagine.",
                    "Freeeeedom!!",
                    "I've seen things you\npeople wouldn't believe.\nAll those moments will\nbe lost in time..\nlike tears in rain..\nTime to die.",
                    "Become vengeance, David.\nBecome wrath.",
                    "My only regret..\nis that I have boneitis.",
                    "No, not the bees!\nNOT THE BEES!\nAAAAAAAAGH!\nTHEY'RE IN MY EYES!\nMY EYES! AAAAAAAAAAGH!",
                    "This is blasphemy!\nThis is madness!",
                    "Not like this..\nnot like this..",
                    "Suicide squad, attack!\n\n\n\nThat showed 'em, huh?",
                    "Well, what are you\nwaiting for?\nDo it. DO IT!!",
                    "The path you walk on has\nno end. Each step you\ntake is paved with the\ncorpses of your enemies.\nTheir souls will haunt\nyou forever. Hear me!\nMy spirit will be\nwatching you!",
                    "K-Kefka..!\nY-you're insane.."
                };

                //Put new dialogue to E6 since another Dwarf also says hurray
                InsertDialogs(0xE6, dialogueStrings.PickRandom(rng));
                npcdata.GetTalkArray(ObjectId.DwarfcaveDwarfHurray)[(int)TalkArrayPos.dialogue_1] = 0xE6;
                npcdata.GetTalkArray(ObjectId.DwarfcaveDwarfHurray)[(int)TalkArrayPos.dialogue_2] = 0xE6;
                npcdata.GetTalkArray(ObjectId.DwarfcaveDwarfHurray)[(int)TalkArrayPos.dialogue_3] = 0xE6;
            }
        }
Example #4
0
        private void SetNpcHint(ObjectId npc, int textId, string text, Dictionary <int, string> dialogs)
        {
            npcData.GetTalkArray(npc)[(int)TalkArrayPos.dialogue_1] = 0;
            npcData.GetTalkArray(npc)[(int)TalkArrayPos.dialogue_2] = (byte)textId;
            npcData.GetTalkArray(npc)[(int)TalkArrayPos.dialogue_3] = 0;
            npcData.SetRoutine(npc, newTalkRoutines.Talk_norm);
            if (text != null)
            {
                dialogs.Add(textId, text);
            }

            foreach (var npcinstance in rom.FindNpc(npc))
            {
                rom.SetNpc(npcinstance.Item1, npcinstance.Item2.Index, npc, npcinstance.Item2.Coord.x, npcinstance.Item2.Coord.y, npcinstance.Item2.InRoom, true);
            }
        }