2022-05-16 23:48:22 +00:00
|
|
|
define ast_requirements = {
|
|
|
|
"category upper undergarment": 5,
|
|
|
|
"category lower undergarment": 5,
|
|
|
|
"category piercings & tattoos": 16,
|
|
|
|
"touch head": 4,
|
|
|
|
"touch breasts": 12,
|
2024-11-09 12:10:08 +00:00
|
|
|
"touch ass": 12,
|
2022-05-16 23:48:22 +00:00
|
|
|
"touch vagina": 18,
|
|
|
|
"unequip panties": 15,
|
|
|
|
"unequip bra": 15,
|
|
|
|
"unequip top": 3,
|
|
|
|
"unequip bottom": 3,
|
|
|
|
}
|
|
|
|
|
|
|
|
define ast_responses = {
|
|
|
|
"category_fail": "ast_reaction_category_fail",
|
|
|
|
"equip": "ast_reaction_equip",
|
|
|
|
"equip_fail": "ast_reaction_equip_fail",
|
|
|
|
"unequip": "ast_reaction_unequip",
|
|
|
|
"unequip_fail": "ast_reaction_unequip_fail",
|
|
|
|
"touch": "ast_reaction_touch",
|
|
|
|
"touch_fail": "ast_reaction_touch_fail",
|
|
|
|
"equip_outfit": "ast_reaction_equip_outfit",
|
|
|
|
"equip_outfit_fail": "ast_reaction_equip_outfit_fail",
|
|
|
|
"blacklist": "ast_reaction_blacklist",
|
|
|
|
"fallback": "ast_reaction_fallback",
|
|
|
|
}
|
|
|
|
|
|
|
|
label ast_reaction_category_fail(category):
|
|
|
|
if category == "upper undergarment":
|
|
|
|
ast "Good one sir!" ("smile", "narrow", "base", "mid")
|
|
|
|
gen "I wasn't--" ("base", xpos="far_left", ypos="head")
|
|
|
|
gen "..." ("base", xpos="far_left", ypos="head")
|
|
|
|
elif category == "lower undergarment":
|
|
|
|
ast "Why would I do that?" ("base", "narrow", "angry", "R")
|
2023-05-10 15:03:05 +00:00
|
|
|
gen "I don't know... Why wouldn't you do it?" ("base", xpos="far_left", ypos="head")
|
2022-05-16 23:48:22 +00:00
|
|
|
ast "..." ("base", "narrow", "base", "down")
|
|
|
|
elif category == "piercings & tattoos":
|
2023-05-10 15:03:05 +00:00
|
|
|
ast "Sounds awesome, but you'll just pick something stupid." ("angry", "narrow", "base", "R")
|
2022-05-16 23:48:22 +00:00
|
|
|
gen "I'd never..." ("base", xpos="far_left", ypos="head")
|
|
|
|
ast "Lies..." ("clench", "base", "base", "mid")
|
|
|
|
return
|
|
|
|
|
|
|
|
label ast_reaction_touch(what):
|
|
|
|
if what == "head":
|
2024-11-07 12:40:49 +00:00
|
|
|
$ show_kinetic_text(_("{shudder}*pat*{/shudder}"), sound="sounds/slap_03.ogg")
|
2023-03-10 23:09:32 +00:00
|
|
|
|
|
|
|
random:
|
|
|
|
block:
|
|
|
|
ast "Whatever..." ("base", "base", "base", "down")
|
|
|
|
block:
|
2024-11-09 14:55:53 +00:00
|
|
|
ast "I'm only letting you do this because... Err..." ("open", "closed", "base", "mid")
|
|
|
|
gen "Excuses, excuses..." ("base", xpos="far_left", ypos="head")
|
2023-03-10 23:09:32 +00:00
|
|
|
block:
|
|
|
|
ast "What's this obsession with petting coming from?" ("open", "narrow", "base", "L")
|
|
|
|
gen "*Err*..." ("base", xpos="far_left", ypos="head")
|
|
|
|
ast "When people called you eccentric I didn't think they meant bonkers mad..." ("clench", "closed", "base", "down")
|
2022-05-16 23:48:22 +00:00
|
|
|
elif what == "breasts":
|
2024-11-07 12:40:49 +00:00
|
|
|
$ show_kinetic_text(_("{shake}*boing*{/shake}"), sound="sounds/boing02.ogg")
|
2023-03-10 23:09:32 +00:00
|
|
|
|
|
|
|
random:
|
|
|
|
block:
|
2023-05-10 15:03:05 +00:00
|
|
|
ast "You're really enjoying that, aren't you?" ("base", "narrow", "base", "mid")
|
2024-11-09 14:55:53 +00:00
|
|
|
ast "Well, I suppose you're just a man after all..." ("open", "closed", "base", "mid")
|
2023-03-10 23:09:32 +00:00
|
|
|
block:
|
|
|
|
ast "Hey!" ("clench", "base", "base", "mid")
|
|
|
|
gen "What?" ("base", xpos="far_left", ypos="head")
|
|
|
|
ast "..." ("grin", "narrow", "base", "L")
|
|
|
|
block:
|
|
|
|
ast "Gross..." ("annoyed", "narrow", "base", "mid")
|
2022-05-16 23:48:22 +00:00
|
|
|
elif what == "vagina":
|
2024-11-09 12:10:08 +00:00
|
|
|
$ show_kinetic_text(_("*squelch*"), sound="sounds/drooling.ogg", trans=squeeze_text)
|
2023-03-10 23:09:32 +00:00
|
|
|
|
|
|
|
random:
|
|
|
|
block:
|
2023-04-25 23:29:33 +00:00
|
|
|
ast @ cheeks blush "What do you think you're doing?" ("clench", "base", "base", "mid")
|
2024-11-09 14:55:53 +00:00
|
|
|
gen "Touching you?" ("base", xpos="far_left", ypos="head")
|
2023-03-10 23:09:32 +00:00
|
|
|
ast "Surely that's against some rule..." ("annoyed", "base", "base", "R")
|
2023-05-10 15:03:05 +00:00
|
|
|
gen "Worried about rule breaking all of a sudden, are we?" ("base", xpos="far_left", ypos="head")
|
2023-03-10 23:09:32 +00:00
|
|
|
ast "No..." ("base", "narrow", "base", "mid")
|
|
|
|
block:
|
|
|
|
ast "Aren't you a bold one..." ("base", "narrow", "base", "mid")
|
|
|
|
block:
|
2023-05-10 15:03:05 +00:00
|
|
|
ast "Thought you could slip past my wards, did you?" ("clench", "base", "base", "mid")
|
2023-04-25 23:29:33 +00:00
|
|
|
ast @ cheeks blush "I'll have you know I felt none of that!" ("open", "closed", "base", "mid")
|
2024-11-09 12:10:08 +00:00
|
|
|
elif what == "ass":
|
2024-11-10 13:03:51 +00:00
|
|
|
$ show_kinetic_text(_("*spank*"), sound="sounds/spank.ogg", trans=expand_text)
|
2022-05-16 23:48:22 +00:00
|
|
|
|
2024-11-09 14:55:53 +00:00
|
|
|
random:
|
|
|
|
ast "Ouch! Well, well... Didn't think you had the balls to do that..." ("annoyed", "base", "base", "R")
|
|
|
|
ast "{shudder}*Ngh*!{/shudder} You--{w=0.2} you can do better than that." ("open", "closed", "base", "mid")
|
|
|
|
ast "Hey! If you're going to hit your students, at least do it properly!" ("clench", "base", "base", "mid")
|
|
|
|
ast "Whoa! That one had some power behind it! Impressive!" ("grin", "narrow", "base", "mid")
|
|
|
|
|
2022-05-16 23:48:22 +00:00
|
|
|
return
|
|
|
|
|
|
|
|
label ast_reaction_touch_fail(what):
|
|
|
|
if what == "head":
|
|
|
|
$ mouse_slap()
|
|
|
|
|
2023-03-10 23:09:32 +00:00
|
|
|
random:
|
2024-11-09 14:55:53 +00:00
|
|
|
ast "Hey!" ("annoyed", "base", "angry", "mid")
|
|
|
|
ast "I'm not your pet, [name_genie_astoria]..." ("clench", "base", "base", "mid")
|
|
|
|
ast "Oh sorry, my hand slipped." ("annoyed", "closed", "angry", "mid")
|
|
|
|
ast "Do that again, and you'll regret it..." ("clench", "base", "base", "mid")
|
|
|
|
ast "Stop..." ("annoyed", "base", "angry", "mid")
|
|
|
|
ast "What is it with old men and their obsession with head pats?" ("angry", "narrow", "base", "mid")
|
2023-03-10 23:09:32 +00:00
|
|
|
block:
|
|
|
|
ast "Don't!" ("clench", "base", "base", "mid")
|
|
|
|
$ mouse_slap()
|
|
|
|
ast "Don't!{fast} Do!" ("clench", "narrow", "base", "mid")
|
|
|
|
$ mouse_slap()
|
|
|
|
ast "Don't! Do!{fast} That!" ("scream", "narrow", "angry", "mid")
|
|
|
|
$ mouse_slap()
|
2024-06-25 14:49:58 +00:00
|
|
|
ast "Don't! Do! That!{fast} {shudder}Again!{/shudder}" ("scream", "closed", "angry", "mid")
|
2023-03-10 23:09:32 +00:00
|
|
|
$ mouse_slap()
|
2023-03-11 22:01:39 +00:00
|
|
|
play sound "sounds/kick.ogg"
|
2023-03-10 23:09:32 +00:00
|
|
|
with hpunch
|
|
|
|
pause 1.0
|
|
|
|
gen "(Ouch, that hurt!)" ("angry", xpos="far_left", ypos="head")
|
2022-05-16 23:48:22 +00:00
|
|
|
|
|
|
|
elif what == "breasts":
|
|
|
|
$ mouse_slap()
|
|
|
|
|
2023-03-10 23:09:32 +00:00
|
|
|
random:
|
2024-11-09 14:55:53 +00:00
|
|
|
ast "Hey, cut that out!" ("angry", "narrow", "base", "mid")
|
|
|
|
ast "Ouch, that hurts..." ("base", "base", "angry", "mid")
|
|
|
|
ast "Hey, no nipple twisters..." ("clench", "base", "base", "mid")
|
|
|
|
ast "Bad touch!" ("upset", "closed", "base", "mid")
|
|
|
|
ast "*EEEH* Don't you have better things to do?" ("scream", "closed", "angry", "mid")
|
|
|
|
ast "{size=+5}What are you doing?{/size}" ("scream", "narrow", "angry", "L")
|
|
|
|
ast "Stop that!" ("upset", "narrow", "base", "mid")
|
2022-05-16 23:48:22 +00:00
|
|
|
|
|
|
|
elif what == "vagina":
|
|
|
|
$ mouse_slap()
|
|
|
|
|
2023-03-10 23:09:32 +00:00
|
|
|
random:
|
2024-11-09 14:55:53 +00:00
|
|
|
ast "Hey, that's private property." ("base", "narrow", "angry", "down")
|
|
|
|
ast "Get your filthy hands off me, [name_genie_astoria]." ("upset", "narrow", "base", "mid")
|
|
|
|
ast "Stop it, you creep." ("annoyed", "narrow", "angry", "R")
|
|
|
|
ast "Why would you do that... nasty old man..." ("clench", "narrow", "base", "L")
|
|
|
|
ast "Don't touch me..." ("clench", "base", "base", "mid")
|
|
|
|
ast "Don't be gross, [name_genie_astoria]." ("base", "base", "base", "mid")
|
|
|
|
ast "..." ("clench", "closed", "base", "mid")
|
|
|
|
|
2024-11-09 12:10:08 +00:00
|
|
|
elif what == "ass":
|
|
|
|
$ mouse_slap()
|
2024-11-09 14:55:53 +00:00
|
|
|
|
|
|
|
random:
|
|
|
|
ast "Hey! Filch said the teachers aren't allowed to do that!" ("upset", "narrow", "base", "mid")
|
|
|
|
ast "Try that again and you'll find my foot up your ass!" ("clench", "narrow", "base", "mid")
|
|
|
|
ast "Nice try old man..." ("annoyed", "narrow", "angry", "R")
|
|
|
|
ast "Keep your hands to yourself." ("upset", "narrow", "base", "mid")
|
2022-05-16 23:48:22 +00:00
|
|
|
return
|
|
|
|
|
|
|
|
label ast_reaction_equip(item):
|
|
|
|
### Add specific clothing reactions here.
|
|
|
|
# if item == <DollCloth Object>:
|
|
|
|
# ast "This <specific item description> looks awesome! I'll wear this <specific item description> with pride!"
|
|
|
|
return
|
|
|
|
|
|
|
|
label ast_reaction_equip_fail(item):
|
|
|
|
### Add specific clothing reactions here.
|
|
|
|
# if item == <DollCloth Object>:
|
|
|
|
# ast "I won't wear <specific item description> because!"
|
|
|
|
# else:
|
|
|
|
# <indent code below to be used as a fallback>
|
|
|
|
|
2023-03-10 23:09:32 +00:00
|
|
|
random:
|
|
|
|
block:
|
|
|
|
ast "*Nuh-uh*, I'm not putting that on." ("clench", "closed", "base", "mid")
|
|
|
|
block:
|
2023-05-10 15:03:05 +00:00
|
|
|
ast "*Pfff* You want me to wear that? In your dreams, old man..." ("annoyed", "narrow", "angry", "R")
|
2023-03-10 23:09:32 +00:00
|
|
|
block:
|
2023-05-10 15:03:05 +00:00
|
|
|
ast "Don't be such a creep, thanks but no, thanks." ("upset", "narrow", "base", "mid")
|
2022-05-16 23:48:22 +00:00
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
label ast_reaction_unequip(item):
|
|
|
|
### Example
|
|
|
|
# if item.type == "panties":
|
2023-03-31 22:41:48 +00:00
|
|
|
# if states.ast.level > 15:
|
2022-05-16 23:48:22 +00:00
|
|
|
# ast "You want to see my snatch?"
|
2023-03-01 22:14:00 +00:00
|
|
|
# ast "You got it [name_genie_hermione]!"
|
2022-05-16 23:48:22 +00:00
|
|
|
#
|
|
|
|
return
|
|
|
|
|
|
|
|
label ast_reaction_unequip_fail(item):
|
|
|
|
if item.type == "panties":
|
2023-05-10 15:03:05 +00:00
|
|
|
ast "Like hell I would! Take off your own panties, old man..." ("clench", "closed", "base", "mid")
|
2022-05-16 23:48:22 +00:00
|
|
|
|
|
|
|
show screen blkfade
|
|
|
|
with d5
|
|
|
|
|
2023-03-11 22:01:39 +00:00
|
|
|
play sound "sounds/zipper.ogg"
|
2022-05-16 23:48:22 +00:00
|
|
|
ast "W-What are you doing?!" ("scream", "narrow", "angry", "L")
|
2023-03-11 22:01:39 +00:00
|
|
|
play sound "sounds/kick.ogg"
|
2022-05-16 23:48:22 +00:00
|
|
|
with hpunch
|
|
|
|
pause 0.5
|
|
|
|
ast "Oh my god-- is that...?!" ("upset", "narrow", "base", "mid")
|
|
|
|
gen "..." ("grin", xpos="far_left", ypos="head")
|
|
|
|
$ mouse_slap()
|
|
|
|
with vpunch
|
|
|
|
|
|
|
|
hide screen blkfade
|
|
|
|
with d5
|
|
|
|
|
|
|
|
gen "Did you really have to slap me?" ("angry", xpos="far_left", ypos="head")
|
2024-06-25 14:49:58 +00:00
|
|
|
ast "You deserved it you perverted... {shake}Pervert!{/shake}" ("scream", "closed", "angry", "mid")
|
2022-05-16 23:48:22 +00:00
|
|
|
|
|
|
|
elif item.type == "bra":
|
|
|
|
ast "Why would you even suggest that?" ("clench", "closed", "base", "mid")
|
|
|
|
|
|
|
|
elif item.type == "top":
|
2023-05-10 15:03:05 +00:00
|
|
|
ast "Ha! Keep dreaming, old man!" ("smile", "narrow", "base", "mid")
|
2022-05-16 23:48:22 +00:00
|
|
|
|
|
|
|
elif item.type == "bottom":
|
2023-05-10 15:03:05 +00:00
|
|
|
ast "My bottoms stay where they are, and that's final!" ("annoyed", "narrow", "angry", "R")
|
2022-05-16 23:48:22 +00:00
|
|
|
return
|
|
|
|
|
|
|
|
label ast_reaction_equip_outfit(item):
|
|
|
|
### Add specific Outfit reactions here.
|
|
|
|
# if item == <DollOutfit Object>:
|
|
|
|
# ast "This <specific item description> looks awesome! I'll wear this <specific item description> with pride!"
|
|
|
|
|
|
|
|
# TODO: Blacklist fallbacks have to be added.
|
|
|
|
return
|
|
|
|
|
|
|
|
label ast_reaction_equip_outfit_fail(item):
|
|
|
|
### Add specific Outfit reactions here.
|
|
|
|
# if item == <DollOutfit Object>:
|
|
|
|
# ast "I won't wear <specific item description> because!"
|
|
|
|
# else:
|
|
|
|
# <indent code below to be used as a fallback>
|
|
|
|
|
|
|
|
ast "That's way beyond what I would consider dignified." ("annoyed", "narrow", "angry", "R")
|
|
|
|
|
2023-04-02 23:48:38 +00:00
|
|
|
if states.sus.unlocked:
|
2022-05-16 23:48:22 +00:00
|
|
|
ast "Consider asking Susan instead." ("base", "narrow", "base", "mid")
|
|
|
|
ast "I'm sure she'd enjoy wearing it for you, that cow." ("smile", "narrow", "base", "R")
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
label ast_reaction_blacklist(item):
|
2023-03-01 22:14:00 +00:00
|
|
|
ast "Aren't you demanding too much, [name_genie_astoria]?" ("annoyed", "narrow", "base", "R")
|
2022-05-16 23:48:22 +00:00
|
|
|
|
|
|
|
if "top" in item.blacklist and astoria.is_worn("top"):
|
|
|
|
ast "My topmost garment won't work with that." ("upset", "base", "base", "mid")
|
|
|
|
|
|
|
|
if "bottom" in item.blacklist and astoria.is_worn("bottom"):
|
|
|
|
ast "Wearing bottoms with this would be a fashion-crime." ("clench", "base", "base", "mid")
|
|
|
|
|
|
|
|
if "bra" in item.blacklist and astoria.is_worn("bra"):
|
|
|
|
ast "I'd have to take off my bra." ("base", "base", "base", "down")
|
|
|
|
|
|
|
|
if "panties" in item.blacklist and astoria.is_worn("panties"):
|
|
|
|
ast "How do I even wear panties with that?" ("annoyed", "base", "base", "down")
|
|
|
|
|
|
|
|
ast "This is stupid..." ("base", "base", "base", "mid")
|
|
|
|
|
2023-04-02 23:48:38 +00:00
|
|
|
if states.sus.unlocked:
|
2022-05-16 23:48:22 +00:00
|
|
|
gen "Perhaps I'll ask Susan instead--" ("base", xpos="far_left", ypos="head")
|
|
|
|
|
|
|
|
ast "J-Just give me that!" ("annoyed", "base", "base", "L")
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
label ast_reaction_fallback(item):
|
2023-03-31 22:41:48 +00:00
|
|
|
if states.ast.level < get_character_requirement("astoria", "unequip top") and not "top" in astoria.blacklist and not item.type == "top":
|
2022-05-16 23:48:22 +00:00
|
|
|
$ astoria.equip(ast_top_school1)
|
|
|
|
|
2023-03-31 22:41:48 +00:00
|
|
|
if states.ast.level < get_character_requirement("astoria", "unequip bottom") and not "bottom" in astoria.blacklist and not item.type == "bottom":
|
2022-05-16 23:48:22 +00:00
|
|
|
$ astoria.equip(ast_bottom_skirt1)
|
|
|
|
|
2023-03-31 22:41:48 +00:00
|
|
|
if states.ast.level < get_character_requirement("astoria", "unequip bra") and not "bra" in astoria.blacklist and not item.type == "bra":
|
2022-05-16 23:48:22 +00:00
|
|
|
$ astoria.equip(ast_bra_basic1)
|
|
|
|
|
2023-03-31 22:41:48 +00:00
|
|
|
if states.ast.level < get_character_requirement("astoria", "unequip panties") and not "panties" in astoria.blacklist and not item.type == "panties":
|
2022-05-16 23:48:22 +00:00
|
|
|
$ astoria.equip(ast_panties_basic1)
|
|
|
|
|
|
|
|
ast "Just give me a second, I need to get my clothes back in order." ("open", "base", "base", "R")
|
|
|
|
ast "" ("base", "base", "base", "mid")
|
|
|
|
return
|