Skip to content

Commit

Permalink
Finish val sharah vine quest
Browse files Browse the repository at this point in the history
  • Loading branch information
JasXSL committed May 4, 2018
1 parent 46dc456 commit 39a5c66
Show file tree
Hide file tree
Showing 3 changed files with 238 additions and 5 deletions.
39 changes: 37 additions & 2 deletions lib_Actions.lua
Original file line number Diff line number Diff line change
Expand Up @@ -227,12 +227,12 @@ aTable.actions = function(self)
cast_time = 2,
charges = 0,
rarity = 3,
cooldown = 3,
cooldown = 120,
cast_sound_success = 47759,
cast_sound_loop = 27,
conditions = {
Condition:new({id="vineThongCheck", type=Condition.Types.RTYPE_UNDIES, data={["EVERLIVING_VINE_THONG"]=true}}),
Condition.get("melee_range"),
Condition.get("caster_range"),
Condition.get("sender_not_moving"),
},
not_defaults = {},
Expand All @@ -245,6 +245,41 @@ aTable.actions = function(self)
end
}));

-- Vine Squirm (Learned action) --
table.insert(out, Action:new({
id = "VINE_THRASH",
name = "Vine Thrash",
description = "Makes the target's Everliving Vine Thong do evil things to the wearer, provided they're wearing one.",
texture = "ability_hunter_onewithnature",
cast_time = 2,
charges = 0,
rarity = 3,
cooldown = 15,
cast_sound_success = 47759,
cast_sound_loop = 27,
conditions = {
Condition:new({id="vineThongCheck", type=Condition.Types.RTYPE_UNDIES, data={["EVERLIVING_VINE_THONG"]=true}}),
Condition.get("caster_range"),
Condition.get("sender_not_moving"),
},
not_defaults = {},
fn_send = function(self, sender, target, suppressErrors)
local race = UnitRace(target)
local gender = UnitSex(target)
return self:sendRPText(sender, target, suppressErrors, function(se, success)
if success and not UnitIsUnit(target, "player") then
Func.get("critSound")(race, gender)
end
end);
end,
fn_receive = function(self, sender, target, args)
self:receiveRPText(sender, target, args); -- Default behavior
Func.get("addExcitementCrit")();
DoEmote("gasp", "player");
return true
end
}));

return out;

