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); }
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")); }
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; } }
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); } }