Skip to main content

Dialogue

The dialogue class is responsible for all dialogue options that happen once a dialogue scene has opened.

_init(dialogueID)

The _init() function is a built-in Godot function that is called when Godot loads the script. There is a dialogueID parameter to let you set the dialogue's ID using the _init() function. You can do this by typing func _init().({DIALOGUE_ID}): as the function _init().

func _init().("dialogueID"):
pass;

show(character, position?)

Display the character on the screen. Either on the left or right side of the screen.

show("Queen", "left")
show("Suki", "right")
talk("Suki", "Hey Queen!")

character: String

ID for the character.

position: String = "left"

By default, the character will display on the left side of the screen. If you want them on the right, set this to " right"

hide(character)

Hides the character, if they are shown on the screen.

show("Queen", "left")
hide("Queen")

character: String

ID for the character.

hideAll()

Hides all of the characters on the screen.

show("Queen", "left")
show("Suki", "right")
hideAll()

talk(character, text, emotion?, blush?)

This is how you make a character talk. Make sure to display them on the screen using show.

talk("", "The girls walk into the brothel.")
talk("Queen", "Hey, what's up!")
talk("Suki", "Oh man, I'm so horny!", "Orgasm", true)

character: String

ID for the character. Leave this as an empty string if you want to narrate.

text: String

The text you want to display on the screen. Either what the character is saying or what the narrator is saying.

emotion: String = "Neutral"

These are the emotions you can choose from:

  • Neutral
  • Angry
  • Disgust
  • Happy
  • Orgasm
  • Sad
  • Seduce
  • Surprise
  • Unimpressed

blush: bool = false

If you want the character to blush set this to true.

setBackground(path)

Changes the background. For best practice, always use this at the start of your dialogues.

extends Dialogue


func _init().("my_quest_start"):
setBackground("res://assets/Maps/Town/TownBackground.png")
show("Esxea", "left")
talk("Esxea", "How did I get here?")

path: String

Location of your image. res://assets/Maps/Town/TownBackground.png

message(title, text)

A popup message.

message("Info", "There are new clothes available in the shop!")

title: String

For best practice, use "Info" if displaying information.

text: String

For best practice, don't write too much text.

setNaked(characterID, value)

Makes a character naked. They do not have to be visible to call this.

show("Suki", "left")
talk("Suki", "Hey!")
setNaked("Suki", true)
talk("Suki", "Where did my clothes go?!", "Orgasm", true)

characterID: String

ID for the character.

value: bool

true or false

setNakedMultiple(characterIDs, value)

Used to set the naked property of multiple characters at once.

setNakedMultiple(["Queen", "Suki", "Esxea", "Scarlett"], true)
setNakedMultiple(["Ardura", "Natasha"], false)

characterIDs: Array

An array of character IDs. ["Queen", "Suki", "Esxea"]

value: bool

true or false

fade()

Fades the screen black and also un-fades the screen.

talk("Queen", "Oh no, I'm fading away!!!", "Sad")
fade()
talk("Queen", "Ohp, I'm back!", "Happy")

completeQuest(quest_id)

Sets the quest to complete using the QuestManager.

talk("Mayor", "Thanks for helping me rescue the local cats, Queen!")
completeQuest("rescueCats")
message("Info", "Reputation increased with Easthollow cats!")

quest_id: String

ID for the quest.

showImage(path)

Shows an image on the screen. The user must click the image to continue the dialogue.

talk("", "Queen holds a sign in the middle of town.")
showImage("res://assets/images/QuestImages/QueenFreeBlowjobs.png")
setBackground("res://assets/images/QuestImages/QueenFreeBlowjobs.png")
# showImage and setBackground are usually paired well together

battle(path)

Start a battle. This will return a true or false condition that you can utilize using ifResult

talk("Queen", "Here comes all the goblins!")
battle("res://battles/fuckGoblins.gd")
ifResult("res://dialogue/fuckGoblinsWin.gd", "res://dialogue/fuckGoblinsLose.gd")

path: String

Path to the battle script.

ifResult(ifYes, ifNo)

This is used after a true or false conditional dialogue step. You can start a new dialogue based on what happened in the previous step.

# res://dialogue/fuckEasthollow.gd
battle("res://battles/fuckEasthollow.gd")
ifResult("res://dialogue/fuckEasthollowWin.gd", "res://dialogue/fuckEasthollowLose.gd")
# res://dialogue/fuckEasthollowWin.gd
message("Congratulations!", "You won!")
# res://dialogue/fuckEasthollowLose.gd
message("Sorry!", "You lost!")

ifYes: String

The path to the dialogue, if the previous condition was true.

ifNo: String

The path to the dialogue, if the previous condition was false.

question(question, answers)

This step is used to display a question and answers that the player can choose from. The dialogue is defined in the answer parameter and the dialogue will automatically start when the answer is clicked. If you are trying to ask a yes or no question, use confirmation instead.

# res://dialogue/scenes/walterTalk.gd
talk("Walter", "I've got 5 gold, what can I get?")
question(
"What should Queen do?",
[
{"answer": "Suck his dick", "dialogueID": "res://dialogue/walterSuck.gd"},
{"answer": "Pull down her pants", "dialogueID": "res://dialogue/walterFuck.gd"},
{"answer": "Tell him to go home", "dialogueID": "res://dialogue/walterGoHome.gd"},
]
)
# res://dialogue/scenes/walterSuck.gd
talk("Queen", "I'll suck ya off!")