end
Expand Down
125 changes: 124 additions & 1 deletion lib_Quests.lua
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,6 @@ aTable.quests = function(self)
name = "Deliver Honey to Grizzleback",
num = 1,
onObjectiveEnable = function(self)
-- Todo: Bind
self:on(Event.Types.GOSSIP_SHOW, function()
if UnitName("target") == "Old Grizzleback" then
UI.talkbox.set(Talkbox:new({
Expand Down Expand Up @@ -343,6 +342,130 @@ aTable.quests = function(self)
end_events = true
}));

-- Undervine 3 (breadcrumb quest)
table.insert(out, Quest:new({
id = "UNDERVINE_3",
name = "Mischief, naturally!",
start_text = {
"Ooh, I sense someone with an interesting garment. Come over here by the gazebo for a moment!",
},
journal_entry = {
"Azalea by the gazebo in Lorlathil wants to talk to you.",
"She has offered to make your Everliving Vine Thong more spritely if you exact revenge on Callista Swiftglaive who is the armorsmith in Lorlathil.\n\n"..
"To do so, you must go find dark tentacle powder that some of the Darkfiend Tormentors in Sleeper's Barrow to the south might be carrying. "..
"Then hide it in the plate panties located somewhere in Callista's house, probably her drawer."
,
},
end_journal = "Return to Azalea",
questgiver = 13672,
end_text = {
"Ahaha! This is going to be so good. Next time she complains about muddy hooves I will be all like 'WOOSH!' and the tentacles will all come to life! Ehehe I can NOT wait to see the look on her face!",
"Good job! Here is the spell if you too want to make some mischief!",
},
rewards = {
Reward:new({
id = "VINE_THRASH",
type = "Charges",
quant = math.huge
})
},
objectives = {
Objective:new({
id = "talkToAzalea",
name = "Talk to Azalea",
num = 1,
onObjectiveEnable = function(self)
-- Success
self:on(Event.Types.GOSSIP_SHOW, function()
if UnitName("target") == "Azalea" then
UI.talkbox.set(Talkbox:new({
lines = {
"That vine thong you're wearing. I have seen other adventurers with it, and I think it is time for some mischief.",
"You may know how to make it squirm a little, but we can use some wild magic to REALLY make it go!",
"I will teach you a spell if you help me play a little prank.",
"Callista Swiftglaive, the armorsmith here in Lorlathil had the nerve to kick me out of her house JUST because my hooves were a little muddy.",
"She is wearing that skimpy chestplace and I KNOW she has plate panties to go with them somewhere.",
"Go to Sleeper's Barrow to the south where the satyr are summoning their tentacle fiends, hunt them until you find some tentacle powder.",
"Go to Callista's shack and place the seed in her panties, my nature magic will take care of the rest."
},
displayInfo = 13672,
title = "",
onComplete = function()
self:add(1);
end
}));
end
end);
end,
onObjectiveDisable = function(self)
end
}),
Objective:new({
id = "darkTentaclePowder",
name = "Dark Tentacle Powder Bag",
num = 1, -- Num of name to do to complete it
onObjectiveEnable = function(self)
self:on(Event.Types.MONSTER_KILL, function(data)
if data.name == "Darkfiend Tormentor" and math.random() < 0.25 then
PlaySound(1187, "1187");
RPText.print("You found a small bag of dark tentacle powder on the satyr!");
self:add(1);
end
end);
end, -- Raised when objective is activated
onObjectiveDisable = function(self)
end -- Raised when objective is completed or disabled
}),
Objective:new({
id = "sprinklePowder",
name = "Powder Sprinkled in Callista's Plate Panties",
num = 1, -- Num of name to do to complete it
onObjectiveEnable = function(self)
self:on(Event.Types.POINT_REACHED, function()
if GetQuestsCompleted()[43176] then
UI.talkbox.set(Talkbox:new({
lines = {
"This is the drawer holding Callista's plate panties.",
function()
DoEmote("KNEEL", "none");
PlaySound(1277, "SFX");
return "[You quickly sprinkle the powder into them and put them back]";
end
},
onComplete = function()
self:add(1);
end,
displayInfo = "player",
title = "",
}));
end
end, {zone="Val'sharah", sub="Lorlathil", x=54.42, y=71.89, dist=0.05});
end,
onObjectiveDisable = function(self)
end
}),
}, -- You can wrap objectives in {} to create packages
start_events = {
{
event = Event.Types.POINT_REACHED,
data = {zone="Val'sharah", sub="Lorlathil"},
fn = function(self, data)
if Quest.isCompleted("UNDERVINE_2") then
return true;
end
end
}
},
end_events = {
{
event = Event.Types.GOSSIP_SHOW,
fn = function(self, data)
return UnitName("target") == "Azalea";
end
}
}
}));

-- This will cause the property to self delete, it's not needed.
return out
end
79 changes: 77 additions & 2 deletions lib_RPText.lua
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,81 @@ aTable.rpTexts = function(self)
text_receiver = "You cast a spell on your %Tundies, making them start squirming!",
}))

-- VINE_THRASH --
table.insert(R, RPText:new({
id = "VINE_THRASH",
sound = 21727,
text_receiver = "You cast a spell on your %Tundies, causing a vine to prod into and tickle the inside of your %Tbutt!",
}));
table.insert(R, RPText:new({
id = "VINE_THRASH",
sound = 21727,
text_bystander = "%S casts a spell aimed at %T's %Tcrotch!",
text_sender = "You cast cast a squirm spell at %T's %Tundies, causing a vine to prod into and tickle the inside of %This %Tbutt!",
text_receiver = "%S casts a spell at your %Tundies, causing a vine to prod into and tickle the inside of your %Tbutt!",
}));

