allowed to change start dialog
This commit is contained in:
		
							parent
							
								
									b09b4e5bf5
								
							
						
					
					
						commit
						8a7a2a5d0b
					
				@ -1439,6 +1439,21 @@ local function get_fs_talkdialog(player, n_id, d_id)
 | 
			
		||||
            table.insert(formspec, "button[0.5," .. h .. ";53.8,0.9;add_option;]")
 | 
			
		||||
            table.insert(formspec, "tooltip[add_option;Adds a new option to this dialog. You can delete options via the option edit menu.]")
 | 
			
		||||
            table.insert(formspec, "label[0.7,"..(h+0.45)..";Add a new option/answer to this dialog. You can delete options via the option edit menu.]")
 | 
			
		||||
	    -- chat option: "Make this dialog the first one shown when starting to talk."
 | 
			
		||||
            h = h + 1
 | 
			
		||||
	    if(active_dialog and active_dialog.d_sort and tonumber(active_dialog.d_sort) ~= 0) then
 | 
			
		||||
                table.insert(formspec, "button[0.5," .. h .. ";53.8,0.9;make_first_option;]")
 | 
			
		||||
                table.insert(formspec, "tooltip[make_first_option;The NPC has to start with one dialog "..
 | 
			
		||||
			"when he is right-clicked. Make this dialog the one shown.]")
 | 
			
		||||
                table.insert(formspec, "label[0.7,"..(h+0.45)..";Make this dialog the first one shown "..
 | 
			
		||||
			"when starting a conversation.]")
 | 
			
		||||
	    -- (but only show this option if it's not already the first one)
 | 
			
		||||
            else
 | 
			
		||||
                table.insert(formspec, "box[0.5,"..h..";53.8,0.9;#BBBBBB]")
 | 
			
		||||
                table.insert(formspec, "label[0.7,"..(h+0.45)..";This dialog will be shown whenever "..
 | 
			
		||||
			"a conversation is started.]")
 | 
			
		||||
            end
 | 
			
		||||
 | 
			
		||||
            -- chat option: "That was all. I'm finished with giving you new orders. Remember them!"
 | 
			
		||||
            h = h + 1
 | 
			
		||||
            table.insert(formspec, "button_exit[0.5," .. h .. ";53.8,0.9;button_end_edit_mode;]")
 | 
			
		||||
@ -2081,6 +2096,27 @@ yl_speak_up.edit_mode_apply_changes = function(pname, fields)
 | 
			
		||||
	-- new options etc. may be added; store these IDs so that we can switch to the right target
 | 
			
		||||
	local result = {}
 | 
			
		||||
 | 
			
		||||
	-- make this the first dialog shown when starting a conversation
 | 
			
		||||
	if(fields.make_first_option) then
 | 
			
		||||
		-- check which dialog(s) previously had the highest priority and change thsoe
 | 
			
		||||
		for k, v in pairs(dialog.n_dialogs) do
 | 
			
		||||
			if(v and v.d_sort and (v.d_sort=="0" or v.d_sort==0)) then
 | 
			
		||||
				-- try to derive a sensible future sort priority from the key:
 | 
			
		||||
				-- here we make use of the d_<nr> pattern; but even if that fails to yield
 | 
			
		||||
				-- a number, the sort function will later be able to deal with it anyway
 | 
			
		||||
				local new_priority = string.sub(k, 3)
 | 
			
		||||
				dialog.n_dialogs[ k ].d_sort = new_priority
 | 
			
		||||
			end
 | 
			
		||||
		end
 | 
			
		||||
		-- actually make this the chat with the highest priority
 | 
			
		||||
		dialog.n_dialogs[ d_id ].d_sort = "0"
 | 
			
		||||
		-- this is not immediately saved, even though the changes to the previous dialog with
 | 
			
		||||
		-- the highest priority cannot be automaticly undone (but as long as it is not saved,
 | 
			
		||||
		-- it really does not matter; and when saving, the player has to take some care)
 | 
			
		||||
		table.insert(yl_speak_up.npc_was_changed[ n_id ],
 | 
			
		||||
			"Dialog "..d_id..": Turned into new start dialog.")
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	-- detect changes to d_text: text of the dialog (what the npc is saying)
 | 
			
		||||
	-- (only happens in dialog edit menu)
 | 
			
		||||
	if(fields.d_text and dialog.n_dialogs[ d_id ].d_text ~= fields.d_text) then
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user