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?")