table.insert(R, RPText:new({
id = "VINE_THRASH",
sound = 21727,
text_receiver = "You cast a spell on your %Tundies, causing a few vines to slip inside your %Tvagina, tickling %This inside!",
requirements = {getCondition("victimVagina")},
}));
table.insert(R, RPText:new({
id = "VINE_THRASH",
sound = 21727,
text_bystander = "%S casts a spell aimed at %T's %Tcrotch!",
text_sender = "You cast cast a squirm spell at %T's %Tundies, causing a few vines to slip inside %This %Tvagina, tickling your inside!",
text_receiver = "%S casts a spell at your %Tundies, causing a few vines to slip inside your %Tvagina, tickle the inside!",
requirements = {getCondition("victimVagina")},
}));

table.insert(R, RPText:new({
id = "VINE_THRASH",
sound = 21727,
text_receiver = "You cast a spell on your %Tundies, causing a thick vine to start thrusting rapidly inside your %Tvagina!",
requirements = {getCondition("victimVagina")},
}));
table.insert(R, RPText:new({
id = "VINE_THRASH",
sound = 21727,
text_bystander = "%S casts a spell aimed at %T's %Tcrotch!",
text_sender = "You cast cast a squirm spell at %T's %Tundies, causing a thick vine to start thrusting rapidly inside your %Tvagina!",
text_receiver = "%S casts a spell at your %Tundies, causing a thick vine to start thrusting rapidly inside %This %Tvagina!",
requirements = {getCondition("victimVagina")},
}));

table.insert(R, RPText:new({
id = "VINE_THRASH",
sound = 21727,
text_receiver = "You cast a spell on your %Tundies, causing multiple vines to restrain your genitals, squeezing painfully!",
requirements = {getCondition("victimPenis")},
}));
table.insert(R, RPText:new({
id = "VINE_THRASH",
sound = 21727,
text_bystander = "%S casts a spell aimed at %T's %Tcrotch!",
text_sender = "You cast cast a squirm spell at %T's %Tundies, causing multiple vines to restrain %This genitals, squeezing painfully!",
text_receiver = "%S casts a spell at your %Tundies, causing multiple vines to restrain your genitals, squeezing painfully!",
requirements = {getCondition("victimPenis")},
}));

table.insert(R, RPText:new({
id = "VINE_THRASH",
sound = 21727,
text_receiver = "You cast a spell on your %Tundies, causing multiple vines to envelop and rapidly tug at your %Tpenis!",
requirements = {getCondition("victimPenis")},
}));
table.insert(R, RPText:new({
id = "VINE_THRASH",
sound = 21727,
text_bystander = "%S casts a spell aimed at %T's %Tcrotch!",
text_sender = "You cast cast a squirm spell at %T's %Tundies, causing multiple vines to envelop and rapidly tug at %This %Tpenis!",
text_receiver = "%S casts a spell at your %Tundies, causing multiple vines to envelop and rapidly tug at your %Tpenis!",
requirements = {getCondition("victimPenis")},
}));


-- Throw sand --
table.insert(R, RPText:new({
id = "THROW_SAND",
Expand Down Expand Up @@ -1137,13 +1212,13 @@ aTable.rpTexts = function(self)
table.insert(R, RPText:new({
id = "Dancing Thorns",
text_receiver = "A dancing thorn pricks your %leftright %Tbreast!",
requirements = {spellAddOrTick, getCondition("victimBreasts")},
requirements = {spellAddOrTick, getCondition("victimBreasts"), Condition:new({type=Condition.Types.RTYPE_ON_QUEST, inverse=true, data={"UNDERVINE_1"}})},
fn = Func.get("addExcitementMasochistic")
}))
table.insert(R, RPText:new({
id = "Dancing Thorns",
text_receiver = "A dancing thorn pricks your %Tbutt!",
requirements = {spellAddOrTick},
requirements = {spellAddOrTick, Condition:new({type=Condition.Types.RTYPE_ON_QUEST, inverse=true, data={"UNDERVINE_1"}})},
fn = Func.get("addExcitementMasochistic")
}))

Expand Down

0 comments on commit 39a5c66

Please sign in to comment.