question: String

The question you want the player to answer.

answers: Array

Answers are objects that have two properties, answer and dialogueID.

{
"answer": "The text to display",
"dialogueID": "res://dialogue/walterSuck.gd"
}

confirmation(title, text)

A yes or no question popup. Use this to ask the player a yes or no question.

extends Dialogue


func _init().("findSukiYesGold"):
confirmation("Upgrade?", "Spend 300 gold to upgrade the brothel?")
ifResult("findSukiYesUpgrade")

title: String

For best practice, use "Info" if displaying information.

text: String

For best practice, don't write too much text.

callFunc(ref)

This method is used to call your own custom function. We use this to check if outfits are unlocked, but it can be used for anything.

extends Dialogue


func _init().("cleanUpCrewEnd"):
callFunc(funcref(self, "checkOutfits"))
ifResult("cleanUpCrewEndYes", "cleanUpCrewEndNo")


func checkOutfits():
return QB.character.getCharacter("Queen").getOutfit("Maid").unlocked && QB.character.getCharacter("Esxea").getOutfit("Maid").unlocked

ref: FuncRef

A FuncRef is a reference to a function. This is a Godot class. FuncRef

changeVariant(character, variant)

Change a character's outfit variant.

equipOutfit("Queen", "Default")
changeVariant("Queen", "Topless")

character: String

ID of the character.

variant: String

ID of the variant.

evilAura(value)

Adds the purple aura picture to the background of the dialogue scene. This is above the background layer.

evilAura(true)
talk("Nigel", "Muahahah!")
evilAura(false)
talk("Nigel", "Hey, where did my power go?", "Sad")

value: bool

true or false

cumOn(character, bodyPart, amount)

Add cum to a character's body. For main characters, this will affect how much cum the girls have during battles.

talk("", "Daniel walks up to Suki and splurges all over her body.")
cumOn("Suki", "face", 4)
cumOn("Suki", "chest", 4)
cumOn("Suki", "hips", 4)
talk("Suki", "...", "Angry")
talk("Daniel", "Oops...", "Sad")

character: String

ID of the character.

bodyPart: String

face, chest, hips and dick are the only body parts you can use in this parameter.

amount: int

A number. 4 is the maximum amount of cum needed to plaster the girl's body part.

cumOnMultiple(characterIDs, bodyPart, amount)

Add cum to multiple character's body. Same as cumOn, but for multiple characters.

talk("", "Daniel walks up to the girls and splurges all over their bodies.")
cumOnMultiple(["Queen", "Suki", "Esxea", "Scarlett"], "face", 2)
talk("Suki", "...", "Angry")
talk("Queen", "Dude...", "Angry")

characterIDs: Array<String>

IDs of the character.

bodyPart: String

face, chest, hips and dick are the only body parts you can use in this parameter.

amount: int

A number. 4 is the maximum amount of cum needed to plaster the girl's body part.

switchMap(path)

Switches the map, behind the dialogue scene.

# fuckGreenhavenLose.gd
talk("Scarlett", "I can't fuck all of these wolves by myself!", "Angry")
message("Sorry!", "You lost the battle!")
switchMap("res://maps/Easthollow/Easthollow.tscn")

path: String

The path to the Godot scene you want to switch to.

clean(character)

Completely cleans the character. This will remove cum, and fix messy hair and makeup smears.

cumOn("Suki", "face", 4)
talk("Suki", "I'm taking a shower!")
clean("Suki")

character: String

ID of the character.

equipOutfit(character, outfitID)

Change a character's outfit.

equipOutfit("Queen", "Maid")
talk("Queen", "Now, I'm ready to clean!")
equipOutfit("Suki", "Maid")
talk("Suki", "Now, I'm ready to have sex!")

character: String

startDialogue(path)

A way to manually start a different dialogue.

talk("Suki", "Oh man, I'm tired. I hope there's no more customers left!")
switchDialogue("res://dialogue/sukiHardcoreGangbangScene")

path: String

The file path to the dialogue you want to switch to.

returnValue(val)

Stops the dialogue and returns a value, hopefully to the next scene. This is useful for branching boss battles, or dialogue scenes that have one root branch that they return to.

In the example below, branch_two.gd returns false, which will carry through branch_one.gd and back to start.gd which can now be handled by ifResult

# start.gd
talk("", "This is the starting dialogue.")
startDialogue("branch_one")
ifResult("success", "failure")
# branch_one.gd
talk("", "This is branch #1")
startDialogue("branch_two")
# branch_two.gd
returnValue(true)

val: Variant

Can be any type of variable. Current classes heavily prefer booleans.

clearCum(character)

Clear the cum off of a character, but don't clean them up. Messy hair and makeup smears will stay on.

cumOn("Suki", "face", 4)
talk("Suki", "Thanks for the cum, kind stranger!")
talk("", "Suki wipes her face clean.")
clearCum("Suki")
talk("Suki", "Got any more?")