,,,,,,,,,,,,,,<div class="disclaimer-textbox">\
Dungeon Lord was made for adults only.
If you are not an adult, please exit the game.
All characters are 18 or older.
--------------------
Dungeon Lord is a work in progress.
Please send any feedback, bugs, or other issues to one of the following places
A Dungeon Lord Survey or the Dungeon Lord: A New Beginning forum on F95zone.com
Dungeon Lord selfishly uses art from others.
Because of this, the game is and will always be free.
<span style="color:red">If you paid for this game, you got ripped off</span>
--------------------
Visit the Dungeon Lord: A New Beginning forum on F95zone.com for the lastest version.
Thank you for your patience, feedback, and support as I continue to work on new content.
<<timed 4s>>\
<<goto "Title">>
<</timed>>\
</div>\THINGS TO REMEMBER:
More Variables, less number, give descriptions for variables and other coding to remind yourself what it is and what it does.
!!!CAPTURE WORKS IN FOR LOOPS AND IS AMAZING!!!
To check if an array does not includes something, use ! before variables
/* EX: <<if !$variable.includes("string")>> */
-----------------------------------------------------------------------
*IMPORTANT FOR CHARACTER CONSTRUCTION*
- Class and Girlname
- Base Stats from that Class
- Subclass, apply stat changes.
- Roll for any unique Traits, if true then do something else.
- Traits
- Any Kinks, Turn Offs, Afflictions, Stat Changes from Traits.
- Add Kinks and Turn Offs.
- Check Traits again (example Square to remove Kinks)
- Add items, Exp. Worth, Gold Value.
- Pictures
- Change ratio from 3:2 to 4:3
-----------------------------------------------------------------------
*CREATURE LEVEL CALCULATION*
- Next level exp formula for creatures: (level + growth_rate)cubed over 4 minus (25 - (growth_rate * level))
- growth_rate controls how fast it takes to level up.
- subtraction at the end lowers the first levels exp requirement while not affecting later levels that much
-----------------------------------------------------------------------
*THINGS I WANT TO ADD*
- Upgrade system
- Buy/unlock perks that improve certain things
- Traps slightly better rate, cheaper to upgrade, ect.
- More of what was good
- Girl Classes, Spells, Attacks, Units, Traps.
- Random events that influence what the player wants to do before the raid
- Summoning units that day are stronger, upgrades cheaper, ect
- Having groups instead of always solo adventurers
- Front line and back line
- Front line: Knights, Warriors, other melee classes.
- Back line: Archers, Mages, Healers, other range classes.
- Units attack target(s) based on certain conditions.
- More things to do before starting the Raid.
- Information displays if mouse is hovering over certain text
- Treasures, weapons, attack, spell descriptions
- More stats to track
- Times trap worked, number of girls captured, ect.
- Units gain exp when battling girls during the Raid.
- Shows exp and levels gained for all unit rooms at the end of the Raid.
- Change raid layout
- Monster and trap rooms show everything instead of breaking up room into description and summary.
-After each room, Girls and Player can use abilities.
- Holding Cell
- After the Raids, the player can choose one Slave to keep in the Holding Cell
- They have until the end of the day to make room and put them in a slave room
- If the Slave is in the Holding Cell when they end the day, the Slave is released
----------------------------------------------------------------------
*IDEAS*
- Special traits unique to certain classes
- Creatures can be upgraded after reaching a certain level
- Evolve into 3 options
- Stat focused evolve
- Focus on improving overall stats
- Status and Debuff evolve
- Focus on adding new ways to inflict statuses or debuffs
- Fetish evolve
- Focus on adding more Fetishes
- Trap rank up with the Dungeon
- Traps can no longer be disabled
- Creature Exp gains based on health remaining percent of the girl
- Defeating Girls also Captures them.
- Capturing offers more exp since the girl will be at a higher health.
- Gold earned from girls later after deciding what to do with them
-All gold and items are gained no mater what you choose to do with them.
- Raiders only steal treasure they find of value.
- Each class has a list of treasures that they will steal because they consider it worth something.
- Thieves will steal anything.
- Raiders can only steal one treasure each as well as a certain amount of gold.
- Thieves can carry more gold than other classes.
- At the end of the night when you are choosing what slaves to release, fuck, or enslave. Speed up the process by listing them all out and mass releasing the unwanted slaves first before choosing the other options.
- The player can still change their mind after if they rather release them.
- Advertising for Raiders.
- Put out a fake bounty for your dungeon and choose one of three applicants to lure to your dungeon.
- Player can see all the information about the raiders before picking which one to lure.
- Add these girls in after the grinder so no changes are made
- Raiders hold information about what room captured them for the nightly report.
remove information about traps and creatures if raiders can hold the information.
- Rename Raider's stat's names to be more fancy
- Physical attack = Might
- Physical defense =
- Magical attack = Intelligence
- Magical defense =
- Trap Check = Agility
- Spell Check = Wisdom
-----------------------------------------------------------------------
*PICS AND GIFS*
- Everything will be Hentai!
- Hentai Gifs will be hard to use
- Hard to find multiple gifs of the same girl in different positions
- Will probably just have to use pics
- Use gifs for tasks, random events (hopefully)
- Seperate Loli and Petite pictures
- Research Loli picture quality
- Pics for slime and slime sticky
- Class Loli pics
- If quality is low, remove loli girls
-----------------------------------------------------------------------
*EVENT IDEAS*
- Theses are random events that happen at the start of each day that can change various aspects of the game.
- Some events can only come up if certain conditions are met.
- Dragon Attack: Threat gained today is reduced by 10%. This does not reduce threat gained from enslaving girls.
- Dark Moon: Your creatures attack, and sex stats are increased by 15% during tonight's raid.
- Bright Moon: Your trap success rates are 10% better during tonight's raid.
- Inspired: Researching new Creatures and Traps cost 10% less gold.
- Cleansing The Morningwood: Gain 2 extra energy.
- Blue Balls: Lose one energy jerking off.
- Bounty: Increases or decreases your threat.
- Tavern Gossip: Increases or decreases your Reputation.
- Specialist Group: Increases the chance that Raiders tonight will have a special class trait.
- Street Fair: Store prices in town are reduced by 20%.
- High Demand: Increases buying prices of your slaves by 10%.
- Witch Hunt: Stores are closed for the day.
- Cheap Labor: Reduces the cost of buildings by 25%.
- Erotic Dream: Gain 1 level.
- Talk of the Town: Increases Reputation gained or lost by 15% during tonight's raid.
- Raid Night: Increases the number of Raiders that will show up for tonight's raid.
-----------------------------------------------------------------------
* SLAVE SEX SKILL *
- Sex Skill determine how well slaves can perform various services and sex acts to the player and clients
- Sex Skill can only be raised through training with Sylvia in the Training Room
- The player assigns a Slave to the Training Room and chooses which skill to improve
- The Slave will be in the Training Hall until her Training is complete
- The amount of times depends on how high the skill being trained is, the higher the skill, the longer it takes to improve it
- Slaves can also gain Obedience, Libido, and Strength stat EXP from being trained
- Quest Rewards and Blessings can improve the Training Room
-----------------------------------------------------------------------
*SLAVE JOBS*
- Slave Jobs are split into 4 different types of jobs: Maid, Prostitution, Caretaker, and Maintenance
- Service Jobs
- Assign a Slave to the Player
- Services you at the end of each day
- You gain exp based on her love and libido stats
- Slave gains Love and Libido EXP
- Prostitution Jobs
- Assign a Slave to work as a Prostitute in town
- If she finds a Client, she can earn Gold based on various things
- If she will perform the desired sex requested by the Client
- How well she pleases them
- Her Obedience and Libido stats
- Intelligence improves her chances of finding a client
- Slaves gain Obedience and Libido stat EXP from these jobs
- Clients' needs change depending on where the Slave is Prostituting
- Sexual skill requirements
- Number of preferred sex and services, but will always have one desired sex or service
- Injury Rate
- The chances for Group or Lesbian events changes as well
- There are also other events that can occur during Prostitution jobs
- Group encounters have a Strength check
- If she passes, she will gain extra gold and Strength EXP
- If she fails, she will get much less gold but gain more Strength EXP
- Lesbian encounters have a Intelligence check
- If she passes, she will gain a little extra gold, Intelligence EXP, and doubles the Libido EXP gained
- If she fails, she will get much less gold but gain more Intelligence EXP
- Rape encounters use Intelligence + Strength stat to prevent them from happening
- If she fails, the client will abuse the slave, fucking her, injuring her, and not pay her
- She becomes injured and gains some Strength and Intelligence EXP
- Caretaker Jobs
- Assign a Slave to look after one of your Creature rooms
- Creature gains EXP and reduces its Upkeep cost
- Slave gains Obedience and Strength EXP
- Maintenance Jobs
- Assign a Slave to perform basic checks on one of your Trap rooms
- Trap gains increased trapcheck rate and reduces its Upkeep cost
- Slave gains Obedience and Intelligence EXP
-----------------------------------------------------------------------
* SLAVE CLASSES *
- Classes are randomly generated and the player can assign slaves to attend classes to gain exp for one or more stats
- Classes have degrees of exp given, the most exp a class gives, the higher obedience is required to do well
- Classes that give more exp take longer to complete
- While a slave is taking a class, they are away and cannot perform jobs or other activities
- The player can find a list of classes available at the Slave Market for a certain amount of Gold
-----------------------------------------------------------------------
* SLAVE QUESTS *
- Quests are requests from citizens of the town and can be found on the Quest Board in the Adventurer's Guild
- They require certain conditions to be met and take 1 or more days to complete
- While a slave is working on a Quest, they are away and cannot perform jobs or other activities
- They can range from sexual services (libido), fighting bandits(strength), or exploring ruins(intelligence).
-----------------------------------------------------------------------
* SLAVE TRAINING*
- Training can be done by the player or from a special trainer in your Training Room after it has been unlocked
- Training improves sexual skills
- The higher her sexual skill is already, the more days it will take to complete her training
-----------------------------------------------------------------------
* SPELLS *
- Infliction Spells
- Deals sexual damage and inflicts statuses
- Weak base stats but strong scaling
- Support Spells
- Heals Creatures and enhances dungeon room stats
-----------------------------------------------------------------------
* QUICK TRAVEL *
- Places to have in quick travel menu
- Main Menu
- Dungeon Rooms
- Slave Rooms
- Slave Market
- Treasure Shop
- Arcane Emporium
- Adventurer's Guild
- Amenities Rooms
-----------------------------------------------------------------------
* Blessings *
- The Goddess offers blessings that give you, your slaves, creatures, or traps bonuses
- They can be purchased from her using Lust Essence and are permanent bonuses
- Blessings uses a tree system, each main Blessing tree contains 5 Blessings that increase in power and are available at each Rank.
- Each Blessing tree has various branches that give a new Blessing related to the main tree Blessing
- They cost more Lust Essence than the main tree Blessing
- Main Tree Blessings cost 3 Lust Essence, Branches cost 6 Lust Essence,
- After unlocking all the Blessings in the Tree and Branches, the player can unlock the Legendary Blessing in for that Tree
- Legendary Blessings cost 10 Lust Essence
-----------------------------------------------------------------------
* TREASURES *
- Add a Cap to the Treasure Room, can increase size of Treasure room.
- Treasures add bonus effects for as long as you have them in the Treasure room.
- Remove Treasures that reduce rep lost and gold stolen: BORING
- Increase cost of Treasures, decrease drop rate
- Treasure should focus on the following to keep them seperate from blessings:
- Player resources: rep, threat, le, ect
- Raider stats
- Non-class luring effect
- luring classes can be done at guild, so effects should be focused on other aspects, such as special traits
- Statuses
- Increase number of stacks from statuses gained
- Increase effects from specific status
-----------------------------------------------------------------------
* STORING AND CALLING CREATURES AND TRAPS *
- Instead of storing creatures and traps for the Goddess, instead update her list based on player rank, creatures and traps owned by the player, and in the creature keeper
- Player's Creatures and Traps will still be stored an array to track exp, levels, effects, but will have a version number attached and can be updated if version numbers are different
PROS:
- Goddess always have the most current creatures and traps available
- Player's units can be updated if they were changed between versions
-----------------------------------------------------------------------
* RAIDERS, CREATURES, TRAPS, AND SPELL STATS *
- Raiders' stats scale from 1x to 5x
- Everything else should scale slightly less, to offset Blessings, Buffs, and having lower starting stats
- Creatures' Health stat scale to around 4.8x their starting amount
- All other stats scale to around 4.6x from their starting amount
_ Trap's and Spell's Checks scale to around 1.6x their starting amount
- All other Trap stats scale to around 4.5x their starting stats
- All other Spell stats scale to around 4.25x their starting stats
-----------------------------------------------------------------------
* SLAVES: TAKE OUT *
- Spend 1 Energy to take one of your slaves out somewhere
- As you rank up, more places become available to take her to
- Random events occur at each of the places
- Reduces Slave's Stress and gain Love EXP unless certain event occurs, like Slave getting injured, lost, or raped
- Some events will require player to spend more Energy, Mana, or Gold for a favorable outcome
- Some events will check the slave's stat or player's level to determine the outcome
- Event rewards could be Gold, Treasures, Lust Essence, Slave EXP, or reducing Slave Stress
- Later locations have more beneficial events and better rewards
-----------------------------------------------------------------------
* SHRINE AMENITY *
- Ahri makes Shrine available to build in rank 3 or 4
- Can choose one Class at the Shrine to increases likelihood of seeing that Class during Raids
- Shrine tracks number of Raiders Captured in each Class and grants Blessings for each milestone hit
- Milestone 1: 25 Raiders. Reward: 250 Gold
- Milestone 2: 50 Raiders. Reward: Unique Blessing
- Milestone 3: 100 Raiders. Reward: 5 LE
- Milestone 4: 200 Raiders. Reward: 1000 Gold
- Milestone 5: 400 Raiders. Reward: Upgraded Unique Blessing
- Milestone 6: 1000 Raiders. Reward: Special Blessing Title (No effect)
- Unique Blessings for each Class
- Hunter Reward: Your Caretaking Jobs are improved by 20%. Upgraded: Your Caretaking Jobs are improved by 50%
- Sorcerer Reward: Slaves earn 20% more Intelligence EXP. Upgraded: Slaves earn 50% more Intelligence EXP
- Knight Reward:
- Warrior Reward:
- Priestess Reward: Your Slaves recover from Injuries twice as fast. Upgraded: Your Slaves recover from Injuries in 1 day
- Thief Reward: Your Maintenance Jobs are improved by 20%. Upgraded: Your Maintenance Jobs are improved by 50%
- Alchemist Reward:
- Witch Reward:
- Dancer Reward: Slaves earn 20% more Libido EXP. Upgraded: Slaves earn 50% more Libido EXP
- Brawler Reward: Slaves earn 20% more Strength EXP. Upgraded: Slaves earn 50% more Strength EXP
-----------------------------------------------------------------------
* TOWN GIRLS *
- Slave Market
- Atlanta (Kancolle)
- Personality
- Straight and to the point
- Can seem cold, but she has a soft side
- Cares about her business and Slaves
- Wants to get away from it all
- Total dom, whips and chains excites her
- Arcane Emporium
- Patchouli Knowledge
- Personality
- Shy and awkward
- Doesn't like Dungeon Lords
- Curious
- Easily scared
- Enjoys dirty fantasy books
- Treasure Shop
- houshou marine
- Personality
- Outgoing
- Retired pirate
- Overprotective of her treasures
- Has a drinking problem
- Still being hunted by the Kraken, cannot go in open waters
- Adventurer's Guild
- Omaru Polka (Hololive)
- Personality
- Friendly and welcoming
- Understands the importance of dungeon lords in the ecosystem
- Will bend over backwards to make someone happy
- Wants everyone to succeed
- Gullible
* Quests *
- Capture X number of new bloods by hiring them from the Guild
- Triggers after Capturing 5 Raiders & Hiring 2 Raiders
- Once triggered, the New Blood special trait will often appear from the list of choices when hiring Raiders
- The Trait doesn't do anything besides trigger the event
- Once completed, reward the player
- Dragonscale Forge
- Hinoa and Minoto (Monster Hunter Rise)
- Rosemary and Thyme
- Personality
- Creature Keeper (REPLACED)
- Mallow (pokemon)
- Personality
- Always happy and excited
- Very passionate about creatures
- Wants to travel all over the world
- Secretly loves having sex with creatures
- Succubus
- Tokoyami Towa
- Descendant
- Au Ra (Dragon Girl)
- Race that is lives far away
- Very rare and sought after slaves for their unique bodies and submissive nature
- Queen of the Descendant: yugiri mistwalker (for now)
-----------------------------------------------------------------------
* CHARACTERS TO LOOK UP *
<<silently>>\
* Variables *
* Display *
<</silently>>\
<div class="gametitle-title">\
Dungeon Lord: A New Beginning
</div>\
<div class="titlepic-title">\
[img[images/misc/title2.png]]
</div>\
<div class="titlebox-buttons">\
<div class="linkbox-title">\
<div class="titlebutton">\
<span id="1"><<button "New Game ^^1^^" "Warning">><</button>></span>
</div>\
</div>\
</div>\
<div class="titlebox-buttons">\
<div class="linkbox-title">\
<div class="titlebutton">\
<span id="2"><<button "Load Game ^^2^^">><<script>>UI.saves()<</script>><</button>></span>
</div>\
</div>\
</div>\
<div class="titlebox-buttons">\
<div class="linkbox-title">\
<div class="titlebutton">\
<span id="3"><<button "Credits ^^3^^" "Credits">><</button>></span>
</div>\
</div>\
</div>\<<if tags().includes("Title")>>\
<span style="text-align:center;">Version <<- setup.game_version>>
Created by
Dungeon Gaming
A special thanks to everyone who has been supportive and patiently waiting for the game, I hope you enjoy it.
[[F95Zone Forum|https://f95zone.to/threads/dungeon-lord-a-new-beginning-v0-1-dungeon-gaming.75431/#post-5199125]]
[[Discord Server|https://discord.gg/HGgfJ8e49v]]
[[Donate on Ko-fi|https://ko-fi.com/dungeongaming]]</span>
<<elseif tags().includes("Packs")>>\
<strong><u>Pack Editor</u></strong>
<strong>BETA</strong>
Currently installed image packs (enter seperately in the 'Add Slave Pack' text field to activate):
Audrey Bitoni, Blonde Babes 1, Bowsette, Britney White, Brunette Bunnies, Dark Haired Delphiniums, Dillion Harper, Dyed Hair Daisies, Ebony Enchantresses, Eva Elfie, Jezabel Vessir, Lily Rader, Lucy Li, Ningguang, Oriental Orchids, Red Haired Roses, Sarah Lollypop, Sasha Grey
<<else>>\
<div class="sidebar-player-container">\
<div class="sidebar-player-box">\
<strong>$pc_name</strong>
</div>\
<div class="sidebar-player-box">\
<<hovertip "<<print $pc_exp>> / <<print $pc_nextlevel_exp>> EXP<br>Max: $pc_levelcap">>Lvl. $pc_level<</hovertip>>
</div>\
<div class="sidebar-player-box">\
<strong><<if $pc_gold >= 0>><span style="color:gold">Gold: $pc_gold</span><<else>><span style="color:gold">Gold: <span style="color:red">$pc_gold</span></span><</if>></strong>
</div>\
<div class="sidebar-player-box">\
<span style="color:mediumvioletred"><<hovertip "Lust Essence">>LE: $pc_lust<</hovertip>></span>
</div>\
<div class="sidebar-player-box">\
<<hovertip "Max: $pc_max_energy">><span style="color:mediumseagreen">Energy: $pc_cur_energy</span><</hovertip>>
</div>\
<div class="sidebar-player-box">\
<<hovertip "Max: $pc_max_mana">><span style="color:skyblue">Mana: $pc_cur_mana</span><</hovertip>>
</div>\
</div>\
<<if tags().includes("Raid") && $is_raiding === true>>\
<div class="sidebar-raid-container">\
<div class="sidebar-raid-titlebox">\
Raid Info
</div>\
<div class="sidebar-raid-raidercountbox">\
Raiders Remaining: $raiding_girls_list.length
</div>\
<<for _h = 0; _h < $raiders.length; _h++>>\
<div class="sidebar-raider-container">\
<div class="sidebar-raider-textbox">\
<div class="sidebar-raider-icon">\
$raiders[_h].icon
</div>\
<div class="sidebar-raider-name">\
$raiders[_h].name
</div>\
<div class="sidebar-raider-icon">\
<<-setup.lust_icon>>
</div>\
<div class="sidebar-raider-text">\
<span class="health"><span style="font-size:75%">$raiders[_h].cur_hp / $raiders[_h].max_hp</span></span>
</div>\
<div class="sidebar-raider-spacer">\
</div>\
<div class="sidebar-raider-text">\
<span class="lust"><span style="font-size:75%">$raiders[_h].cur_lust / $raiders[_h].max_lust</span></span>
</div>\
</div>\
<div class="sidebar-raider-statuses">\
<<for _q = 0; _q < $raiders[_h].statuses.length; _q++>>\
<<hovertip "$raiders[_h].statuses[_q].name">>$raiders[_h].statuses[_q].icon<</hovertip>>\
<</for>>\
</div>\
</div>\
<</for>>\
</div>\
<<elseif tags().includes("Dungeon")>>\
<div class="sidebar-dungeon-container">\
<div class="sidebar-dungeon-titlebox">\
$dungeon_name
</div>\
<div class="sidebar-dungeon-daybox">\
Day: $days
</div>\
<div class="sidebar-dungeon-smallbox">\
<span class="reputation">Reputation: $dungeon_reputation / $reputation_rankup_amount</span>
</div>\
<div class="sidebar-dungeon-iconbox">\
<<if $reputation_nextrank_trigger === true>>\
<<hovertip "<<-setup.reputation_icon_tooltip>>">><<-setup.reputation_trigger_icon>><</hovertip>>
<</if>>
</div>\
<div class="sidebar-dungeon-smallbox">\
<<if $dungeon_threat <= 10>>\
<span style="color:limegreen">Threat: $dungeon_threat</span>\
<<elseif $dungeon_threat <= 35>>\
<span style="color:dodgerblue">Threat: $dungeon_threat</span>\
<<elseif $dungeon_threat <= 65>>\
<span style="color:yellow">Threat: $dungeon_threat</span>\
<<elseif $dungeon_threat <= 90>>\
<span style="color:orange">Threat: $dungeon_threat</span>\
<<else>>\
<span style="color:red">Threat: $dungeon_threat</span>\
<</if>>
</div>\
<div class="sidebar-dungeon-iconbox">\
<<if $threat_locked === true>>\
<<hovertip "<<-setup.threat_icon_tooltip>>">><<-setup.threat_locked_icon>><</hovertip>>
<</if>>\
</div>\
<div class="sidebar-dungeon-smallbox">\
<u>Rank</u>
</div>\
<div class="sidebar-dungeon-iconbox">\
<<for _i = 1; _i <= $dungeon_rank; _i++>><<-setup.rank_icon>><</for>>
</div>\
<div class="sidebar-dungeon-link">\
[[F95Zone Forum|https://f95zone.to/threads/dungeon-lord-a-new-beginning-v0-1-dungeon-gaming.75431/#post-5199125]]
[[Discord Server|https://discord.gg/HGgfJ8e49v]]
[[Donate on Ko-fi|https://ko-fi.com/dungeongaming]]
Version <<-setup.game_version>>
</div>\
</div>\
<</if>>\
<</if>>\
<img @src="setup.ImagePath+'grow_icon.png'" alt="Larger font" title="Larger font" class="fullscreenImg" style="left: 2px;" onclick="fontSize(1)"><img @src="setup.ImagePath+'shrink_icon.png'" alt="Smaller font" title="Smaller font" class="fullscreenImg" style="left: 32px;" onclick="fontSize(-1)">
<<button "Show Dialog">><<run Dialog.setup("Dialog title")>><<run Dialog.wiki("Dialog text.")>><<run Dialog.open()>><</button>>
<<button "Enter Your Name">><<script>>
setup.done = function () {
$("#name").empty().wiki("Hello there, $pc_name.");
}
Dialog.setup("Please enter your name:");
Dialog.wiki('<<textbox "$pc_name" "" autofocus>> <<button "Done">><<run setup.done()>><<run Dialog.close()>><</button>>');
Dialog.open({top: "calc(50vh - 51px)"}, setup.done);
<</script>><</button>>
<span id="name"></span>
<<set $dungeon_room_1 to $crotchbeam>>
<<set $dungeon_room_2 to setup.wizard>>
<<set $dungeon_room_2.next_level_exp to Math.round(((($dungeon_room_2.level + $dungeon_room_2.growth_rate) * ($dungeon_room_2.level + $dungeon_room_2.growth_rate) * ($dungeon_room_2.level + $dungeon_room_2.growth_rate)) / setup.creature_nextlevel_divisor) - (setup.creature_nextlevel_constant - ($dungeon_room_2.level * $dungeon_room_2.growth_rate)))>>
<<set $pc_treasure_list to [setup.bow_treasure_uncommon, setup.tome_treasure_uncommon, setup.sword_treasure_uncommon, setup.staff_treasure_common]>>\
<<set $slave_market_list.push(setup.slave, setup.slave, setup.slave)>>\
[[Scouting Report]]
[[Main Menu]]
[[Slave Pack Menu]]
[[Hire]]
[[Testing2]]
[[Testing 3]] Twine and Sugarcube tools
https://qjzhvmqlzvoo5lqnrvuhmg-on.drv.tw/UInv/Sample_Code.html#Main%20Menu
Icon Source
https://flaticons.net/
Image and Gif Sources
https://gelbooru.com/
https://danbooru.donmai.us/
https://rule34.xxx/
https://rule34.xyz/
https://rule34.paheal.net/post/listPRINTING COLOR TEXT IN STRINGS
<<set _gold to "gold">>
<<set _gold to "@@.gold;" + _gold + "@@">>
<<set _string to "This color is " + _gold + ".">>
<<print _string>>
USING WIDGETS FOR DAMAGE AND TRAIT CALCULATIONS
<<set _attacker = {
hp: 10,
atk: 8,
def: 5,
}>>
<<set _defender = {
hp: 15,
atk: 4,
def: 4,
}>>
<<dmgCalc _attacker _defender>>
_dmg damage dealt
_defender.hp health remaining
<<if _d20 == 20>>
CRIT HIT
<<elseif _d20 == 1>>
WIFF ATTACK
<<else>>
Rolled a _d20
<</if>>
<<set _var0 = {
name: "Shawn",
place: "Here",
num: 12
}>>
<<set _var1 = {
name: "Bean",
place: "Chicago",
num: 100
}>>
<<set _var2 = {
name: "Pauly",
place: "Jacksonvile",
num: 3
}>>
<<set _var3 = {
name: "Brenda",
place: "Hollywood",
num: 69
}>>
<<set _list to [_var0, _var1, _var2, _var3,]>>
_list.name
_list.place
_list.num
_list[0].num
_list[3].place
<<set _f to 1.25>>
<<set _f to Math.trunc(_f)>>
<<- _f>><<if $num == null>>
<<set $num to 0.125>>
<<set $num to parseFloat($num.toFixed(2))>>
<</if>>
<<button [[Add 2.33333333|Testing 3]]>><<set $num += 2.33333333>><</button>>
<<button [[Add 4.555|Testing 3]]>><<set $num += 4.555>><</button>>
<<button [[Add 10.666666|Testing 3]]>><<set $num += 10.666666>><</button>>
<<set $num to parseFloat($num.toFixed(2))>>
NUMBER $num
<<set _list to ["a", "v", "t", "z"]>>
<<set _small_list to ["a", "z", "y"]>>
<<for _z = 0; _z < _list.length; _z++>>
<<switch _list[_z]>>
<<case _small_list>>
FOUND _list[_z]
<<default>>
DID NOT FIND _list[_z]
<</switch>>
<</for>>
<div class="transparent-button">
<<button "Yes">><</button>>
</div>
<div id="tooltip-container">
HOVER ME
<div id="tooltip">TOOLTIP</div>
</div>
<<set _rng to (randomFloat(1)).toFixed(3)>>
PRINT: _rng
<<set _a to _b to 4>>
A: _a B: _b
<<set _class to clone(setup.class_list.random())>>
<<set _class.special_trait to clone(setup.wealthy)>>
<<for _i = 0; _i < setup.class_list.length; _i++>>
<<- _i + 1>>. <<- setup.class_list[_i].class>>: <<- setup.class_list[_i].special_trait>>
<</for>>
<<silently>>\
-THE GIRL GRINDER-
*VARIABLES*
<<set $update_next_room to true>>
<<set $summoned_creature_bool to false>>
<<set $first_time_check to false>>
* SPELL BOOLS*
<<set $spell_blessing_bool to {
supporting_role: false,
spell_slinger: false
}>>
*PULLING UNIQUE GIRLS INTO THE PARTY*
<<set _party_size to random($min_party_size, $max_party_size)>>
<<if _party_size > $raiding_girls_list.length>>
<<set _party_size to $raiding_girls_list.length>>
<</if>>
<<set $raiders to []>>
<<for _s = 0; _s < _party_size; _s++>>
<<if $raiders.length === 0>>
<<set $raiding_girls_list.shuffle()>>
<<set _shift to $raiding_girls_list.shift()>>
<<set $raiders.push(_shift)>>
<<elseif $raiders.length === 1>>
<<for _r = 0; $raiders.length < 2; _r++>>
<<set _shift to $raiding_girls_list.shift()>>
<<if _shift.class === $raiders[0].class>>
<<set $raiding_girls_list.push(_shift)>>
<<set _r++>>
<<if _r > $raiding_girls_list.length>>
<<set _error to "Failed to find a unique class">>
<<set _party_size to $raiders.length>>
<<break>>
<</if>>
<<else>>
<<set $raiders.push(_shift)>>
<</if>>
<</for>>
<<elseif $raiders.length === 2>>
<<for _r = 0; $raiders.length < 3; _r++>>
<<set _shift to $raiding_girls_list.shift()>>
<<if _shift.class === $raiders[0].class || _shift.class === $raiders[1].class>>
<<set $raiding_girls_list.push(_shift)>>
<<set _r++>>
<<if _r > $raiding_girls_list.length>>
FAILED TO FIND A UNIQUE CLASS!!!
<<set _party_size to $raiders.length>>
<<break>>
<</if>>
<<else>>
<<set $raiders.push(_shift)>>
<</if>>
<</for>>
<</if>>
<</for>>
* Order Raiders by Role *
<<if $raiders.length > 1>>
<<set _order to []>>
<<set _roles to []>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<set _roles.push($raiders[_i].role)>>
<</for>>
TANKS
<<if _roles.includes("Tank")>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].role === "Tank">>
<<set _order.push($raiders[_i])>>
<</if>>
<</for>>
<</if>>
MELEE
<<if _roles.includes("Melee")>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].role === "Melee">>
<<set _order.push($raiders[_i])>>
<</if>>
<</for>>
<</if>>
RANGE
<<if _roles.includes("Range")>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].role === "Range">>
<<set _order.push($raiders[_i])>>
<</if>>
<</for>>
<</if>>
SUPPORT
<<if _roles.includes("Support")>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].role === "Support">>
<<set _order.push($raiders[_i])>>
<</if>>
<</for>>
<</if>>
SET ORDER
<<set $raiders to _order>>
<</if>>
* Update Stats *
<<for _z = 0; _z < $raiders.length; _z++>>
<<set _class to $raiders[_z].class.toLowerCase()>>
<<set $raider_entered_stats[_class]++>>
<<set $raider_entered_stats.total++>>
<</for>>
*SHOW STATS, REMOVE STATUSES*
<<set _raiders_stats to []>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<set _newStats to {
class: $raiders[_i].class,
vigor: $raiders[_i].vig,
endurance: $raiders[_i].end,
willpower: $raiders[_i].will,
perseverance: $raiders[_i].pers,
tolerance: $raiders[_i].toler,
awareness: $raiders[_i].aware,
reason: $raiders[_i].reas,
exp: $raiders[_i].exp,
gold: $raiders[_i].gold,
}>>
<<if $raiders[_i].status_names.includes(setup.teleported.id)>>
<<for _z = 0; _z < $raiders[_i].statuses.length; _z++>>
<<if $raiders[_i].statuses[_z].id === setup.teleported.id>>
<<set _delete to $raiders[_i].statuses.deleteAt(_z)>>
<<set _deleteName to $raiders[_i].status_names.delete(setup.teleported.id)>>
<<break>>
<</if>>
<</for>>
<</if>>
<<set _raiders_stats.push(clone(_newStats))>>
<</for>>
* Other Effects *
<<for _r = 0; _r < $raiders.length; _r++>>
PARTY NIGHT EVENT
<<if $current_event.event === true && $current_event.name === setup.party_night.name>>
<<set _rng to random(1, 100)>>
SUCCESS CHECK
<<if setup.party_night.percent >= _rng>>
DETERMINE HOW MUCH SHE DRANK
<<set _stacks to random(setup.party_night.min_count, setup.party_night.max_count)>>
<<AddStacks $raiders[_r] setup.intoxicated _stacks false>>
<</if>>
<</if>>
GILDED BAND TREASURE
<<if $treasureroom_inventory.count("Gilded Band") > 0>>
INCREASE GOLD CARRIED
<<set $raiders[_r].gold += (Math.round($raiders[_r].gold * (setup.common_treasure_09.float * $treasureroom_inventory.count("Gilded Band")))).clamp(1, 1000000)>>
<</if>>
<</for>>
* Reset Spell Bool *
SPELL SLINGER
<<if $pc_blessing_list.includesAny("Spell Slinger")>>
SET BOOL TO TRUE
<<set $spell_blessing_bool.spell_slinger to true>>
<</if>>
SUPPORTING ROLE
<<if $pc_blessing_list.includesAny("Supporting Role")>>
SET BOOL TO TRUE
<<set $spell_blessing_bool.supporting_role to true>>
<</if>>
* Display Info *
<<set _cardholderID to "cardholder-"+$raiders.length+"girls">>
<<set _cardinfoID to "cardinfo-"+$raiders.length+"girls">>
<<set _picboxID to "picbox-"+$raiders.length+"girls">>
<<set _textboxID to "textbox-"+$raiders.length+"girls">>
<</silently>>\
<div class="exit-link-right">\
<span id="forward"><<button [[Enter Dungeon]]>><</button>></span>
</div>\
<div class="titlebox">\
Raiding Party
</div>\
<<for _r = 0; _r < $raiders.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
<div @class="_textboxID">\
Name: $raiders[_r].name
Class: $raiders[_r].subclass.name $raiders[_r].class
Role: $raiders[_r].role
Traits: <<for _i = 0; _i < $raiders[_r].traits.length; _i++>>\
<<if $raiders[_r].traits[_i].type === "Special">>\
<span style="color:gold"><<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>></span><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<<else>>\
<<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<</if>>\
<</for>>
Kinks: <<if $raiders[_r].kinks.length === 0>>None<<else>>$raiders[_r].kinks<</if>>
Turn-Offs: <<if $raiders[_r].turnoffs.length === 0>>None<<else>>$raiders[_r].turnoffs<</if>>
Statuses: <<if $raiders[_r].statuses.length == 0>>\
None
<<else>>\
<<for _i = 0; _i < $raiders[_r].statuses.length; _i++>>\
<<hovertip "$raiders[_r].statuses[_i].tooltip">>$raiders[_r].statuses[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].statuses.length>>, <</if>><</for>><</if>>
</div>\
</div>\
</div>\
<</for>>\<<for _r = 1; _r < 2; _r++>>
*Positive Traits*
CARING
<<if _trait_names.includes("Caring")>>
<<if _trait_names.includes("Scared")>>
<<for _t = 0; _t < _negative_trait_names.length; _t++>>
<<if _negative_trait_names[_t] === "Scared">>
<<set _position to _t>>
<<set _new_trait to [setup.awkward, setup.bitter, setup.daydreamer, setup.feeble, setup.insecure, setup.lazy, setup.lethargic, setup.rebel, setup.rude, setup.shy, setup.soft]>>
<<set _builder.negative_traits[_t] to _new_trait.random()>>
<<set _negative_trait_names[_t] to _builder.negative_traits[_t].name>>
<<set _r to 0>>
<</if>>
<</for>>
<</if>>
<</if>>
LUCKY
<<if _positive_trait_names.includes("Lucky")>>
<<if _negative_trait_names.includes("Lewd")>>
<<for _t = 0; _t < _negative_trait_names.length; _t++>>
<<if _negative_trait_names[_t] === "Lewd">>
<<set _position to _t>>
<<set _new_trait to [setup.awkward, setup.bitter, setup.daydreamer, setup.feeble, setup.insecure, setup.lazy, setup.lethargic, setup.rebel, setup.rude, setup.scared, setup.shy, setup.soft]>>
<<set _builder.negative_traits[_t] to _new_trait.random()>>
<<set _negative_trait_names[_t] to _builder.negative_traits[_t].name>>
<<set _r to 0>>
<</if>>
<</for>>
<</if>>
<</if>>
*Negative Traits*
SOFT
<<if _negative_trait_names.includes("Soft")>>
<<if _positive_trait_names.includes("Robust")>>
<<for _t = 0; _t < _positive_trait_names.length; _t++>>
<<if _positive_trait_names[_t] === "Robust">>
<<set _position to _t>>
<<set _new_trait to [setup.athletic, setup.bright, setup.disciplined, setup.driven, setup.energetic, setup.enthusiastic, setup.gifted, setup.leader, setup.loyal, setup.mistress, setup.motivated, setup.passionate, setup.seductive, setup.sexy, setup.sharp, setup.social, setup.waifu]>>
<<set _remove to _new_trait.delete(_builder.positive_traits)>>
<<set _builder.positive_traits[_t] to _new_trait.random()>>
<<set _positive_trait_names[_t] to _builder.positive_traits[_t].name>>
<<set _r to 0>>
<</if>>
<</for>>
<</if>>
<</if>>
LETHARGIC & LAZY
<<if _negative_trait_names.includesAny("Lethargic", "Lazy")>>
<<if _positive_trait_names.includes("Energetic")>>
<<for _t = 0; _t < _positive_trait_names.length; _t++>>
<<if _positive_trait_names[_t] === "Energetic">>
<<set _position to _t>>
<<set _new_trait to [setup.athletic, setup.bright, setup.disciplined, setup.driven, setup.enthusiastic, setup.gifted, setup.leader, setup.loyal, setup.mistress, setup.motivated, setup.passionate, setup.robust, setup.seductive, setup.sexy, setup.sharp, setup.social, setup.waifu]>>
<<set _remove to _new_trait.delete(_builder.positive_traits)>>
<<set _builder.positive_traits[_t] to _new_trait.random()>>
<<set _positive_trait_names[_t] to _builder.positive_traits[_t].name>>
<<set _r to 0>>
<</if>>
<</for>>
<</if>>
<</if>>
SCARED
<<if _negative_trait_names.includes("Scared")>>
<<if _positive_trait_names.includes("Disciplined")>>
<<for _t = 0; _t < _positive_trait_names.length; _t++>>
<<if _positive_trait_names[_t] === "Disciplined">>
<<set _position to _t>>
<<set _new_trait to [setup.athletic, setup.bright, setup.disciplined, setup.driven, setup.energetic, setup.enthusiastic, setup.gifted, setup.leader, setup.loyal, setup.mistress, setup.motivated, setup.passionate, setup.robust, setup.seductive, setup.sexy, setup.sharp, setup.social, setup.waifu]>>
<<set _remove to _new_trait.delete(_builder.positive_traits)>>
<<set _builder.positive_traits[_t] to _new_trait.random()>>
<<set _positive_trait_names[_t] to _builder.positive_traits[_t].name>>
<<set _r to 0>>
<</if>>
<</for>>
<</if>>
<</if>>
SNOBBY
<<if _negative_trait_names.includes("Snobby")>>
<<if _positive_trait_names.includes("Seductive")>>
<<for _t = 0; _t < _positive_trait_names.length; _t++>>
<<if _positive_trait_names[_t] === "Seductive">>
<<set _position to _t>>
<<set _new_trait to [setup.athletic, setup.bright, setup.disciplined, setup.driven, setup.energetic, setup.enthusiastic, setup.gifted, setup.leader, setup.loyal, setup.mistress, setup.motivated, setup.passionate, setup.robust, setup.sexy, setup.sharp, setup.social, setup.waifu]>>
<<set _remove to _new_trait.delete(_builder.positive_traits)>>
<<set _builder.positive_traits[_t] to _new_trait.random()>>
<<set _positive_trait_names[_t] to _builder.positive_traits[_t].name>>
<<set _r to 0>>
<</if>>
<</for>>
<</if>>
<</if>>
LEWD
<<if _negative_trait_names.includes("Lewd")>>
<<if _positive_trait_names.includesAny("Sexy", "Bright", "Social")>>
<<for _t = 0; _t < _positive_trait_names.length; _t++>>
<<if _positive_trait_names[_t] === "Sexy">>
<<set _position to _t>>
<<set _new_trait to [setup.athletic, setup.disciplined, setup.driven, setup.energetic, setup.enthusiastic, setup.gifted, setup.leader, setup.loyal, setup.mistress, setup.motivated, setup.passionate, setup.robust, setup.seductive, setup.sharp, setup.waifu]>>
<<set _remove to _new_trait.delete(_builder.positive_traits)>>
<<set _builder.positive_traits[_t] to _new_trait.random()>>
<<set _positive_trait_names[_t] to _builder.positive_traits[_t].name>>
<<set _r to 0>>
<</if>>
<<if _positive_trait_names[_t] === "Bright">>
<<set _position to _t>>
<<set _new_trait to [setup.athletic, setup.disciplined, setup.driven, setup.energetic, setup.enthusiastic, setup.gifted, setup.leader, setup.loyal, setup.mistress, setup.motivated, setup.passionate, setup.robust, setup.seductive, setup.sharp, setup.waifu]>>
<<set _remove to _new_trait.delete(_builder.positive_traits)>>
<<set _builder.positive_traits[_t] to _new_trait.random()>>
<<set _positive_trait_names[_t] to _builder.positive_traits[_t].name>>
<<set _r to 0>>
<</if>>
<<if _positive_trait_names[_t] === "Social">>
<<set _position to _t>>
<<set _new_trait to [setup.athletic, setup.disciplined, setup.driven, setup.energetic, setup.enthusiastic, setup.gifted, setup.leader, setup.loyal, setup.mistress, setup.motivated, setup.passionate, setup.robust, setup.seductive, setup.sharp, setup.waifu]>>
<<set _remove to _new_trait.delete(_builder.positive_traits)>>
<<set _builder.positive_traits[_t] to _new_trait.random()>>
<<set _positive_trait_names[_t] to _builder.positive_traits[_t].name>>
<<set _r to 0>>
<</if>>
<</for>>
<</if>>
<</if>>
INSANE
<<if _negative_trait_names.includes("Insane")>>
<<if _positive_trait_names.includes("Driven", "Enthusiastic")>>
<<for _t = 0; _t < _positive_trait_names.length; _t++>>
<<if _positive_trait_names[_t] === "Driven">>
<<set _position to _t>>
<<set _new_trait to [setup.athletic, setup.bright, setup.disciplined, setup.energetic, setup.gifted, setup.leader, setup.loyal, setup.mistress, setup.motivated, setup.passionate, setup.robust, setup.seductive, setup.sexy, setup.sharp, setup.social, setup.waifu]>>
<<set _remove to _new_trait.delete(_builder.positive_traits)>>
<<set _builder.positive_traits[_t] to _new_trait.random()>>
<<set _positive_trait_names[_t] to _builder.positive_traits[_t].name>>
<<set _r to 0>>
<</if>>
<<if _positive_trait_names[_t] === "Enthusiastic">>
<<set _position to _t>>
<<set _new_trait to [setup.athletic, setup.bright, setup.disciplined, setup.energetic, setup.gifted, setup.leader, setup.loyal, setup.mistress, setup.motivated, setup.passionate, setup.robust, setup.seductive, setup.sexy, setup.sharp, setup.social, setup.waifu]>>
<<set _remove to _new_trait.delete(_builder.positive_traits)>>
<<set _builder.positive_traits[_t] to _new_trait.random()>>
<<set _positive_trait_names[_t] to _builder.positive_traits[_t].name>>
<<set _r to 0>>
<</if>>
<</for>>
<</if>>
<</if>>
<</for>><<silently>>
This Passage decides the amount of girls and the range of difficulty they will be.
* Starting Variables *
<<set $remove_drowsy_bool to true>> set to false if group is stuck in the puzzle room, prevents raiders from losing drowsy status between rooms
<<set $is_raiding to true>> set trigger for some links that take it to a raiding passage instead of out of the raid (E.I. checking rooms, spell book, ect)
<<set _no_treasure_trigger to false>> set to true if player has no gold or treasure. Triggers a text that appears.
<<set _no_treasure_penalty to 4>> divides the number of raiders by this amount if the player has no gold or treasure
<<set $number_of_raiders to 1>> total number of raiders that will be entering the dungeon, starts at 1
<<set $raiding_girls_list to []>> list of all the raiders class
<<set $min_party_size to 0>> smallest party size that can enter the dungeon
<<set $max_party_size to 0>> largest party size that can enter the dungeon
<<set $captured_girl_list to []>> holds raider info that were captured
<<set $slave_girl_list to []>> holds slave info
<<set $used_girl_list to []>> holds raider info that were captured and fucked, gaining rep and threat
<<set $released_girl_list to []>> holds raider info that were captured and not fucked, gaining rep and threat but halved
<<set $satisfied_girl_list to []>> holds raider info if cleared and were satisfied at the end
<<set $unsatisfied_girl_list to []>> holds raider info if cleared and were not satisfied at the end, losing rep
<<set $raiders_cleared_list to []>> holds raiders who cleared the dungeon
<<set $abandoned_girl_list to []>> holds raiders info that abandoned the dungeon
<<set $enslaved_bool to false>> set to true if raider was enslaved
<<set $enslaved_index to "">> set to index of slave room where enslaved raider was sent to
<<set $enslaved_girl to "">> holds info on girl that was enslaved
<<set $captured_raiders_count to 0>> holds the number of raiders captured each night
<<set $dungeon_known_rep_gain to 0>> holds the amount of rep gained from well known creatures and traps
<<set $dungeon_known_rep_lost to 0>> holds the amount of rep lost from well known creatures and traps
<<set $treasure_value_rep_gain to 0>> holds the amount of rep gained based on your treasure value and gold amount
<<set $threat_net_gained to 0>> total amount of threat gained tonight
<<set $threat_net_lost to 0>> total amount of threat lost tonight
<<set $rep_net_gained to 0>> total amount of threat gained tonight
<<set $rep_net_lost to 0>> total amount of threat lost tonight
<<set $gold_stolen to 0>> amount of gold stolen tonight
<<set $treasures_stolen to 0>> amount of treasures stolen tonight
<<set $gold_earned to 0>> the amount gained from the Raiders tonight
<<set $treasure_earned to []>> holds treasure gained from the raiders tonight
<<set $treasure_value to 0>> holds treasure value gained from the raiders tonight
<<set $treasure_names to []>> holds names of treasures gained for displaying info tonight
<<set $first_time_check_report to false>> resets the nightly report trigger
<<set $dungeon_page to 1>> resets dungeon room to first page
<<set _max_lure to 50>> total amount of lure that can be gained from treasure and gold
<<set _lure_per_gold to 0.005>> amount of lure 1 gold is worth, only thieves use gold for lure
<<set _total_value to 0>> value of all treasures and gold in treasure room
<<set $lure_count to 0>> number of raiders lured
<<set _lure_list to []>> list of classes that were lured
<<set _class_listCap to ["Hunter","Sorcerer","Knight","Warrior","Priestess","Thief","Alchemist","Witch","Dancer","Brawler"]>>
<<set $completed_quests to []>> holds list of completed quests at the end of the day
<<set $raider_report_list to []>>
<<set _class_count = {
Hunter: 0,
Sorcerer: 0,
Knight: 0,
Warrior: 0,
Priestess: 0,
Thief: 0,
Alchemist: 0,
Witch: 0,
Dancer: 0,
Brawler: 0
}>>
SCOUTING PICS
<<set _scout_pic_0 to "[img[images/misc/scouting_0.jpg]]">>
<<set _scout_pic_1 to "[img[images/misc/scouting_1.jpg]]">>
<<set _scout_pic_2 to "[img[images/misc/scouting_2.jpg]]">>
<<set _scout_pic_3 to "[img[images/misc/scouting_3.jpg]]">>
<<set _scout_pic_4 to "[img[images/misc/scouting_4.jpg]]">>
<<set _scout_pic_list to [_scout_pic_0, _scout_pic_1, _scout_pic_2, _scout_pic_3, _scout_pic_4]>>
<<set _pic to _scout_pic_list.random()>>
* Reset Dungeon Room Report *
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if $dungeon_floor_list[_z].room_type === "Creature" || $dungeon_floor_list[_z].room_type === "Trap">>
<<set $dungeon_floor_list[_z].report.raiders to 0>>
<<set $dungeon_floor_list[_z].report.captures to 0>>
<<set $dungeon_floor_list[_z].report.abandons to 0>>
<<set $dungeon_floor_list[_z].report.exp_gained to 0>>
<<set $dungeon_floor_list[_z].report.levels_gained to 0>>
<<set $dungeon_floor_list[_z].report.trap_attempts to 0>>
<<set $dungeon_floor_list[_z].report.trap_successes to 0>>
<<set $dungeon_floor_list[_z].report.spell_attempts to 0>>
<<set $dungeon_floor_list[_z].report.spell_successes to 0>>
<</if>>
<</for>>
* Reputation Calc *
Determines how many girls to add based on current reputation
<<if $dungeon_reputation <= 25>>
<<set $number_of_raiders += random(0, 1)>>
<<elseif $dungeon_reputation <= 100>>
<<set $number_of_raiders += random(1, 2)>>
<<elseif $dungeon_reputation <= 200>>
<<set $number_of_raiders += random(1, 3)>>
<<elseif $dungeon_reputation <= 300>>
<<set $number_of_raiders += random(2, 3)>>
<<elseif $dungeon_reputation <= 400>>
<<set $number_of_raiders += random(2, 4)>>
<<elseif $dungeon_reputation <= 500>>
<<set $number_of_raiders += random(3, 4)>>
<<elseif $dungeon_reputation <= 750>>
<<set $number_of_raiders += random(3, 5)>>
<<elseif $dungeon_reputation <= 1000>>
<<set $number_of_raiders += random(4, 5)>>
<<elseif $dungeon_reputation <= 1250>>
<<set $number_of_raiders += random(4, 6)>>
<<elseif $dungeon_reputation <= 1500>>
<<set $number_of_raiders += random(5, 6)>>
<<elseif $dungeon_reputation <= 2000>>
<<set $number_of_raiders += random(5, 7)>>
<<elseif $dungeon_reputation <= 2500>>
<<set $number_of_raiders += random(6, 7)>>
<<elseif $dungeon_reputation <= 3000>>
<<set $number_of_raiders += random(6, 8)>>
<<elseif $dungeon_reputation <= 3500>>
<<set $number_of_raiders += random(7, 8)>>
<<elseif $dungeon_reputation <= 4000>>
<<set $number_of_raiders += random(7, 9)>>
<<elseif $dungeon_reputation <= 4500>>
<<set $number_of_raiders += random(8, 9)>>
<<elseif $dungeon_reputation <= 5000>>
<<set $number_of_raiders += random(8, 10)>>
<<else>>
<<set $number_of_raiders += random(9, 10)>>
<</if>>
* Threat Calc *
Determines a range of how difficult the Raiders will be based on the Threat level and the dungeon rank. Add multiple of the same subclass to raise chance of a certain subclass appearing. Picks threat string to print as well.
<<if $dungeon_threat <= 10>>
<<set _threat_string to setup.veryeasy_threat_strings.random()>>
<<switch $dungeon_rank>>
<<case 1>>
<<set $subclass_list to [setup.rookie]>>
<<case 2>>
<<set $subclass_list to [setup.rookie, setup.rookie, setup.rookie, setup.novice]>>
<<case 3>>
<<set $subclass_list to [setup.novice, setup.novice, setup.novice, setup.adept]>>
<<case 4>>
<<set $subclass_list to [setup.novice, setup.adept, setup.adept, setup.expert]>>
<<default>>
<<set $subclass_list to [setup.expert]>>
<</switch>>
<<elseif $dungeon_threat <= 35>>
<<set _threat_string to setup.easy_threat_strings.random()>>
<<switch $dungeon_rank>>
<<case 1>>
<<set $subclass_list to [setup.rookie, setup.rookie, setup.rookie, setup.novice]>>
<<case 2>>
<<set $subclass_list to [setup.rookie, setup.rookie, setup.novice]>>
<<case 3>>
<<set $subclass_list to [setup.novice, setup.adept, setup.adept]>>
<<case 4>>
<<set $subclass_list to [setup.adept, setup.expert]>>
<<default>>
<<set $subclass_list to [setup.expert, setup.veteran]>>
<</switch>>
<<elseif $dungeon_threat <= 65>>
<<set _threat_string to setup.average_threat_strings.random()>>
<<switch $dungeon_rank>>
<<case 1>>
<<set $subclass_list to [setup.rookie, setup.rookie, setup.novice]>>
<<case 2>>
<<set $subclass_list to [setup.rookie, setup.novice, setup.novice]>>
<<case 3>>
<<set $subclass_list to [setup.adept, setup.adept, setup.expert]>>
<<case 4>>
<<set $subclass_list to [setup.expert, setup.expert, setup.veteran]>>
<<default>>
<<set $subclass_list to [setup.expert, setup.veteran, setup.veteran, setup.master]>>
<</switch>>
<<elseif $dungeon_threat <= 90>>
<<set _threat_string to setup.hard_threat_strings.random()>>
<<switch $dungeon_rank>>
<<case 1>>
<<set $subclass_list to [setup.rookie, setup.novice, setup.novice]>>
<<case 2>>
<<set $subclass_list to [setup.novice, setup.novice, setup.adept]>>
<<case 3>>
<<set $subclass_list to [setup.adept, setup.expert, setup.expert]>>
<<case 4>>
<<set $subclass_list to [setup.expert, setup.veteran]>>
<<default>>
<<set $subclass_list to [setup.veteran, setup.master]>>
<</switch>>
<<elseif $dungeon_threat <= 100>>
<<set _threat_string to setup.veryhard_threat_strings.random()>>
<<switch $dungeon_rank>>
<<case 1>>
<<set $subclass_list to [setup.novice, setup.novice, setup.adept]>>
<<case 2>>
<<set $subclass_list to [setup.adept, setup.adept, setup.expert]>>
<<case 3>>
<<set $subclass_list to [setup.expert, setup.expert, setup.veteran]>>
<<case 4>>
<<set $subclass_list to [setup.veteran, setup.master]>>
<<default>>
<<set $subclass_list to [setup.master]>>
<</switch>>
<</if>>
* Rank Calc *
Adds extra Raiders depending on the Dungeon Rank and set party size limit
<<switch $dungeon_rank>>
<<case 1>>
<<set $number_of_raiders += random(0, 1)>>
<<set $min_party_size += 1>>
<<set $max_party_size += 2>>
<<case 2>>
<<set $number_of_raiders += random(1, 2)>>
<<set $min_party_size += 1>>
<<set $max_party_size += 3>>
<<case 3>>
<<set $number_of_raiders += random(2, 3)>>
<<set $min_party_size += 1>>
<<set $max_party_size += 3>>
<<case 4>>
<<set $number_of_raiders += random(3, 4)>>
<<set $min_party_size += 2>>
<<set $max_party_size += 3>>
<<default>>
<<set $number_of_raiders += random(4, 5)>>
<<set $min_party_size += 2>>
<<set $max_party_size += 3>>
<</switch>>
* Events *
RAID NIGHT
<<if $current_event.event === true && $current_event.name === setup.raid_night.name>>
<<set _amount to Math.round($number_of_raiders * setup.raid_night.float)>>
<<set _amount to Math.clamp(_amount, setup.raid_night.min_amount, setup.raid_night.max_amount)>>
<<set $number_of_raiders += _amount>>
RAID NIGHT ADDED _amount RAIDERS
<</if>>
* EMPTY TREASURE ROOM PENALTY *
NO GOLD & TREASURE PLENALTY
<<if $pc_gold === 0 && $pc_treasure_list.length === 0>>
<<set _no_treasure_trigger to true>>
<<set $number_of_raiders to Math.round($number_of_raiders / _no_treasure_penalty)>>
<<if $number_of_raiders < 1>>
<<set $number_of_raiders to 1>>
<</if>>
<</if>>
* Set List of Raiders *
CLASS UNIFIED
<<if $current_event.event === true && $current_event.name === setup.class_unified.name>>
<<for _i = 0; _i < $number_of_raiders; _i++>>
FIND CORRECT CLASS TO ADD
<<for _c = 0; _c < setup.class_list.length; _c++>>
<<if setup.class_list[_c].class === $current_event.class>>
<<set $raiding_girls_list.push(setup.class_list[_c])>>
<<set _class_count[_name]++>>
<<break>>
<</if>>
<</for>>
<</for>>
<<else>>
<<for _i = 0; _i < $number_of_raiders; _i++>>
SHUFFLE CLASS NAME LIST FOR RANDOMNESS
<<set _class_listCap.shuffle()>>
<<for _z = 0; _z < _class_listCap.length; _z++>>
<<set _lured_bool to false>> Set to true if Lured a raider, if false, will choose random class to add
<<set _name to _class_listCap[_z]>>
<<set _rng to random(1, 100)>>
ADD CLASS IF LURE NUMBER BEATS RNG
_class_lure[_name] _name LURE % - _rng RNG %
<<if _class_lure[_name] >= _rng && (_class_count[_name] <= Math.round($number_of_raiders / 2) || $number_of_raiders < 4)>>
FIND CORRECT CLASS TO ADD
<<for _c = 0; _c < setup.class_list.length; _c++>>
<<if setup.class_list[_c].class === _name>>
<<set $raiding_girls_list.push(setup.class_list[_c])>>
<<set _lure_list.push(_name)>>
<<set _class_count[_name]++>>
<<set _lured_bool to true>>
<<set $lure_count++>>
<<break>>
<</if>>
<</for>>
BREAK LOOP, ADD NEXT RAIDER
<<break>>
<</if>>
<</for>>
ADD RAIDER FROM RANDOM CLASS IF NO ONE WAS LURED
<<if _lured_bool === false>>
<<set _class to setup.class_list.random()>>
<<set $raiding_girls_list.push(_class)>>
<<set _class_count[_class.class]++>>
<<continue>>
<</if>>
<</for>>
<</if>>
* Add Any Raiders From Other Sources *
<<for _i = 0; _i < $hired_raiders.length; _i++>>
<<set $number_of_raiders++>>
<<set $raiding_girls_list.push($hired_raiders[_i])>>
<<set _class_count[$hired_raiders[_i].class]++>>
<</for>>
* Events *
DARK MOON
<<if $current_event.event === true && $current_event.name === setup.dark_moon.name>>
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if $dungeon_floor_list[_z].room_type === "Creature">>
CREATE NEW EFFECT
<<set _newEffect to setup.creature_effect>>
<<set _newEffect.name to setup.dark_moon.name>>
<<set _newEffect.id to setup.dark_moon.name>>
<<set _newEffect.duration to "raid">>
<<set _newEffect.tooltip to setup.dark_moon.buffTooltip>>
<<set _newEffect.icon to setup.dark_moon.buffIcon>>
CALC STAT CHANGES
<<set _amount to Math.trunc($dungeon_floor_list[_z].max_hp * setup.dark_moon.float)>>
<<if _amount < 1>>
<<set _amount to 1>>
<</if>>
<<set _newEffect.hp to _amount>>
<<set _amount to Math.trunc($dungeon_floor_list[_z].atk * setup.dark_moon.float)>>
<<if _amount < 1>>
<<set _amount to 1>>
<</if>>
<<set _newEffect.atk to _amount>>
<<set _amount to Math.trunc($dungeon_floor_list[_z].pres * setup.dark_moon.float)>>
<<if _amount < 1>>
<<set _amount to 1>>
<</if>>
<<set _newEffect.pres to _amount>>
<<set _amount to Math.trunc($dungeon_floor_list[_z].mres * setup.dark_moon.float)>>
<<if _amount < 1>>
<<set _amount to 1>>
<</if>>
<<set _newEffect.mres to _amount>>
<<set _amount to Math.trunc($dungeon_floor_list[_z].sex * setup.dark_moon.float)>>
<<if _amount < 1>>
<<set _amount to 1>>
<</if>>
<<set _newEffect.sex to _amount>>
APPLY BUFFS
<<set $dungeon_floor_list[_z].max_hp += _newEffect.hp>>
<<set $dungeon_floor_list[_z].cur_hp += _newEffect.hp>>
<<set $dungeon_floor_list[_z].atk += _newEffect.atk>>
<<set $dungeon_floor_list[_z].pres += _newEffect.pres>>
<<set $dungeon_floor_list[_z].mres += _newEffect.mres>>
<<set $dungeon_floor_list[_z].sex += _newEffect.sex>>
PUSH BUFF
<<set $dungeon_floor_list[_z].effects.push(_newEffect)>>
<</if>>
<</for>>
<</if>>
* Print Results *
<</silently>>\
<div id="section">\
<div class="titlebox">\
Scouting Report
</div>\
<div class="cardholder-scout">\
<div class="textbox-scout">\
<<if $number_of_raiders === 1>>\
The current scouting report indicates you have one Raider coming to your Dungeon tonight.
<<else>>\
The current scouting report indicates you have $number_of_raiders Raiders coming to your Dungeon tonight.
<</if>>\
Based on your dungeon's threat level, _threat_string
<<if _no_treasure_trigger === true>>\
Because your Treasure Room has no <span style="color:gold">Gold</span> or <span style="color:gold">Treasures</span>, far fewer Raiders showed up than expected.
<</if>>\
<<if $hired_raiders.length === 1>>\
The Raider you hired has shown up.
<<elseif $hired_raiders.length > 1>>\
The Raiders you hired have shown up.
<</if>>\
</div>\
<div class="titlebox-scout">\
List of Raiders
</div>\
<div class="listbox-scout">\
<ul>\
<<set _count to 0>>\
<<for _z = 0; _count < 5; _z++>>\
<<if _class_count[_class_listCap[_z]] != 0>>\
<<set _count++>>\
<li>X<<- _class_count[_class_listCap[_z]]>> _class_listCap[_z]</li>\
<</if>>\
<<if _z === _class_listCap.length - 1>>\
<<break>>\
<</if>>\
<</for>>\
</ul>\
</div>\
<div class="listbox-scout">\
<<if _count === 5>>\
<ul>
<<set _count to 0>>\
<<for _z = _z; _count < 5; _z++>>\
<<if _class_count[_class_listCap[_z]] === 0>>\
<<if _z === _class_listCap.length - 1>>\
<<break>>\
<<else>>\
<<continue>>\
<</if>>\
<<else>>\
<<set _count++>>\
<li>X<<- _class_count[_class_listCap[_z]]>> _class_listCap[_z]</li>\
<</if>>\
<</for>>\
</ul>\
<</if>>\
</div>\
</div>\
</div>\
<div class="exit-link-right">\
<<button [[Begin the Night|Raiding Party]]>><</button>>
</div>\<<silently>>\
<<set _dupArray to []>>
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if _dupArray.includes($dungeon_floor_list[_z].name) && $dungeon_floor_list[_z].name !== "Empty Room">>
<<print "<<script>>console.log('DUP FOUND:"+$dungeon_floor_list[_z].name+"')<</script>>">>
<<script>>Save.slots.save(7, "DUP ERROR!")<</script>>
<<else>>
<<set _dupArray.push($dungeon_floor_list[_z].name)>>
<</if>>
<</for>>
* SETUP FIRST DUNGEON ROOM *
SET STARTING ROOM
<<for _n = 0; _n < $dungeon_floor_list.length; _n++>>
<<if $dungeon_floor_list[_n].room_type != "Empty">>
<<if $dungeon_floor_list[_n].cur_hp > 0>>
SET TO ROOM
<<set $cur_room_num to _n>>
<<set $next_room to $dungeon_floor_list[_n]>>
<<break>>
<</if>>
<</if>>
<</for>>
CHECKS IF PLAYER ALREADY RAN BETWEEN ROOM EFFECTS ALREADY BEFORE STARTING ANOTHER ROOM!
<<if $first_time_check === false>>
<<set $first_time_check to true>>
<<set $at_entrance to true>>
<<set $intimidating_presence_list to []>> Holds list of raiders who were intimidated
<<set $devil_list to []>> holds list of raiders who gained a new kink
<<set $ruby_list to []>>
<<set $sapphire_list to []>>
<<set $amethyst_list to []>>
* RESET TEXT TRIGGERS *
<<BetweenRoomTriggers>>
* INTIAL ENTRY FOR REPORT *
<<for _z = 0; _z < $raiders.length; _z++>>
<<switch $raiders.length>>
<<case 1>>
<<set _log to $raiders[_z].name + " entered " + $dungeon_name + " alone.">>
<<case 2>>
<<for _x = 0; _x < $raiders.length; _x++>>
<<if _z != _x>>
<<set _log to $raiders[_z].name + " entered " + $dungeon_name + " with " + $raiders[_x].name + ", the " + $raiders[_x].class + ".">>
<</if>>
<</for>>
<<case 3>>
<<set _holder to "">>
<<for _x = 0; _x < $raiders.length; _x++>>
<<if _z != _x && _holder != "">>
<<set _log to $raiders[_z].name + " entered " + $dungeon_name + " with " + $raiders[_x].name + ", the " + $raiders[_x].class + " and " + _holder + ".">>
<<elseif _z != _x && _holder === "">>
<<set _holder to $raiders[_x].name + ", the " + $raiders[_x].class>>
<</if>>
<</for>>
<</switch>>
<<set _newTitle to clone(_log)>>
<<set _newLog to {
type: "Entrance",
title: _newTitle,
entry: []
}>>
<<set $raiders[_z].report.log.push(clone(_newLog))>>
UPDATE PIC
<<set $raiders[_z].pic to $raiders[_z].pic_default>>
<</for>>
* VIRGIN REPORT *
<<for _r = 0; _r < $raiders.length; _r++>>
<<if $raiders[_r].trait_names.includes("Virgin")>>
<<set _entry to "She embarked on the raid as a Virgin.">>
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_r].report.log.push(_lastLog)>>
<</if>>
<<if $raiders[_r].trait_names.includes("Famous")>>
<<set _entry to "She was hoping to grow her fame after completing the raid.">>
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_r].report.log.push(_lastLog)>>
<</if>>
<</for>>
* HOLY BLESSES PARTY *
<<for _r = 0; _r < $raiders.length; _r++>>
<<set $holy_text to false>> set to true if holy raider blesses party
<<if $raiders[_r].trait_names.includes("Holy")>>
UPDATE RAIDER LOG
<<if $raiders.length === 1>>
<<set _entry to "She Blessed herself before entering the dungeon.">>
<<else>>
<<set _entry to "She Blessed the party before entering the dungeon.">>
<</if>>
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_r].report.log.push(_lastLog)>>
TRIGGER TEXT
<<set $holy_text to true>>
<<for _z = 0; _z < $raiders.length; _z++>>
<<if !$raiders[_z].status_names.includes("Blessed")>>
APPLY BLESSED TO TARGET
<<AddStatus $raiders[_z] setup.blessed false>>
<</if>>
<</for>>
<</if>>
<</for>>
* ALCHEMIST POTION *
<<for _r = 0; _r < $raiders.length; _r++>>
<<if $raiders[_r].class === "Alchemist">>
<<AlchemistPotion $raiders[_r] $raiders>>
<</if>>
<</for>>
* ENTER TREASURES *
DEVIL BRACELET
<<for _r = 0; _r < $raiders.length; _r++>>
<<set _rng to random(1, 100)>>
<<if $treasureroom_inventory.count(setup.uncommon_treasure_02.name) * setup.uncommon_treasure_02.percent >= _rng && $raiders[_r].fetishes.length > 0>>
<<set _newKink to $raiders[_r].fetishes.pluck()>>
<<set $raiders[_r].kinks.push(clone(_newKink))>>
<<set _newInfo to {
index: $raiders[_r].index,
kink: clone(_newKink)
}>>
<<set $devil_list.push(_newInfo)>>
<</if>>
<</for>>
RUBY CHARM
<<for _r = 0; _r < $raiders.length; _r++>>
<<set _rng to random(1, 100)>>
<<if $treasureroom_inventory.count(setup.uncommon_treasure_04.name) * setup.uncommon_treasure_04.percent >= _rng && !$raiders[_r].status_names.includes(setup.horny.id)>>
<<AddStatus $raiders[_r] setup.horny false>>
<<set $ruby_list.push($raiders[_r].index)>>
<</if>>
<</for>>
SAPPHIRE CHARM
<<for _r = 0; _r < $raiders.length; _r++>>
<<set _rng to random(1, 100)>>
<<if $treasureroom_inventory.count(setup.uncommon_treasure_05.name) * setup.uncommon_treasure_05.percent >= _rng && !$raiders[_r].status_names.includes(setup.wet.id)>>
<<AddStatus $raiders[_r] setup.wet false>>
<<set $sapphire_list.push($raiders[_r].index)>>
<</if>>
<</for>>
AMETHYST CHARM
<<for _r = 0; _r < $raiders.length; _r++>>
<<set _rng to random(1, 100)>>
<<if $treasureroom_inventory.count(setup.uncommon_treasure_06.name) * setup.uncommon_treasure_06.percent >= _rng && !$raiders[_r].status_names.includes(setup.perverted.id)>>
<<AddStatus $raiders[_r] setup.perverted false>>
<<set $amethyst_list.push($raiders[_r].index)>>
<</if>>
<</for>>
LACED GLOVES
<<set _laced_poisoned to setup.common_treasure_03.int * $treasureroom_inventory.count(setup.common_treasure_03.name)>>
<<set _laced_trig to false>>
<<if _laced_poisoned > 0>>
<<set _laced_trig to true>>
<<for _r = 0; _r < $raiders.length; _r++>>
<<AddStacks $raiders[_r] setup.poisoned _laced_poisoned false>>
<</for>>
<</if>>
SPARKLING TIARA
<<set _sparkling_aroused to setup.common_treasure_04.int * $treasureroom_inventory.count(setup.common_treasure_04.name)>>
<<set _sparkling_trig to false>>
<<if _sparkling_aroused > 0>>
<<set _sparkling_trig to true>>
<<for _r = 0; _r < $raiders.length; _r++>>
<<AddStacks $raiders[_r] setup.aroused _sparkling_aroused false>>
<</for>>
<</if>>
* NIGHTS BLESSING BLESSING *
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if $dungeon_floor_list[_z].room_type === "Creature">>
<<if $dungeon_floor_list[_z].effect_names.includes("Night's Blessing") && $dungeon_floor_list[_z].cur_hp > 0 && $dungeon_floor_list[_z].cur_hp < $dungeon_floor_list[_z].cur_max_hp>>
<<for _d = 0; _d < $dungeon_floor_list[_z].effects.length; _d++>>
<<if $dungeon_floor_list[_z].effects[_d].id === "Night's Blessing">>
<<CreatureStats $dungeon_floor_list[_z]>>
<<set $dungeon_floor_list[_z].cur_hp to (Math.round($dungeon_floor_list[_z].cur_hp + ($dungeon_floor_list[_z].cur_max_hp * $dungeon_floor_list[_z].effects[_d].float))).clamp(1, $dungeon_floor_list[_z].cur_max_hp)>>
$dungeon_floor_list[_z].name END HP: $dungeon_floor_list[_z].cur_hp
<<break>>
<</if>>
<</for>>
<</if>>
<</if>>
<</for>>
<</if>>
* INTIMIDATING PRESENCE *
<<if $pc_blessing_list.includes("Intimidating Presence")>>
<<set _percent to clone(setup.blessing_05_11.base_percent)>>
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if $dungeon_floor_list[_z].room_type === "Creature">>
<<if $dungeon_floor_list[_z].cur_hp > 0>>
<<set _percent += setup.blessing_05_11.percent>>
<</if>>
<</if>>
<</for>>
<<for _z = 0; _z < $raiders.length; _z++>>
<<set _rng to random(1, 100)>>
<<if _rng <= _percent>>
<<AddStatus $raiders[_z] setup.intimidated false>>
<<set $intimidating_presence_list.push($raiders[_z].index)>>
<</if>>
<</for>>
<</if>>
* UPDATE RAIDERS STATS * * REAPPLY STATUSES & RESET PIC*
<<for _r = 0; _r < $raiders.length; _r++>>
<<RaiderUpdate $raiders[_r]>>
<<set $raiders[_r].pic to clone($raiders[_r].pic_default)>>
<</for>>
* RAIDER ENTERING DUNGEON STRINGS *
CONTAINS ALL CHOSEN STRINGS FOR EACH RAIDER
<<set _action_string_list to []>>
<<for _i = 0; _i < $raiders.length; _i++>>
CONTAINS ALL OPTIONS FOR THE CURRENT RAIDER TO PICK FROM
<<set _string_options to setup.random_strings_dungeon_entrance_anyone>>
<<if $raiders[_i].class === "Hunter">>
<<set _string_options to _string_options.concat(setup.random_strings_dungeon_entrance_hunter)>>
<<elseif $raiders[_i].class === "Sorcerer">>
<<set _string_options to _string_options.concat(setup.random_strings_dungeon_entrance_sorcerer)>>
<<elseif $raiders[_i].class === "Knight">>
<<set _string_options to _string_options.concat(setup.random_strings_dungeon_entrance_knight)>>
<<elseif $raiders[_i].class === "Warrior">>
<<set _string_options to _string_options.concat(setup.random_strings_dungeon_entrance_warrior)>>
<<elseif $raiders[_i].class === "Priestess">>
<<set _string_options to _string_options.concat(setup.random_strings_dungeon_entrance_priestess)>>
<<elseif $raiders[_i].class === "Thief">>
<<set _string_options to _string_options.concat(setup.random_strings_dungeon_entrance_thief)>>
<<elseif $raiders[_i].class === "Alchemist">>
<<set _string_options to _string_options.concat(setup.random_strings_dungeon_entrance_alchemist)>>
<<elseif $raiders[_i].class === "Witch">>
<<set _string_options to _string_options.concat(setup.random_strings_dungeon_entrance_witch)>>
<</if>>
<<set _chosen_string to _string_options.random()>>
<<set _action_string_list.push(_chosen_string)>>
<</for>>
<</silently>>\
<div class="wrapper">\
<div class="titlebox">\
Dungeon Entrance
</div>\
<div class="cardholder-columns">\
<<if $raiders.length === 1>>\
<div class="cardholder-3columns">\
</div>\
<</if>>\
<<for _r = 0; _r < $raiders.length; _r++>>\
<div class="cardholder-3columns">\
<div class="cardinfo-3columns">\
<div class="picbox-3columns">\
$raiders[_r].pic
</div>\
<div class="textbox-3columns">\
<ul>\
<<if $is_tutoring === true>>\
<<set $raid_tutorial to 1>>\
Because I'll be the one doing the Raiding! But right now we are just at the Dungeon Entrance. Using the buttons below, you can view the next Floor, open the Dungeon Manager, inspect the Raiders, cast a Spell, read the Guidebook, Save or Load your game, or advance the Raid. For now, you should let me proceed to the first Floor and begin the Raid.
<<else>>\
<li>The $raiders[_r].class _action_string_list[_r]</li>\
<<AlchemistText $raiders[_r]>>
<<if $holy_text === true && $raiders[_r].trait_names.includes("Holy")>>\
<li>She <<hovertip "<<- setup.blessed.tooltip>>">>Blessed<</hovertip>> the party.</li>\
<</if>>\
<<if $intimidating_presence_list.includes($raiders[_r].index)>>\
<li>She shivered at an unseen presence looming over them, becoming <<hovertip '<<- setup.intimidated.tooltip>>'>>Intimidated<</hovertip>>.</li>\
<</if>>\
<<if _laced_trig === true>>\
<li>She was inflicted with <<hovertip "<<- setup.poisoned.tooltip>>">>Poison<</hovertip>> from one of your Treasure's effects.</li>\
<</if>>\
<<if _sparkling_trig === true>>\
<li>She was inflicted with <<hovertip "<<- setup.aroused.tooltip>>">>Arouse<</hovertip>> from one of your Treasure's effects.</li>\
<</if>>\
<<if $ruby_list.includes($raiders[_r].index)>>\
<li>She became <<hovertip "<<- setup.horny.tooltip>>">>Horny<</hovertip>> from one of your Treasure's effects.</li>\
<</if>>\
<<if $sapphire_list.includes($raiders[_r].index)>>\
<li>She became <<hovertip "<<- setup.wet.tooltip>>">>Wet<</hovertip>> from one of your Treasure's effects.</li>\
<</if>>\
<<if $amethyst_list.includes($raiders[_r].index)>>\
<li>She became <<hovertip "<<- setup.perverted.tooltip>>">>Perverted<</hovertip>> from one of your Treasure's effects.</li>\
<</if>>\
<<for _z = 0; _z < $devil_list.length; _z++>>\
<<if $devil_list.index === $raiders[_r].index>>\
<li>She gained the $devil_list.kink Kink from one of your Treasure's effects.</li>\
<<break>>\
<</if>>\
<</for>>\
<</if>>\
</ul>\
</div>\
</div>\
</div>\
<</for>>\
</div>\
<div class="cardinfo-links">\
<div class="longlinks-table">\
<<if $is_tutoring === true>>\
<div class="offpurplebutton">\
<<button "Next Floor: $next_room.name">><</button>>
</div>\
<<else>>\
<span id="1">\
<<if $next_room.room_type === "Creature">>\
<div class="purplebutton">\
<<button "Next Floor: $next_room.name ^^1^^" "Creature Room">><<set $display_creature to $next_room>><<set $display_room_num to $cur_room_num>><</button>>
</div>\
<<elseif $next_room.room_type === "Trap">>\
<div class="purplebutton">\
<<button "Next Floor: $next_room.name ^^1^^" "Trap Room">><<set $display_trap to $next_room>><<set $display_room_num to $cur_room_num>><</button>>
</div>\
<<elseif $next_room.room_type === "Treasure">>\
<div class="offpurplebutton">\
<<button "Next Floor: $next_room.name">><</button>>
</div>\
<</if>>\
</span>\
<</if>>\
</div>\
<div class="longlinks-table">\
<<if $is_tutoring === true>>\
<div class="offpurplebutton">\
<<button "Dungeon Manager">><</button>>
</div>\
<<else>>\
<div class="purplebutton">\
<span id="2"><<button "Dungeon Manager ^^2^^" "Dungeon Floor Manager">><</button>></span>
</div>\
<</if>>\
</div>\
<div class="links-table">\
<<if $is_tutoring === true>>\
<div class="offpurplebutton">\
<<button "Raiders">><</button>>
</div>\
<<else>>\
<div class="purplebutton">\
<span id="3"><<button "Raiders ^^3^^" "View Raiding Party">><</button>></span>
</div>\
<</if>>\
</div>\
<div class="links-table">\
<<if $is_tutoring === true>>\
<div class="offpurplebutton">\
<<button "Spellbook">><</button>>
</div>\
<<else>>\
<div class="purplebutton">\
<span id="4"><<button "Spellbook ^^4^^" "View Spells">>\
<<set $filter_spell to []>>\
<<for _s = 0; _s < $pc_spellbook.length; _s++>>\
<<UpdateSpell $pc_spellbook[_s]>>\
<</for>>\
<<set $spellbook_page to 0>>\
<</button>></span>\
</div>\
<</if>>\
</div>\
<div class="links-table">\
<<if $is_tutoring === true>>\
<div class="offpurplebutton">\
<<button "Guidebook">><</button>>
</div>\
<<else>>\
<div class="purplebutton">\
<span id="5"><<button "Guidebook ^^5^^" "Guidebook">><</button>></span>
</div>\
<</if>>\
</div>\
<div class="links-table">\
<<if $is_tutoring === true>>\
<div class="offpurplebutton">\
<<button "Save/Load">><</button>>
</div>\
<<else>>\
<div class="purplebutton">\
<span id="6"><<button "Save/Load ^^6^^">><<script>>UI.saves()<</script>><</button>></span>
</div>\
<</if>>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[Start Raid|$next_room.passage]]>><<set $this_room to $next_room>><<set $at_entrance to false>><<unset $holy_text, $topaz_list, $ruby_list, $sapphire_list, $amethyst_list, $intimidating_presence_list>><</button>></span>
</div>\
</div>\<<silently>>\
* SETUP ROOM *
<<RoomSetup $raiders $this_room>>
<<CreatureStats $this_room>>
* SETUP RAIDER *
<<RaiderSetup $raiders>>
* PRE COMBAT EFFECTS *
<<PreCombat $raiders $this_room>>
* DANCER BUFF *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].class === "Dancer">>
<<DancerBuff $raiders[_i] $this_room>>
<</if>>
<</for>>
* SLIME CHOOSES TARGET *
<<CreatureChooseTarget $raiders $this_room>>
* SLIME NORMAL & SEXUAL ATTACK *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].attacked === true>>
<<set _slime_atk to clone($this_room.cur_atk)>> Base Attack
<<set _slime_sex to clone($this_room.cur_sex)>> Base Sex
<<set _slime_atks to 1>> Base number of attacks
<<if $this_room.name === "Giant Slime">>
<<set _slime_atk to Math.trunc($this_room.cur_atk * $this_room.big_float)>>
<<set _slime_sex to Math.trunc($this_room.cur_sex * $this_room.big_float)>>
<<elseif $this_room.name === "Horny Slime">>
<<set _slime_atk to Math.trunc($this_room.cur_atk * $this_room.horny_float)>>
<<set _slime_sex to Math.trunc($this_room.cur_sex * $this_room.horny_float)>>
<<set _slime_atks to 2>>
<<else>>
<<set _slime_atk to clone($this_room.cur_atk)>>
<<set _slime_sex to clone($this_room.cur_sex)>>
<</if>>
<<for _a = _slime_atks; _a > 0; _a-->>
<<NormalAttack $raiders[_i] $this_room _slime_atk>>
<<SexualAttack $raiders[_i] $this_room _slime_sex>>
* STICKY STATUS *
<<if $this_room.name === "Giant Slime">>
<<set _sticky_stacks to random($this_room.big_min_stacks, $this_room.big_max_stacks)>>
<<else>>
<<set _sticky_stacks to random($this_room.min_sticky_stacks, $this_room.max_sticky_stacks)>>
<</if>>
FIND ACCURATE STICKY AMOUNT
<<if $raiders[_i].status_names.includes("Sticky")>>
<<for _z = 0; _z < $raiders[_i].statuses.length; _z++>>
<<if $raiders[_i].statuses[_z].id === "Sticky">>
<<set _num to clone($raiders[_i].statuses[_z].gain)>>
<<break>>
<</if>>
<</for>>
<</if>>
<<AddStacks $raiders[_i] setup.sticky _sticky_stacks true>>
TOXIC SLIME BONUSES
<<if $this_room.name === "Toxic Slime">>
<<set _poisoned_stacks to $this_room.toxic_poisoned + Math.trunc($this_room.cur_atk * $this_room.toxic_float)>>
<<AddStacks $raiders[_i] setup.poisoned _poisoned_stacks true>>
<<AddStatus $raiders[_i] setup.stripped true>>
<</if>>
<</for>>
FIND ACCURATE STICKY AMOUNT
<<if $raiders[_i].status_names.includes("Sticky")>>
<<for _z = 0; _z < $raiders[_i].statuses.length; _z++>>
<<if $raiders[_i].statuses[_z].id === "Sticky">>
<<set _sticky_gained to clone($raiders[_i].statuses[_z].gain)>>
<<break>>
<</if>>
<</for>>
<</if>>
FIND POISONED GAINED FOR REPORT
<<if $raiders[_i].status_names.includes("Poisoned")>>
<<for _s = 0; _s < $raiders[_i].statuses.length; _s++>>
<<if $raiders[_i].statuses[_s].id === setup.poisoned.id>>
<<set _poisoned_gained to $raiders[_i].statuses[_s].gain>>
<<break>>
<</if>>
<</for>>
<</if>>
UPDATE RAIDER REPORT
<<if _text_triggers.status.poisoned.includes($raiders[_i].index) && _text_triggers.status.stripped.includes($raiders[_i].index) && _text_triggers.status.sticky.includes($raiders[_i].index)>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage, gained "+_sticky_gained+" Sticky and "+_poisoned_gained+" Poison, and became Stripped.">>
<<elseif _text_triggers.status.poisoned.includes($raiders[_i].index) && _text_triggers.status.sticky.includes($raiders[_i].index)>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage and gained "+_sticky_gained+" Sticky and "+_poisoned_gained+" Poison.">>
<<elseif _text_triggers.status.stripped.includes($raiders[_i].index) && _text_triggers.status.sticky.includes($raiders[_i].index)>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage, gained "+_sticky_gained+" Sticky, and became Stripped.">>
<<elseif _text_triggers.status.stripped.includes($raiders[_i].index) && _text_triggers.status.poisoned.includes($raiders[_i].index)>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage, gained "+_poisoned_gained+" Poison, and became Stripped.">>
<<elseif _text_triggers.status.poisoned.includes($raiders[_i].index)>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage and gained "+_poisoned_gained+" Poison.">>
<<elseif _text_triggers.status.stripped.includes($raiders[_i].index)>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage and became Stripped.">>
<<elseif _text_triggers.status.sticky.includes($raiders[_i].index)>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage and gained "+_sticky_gained+" Sticky.">>
<<else>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage.">>
<</if>>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<<else>>
UPDATE RAIDER REPORT
<<set _entry to "She was not attacked.">>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<</if>>
<</for>>
* RAIDERS ATTACK *
<<for _i = 0; _i < $raiders.length; _i++>>
<<RaiderAttack $raiders[_i] $this_room>>
<</for>>
* POST COMBAT EFFECTS *
<<for _r = 0; _r < $raiders.length; _r++>>
<<PostCombat $raiders[_r] $this_room>>
<</for>>
* CHOOSE RAIDER PICTURES *
SETUP RAIDER PICS ARRAY
<<set _picArray to clone($this_room.raider_pics)>>
<<for _i = 0; _i < $raiders.length; _i++>>
* Attacked Pictures *
<<if $raiders[_i].attacked === true>>
<<set $raiders[_i].pic to _picArray[$raiders[_i].body_type].pluck()>>
<</if>>
<</for>>
* SLIME EXP & DAMAGE *
<<CreaturePostCombat $raiders $this_room>>
* END OF COMBAT REPORT *
<<PostCombatReport $raiders $this_room>>
* CLEAN UP *
<<CleanUp $raiders $this_room>>
* DISPLAY INFO *
<<set _cardholderID to "cardholder-raid-"+$raiders.length+"raiders">>
<<set _cardinfoID to "cardinfo-raid-"+$raiders.length+"raiders">>
<<set _picboxID to "picbox-raid-"+$raiders.length+"raiders">>
<<set _textboxID to "textbox-raid-"+$raiders.length+"raiders">>
<</silently>>\
<<NextRoomButton>>\
<div class="cardholder-raid-playerside">\
<div class="cardinfo-raid-creature">\
<div class="roomtitle-raid-player">\
Floor $cur_room_num
</div>\
<div class="picbox-raid-player">\
_room_image
</div>\
<div class="namebox-raid-player">\
<strong>$this_room.name</strong>
---- Health: $this_room.cur_hp / $this_room.cur_max_hp ----
</div>\
<div class="textbox-raid-player">\
<ul>\
<<CreatureRoomText $this_room>>
<<BlessingTriggerText $this_room>>
<<EffectEndingText $this_room>>
</ul>\
</div>\
</div>\
</div>\
<div class="cardholder-raid-raiderside">\
<<for _r = 0; _r < $raiders.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_textboxID">\
<ul>\
<<CreatureTargetText $raiders[_r] $this_room>>
<<DancerDanceText $raiders[_r] $this_room>>
<<RaiderAtkText $raiders[_r] $this_room>>\
<<if $raiders[_r].attacked === true>>\
<<if $this_room.name === "Slime">>\
<li>The Slime leapt at her, covering her with its ooze while rubbing her pussy, taking @@.phy;$raiders[_r].dmg_taken Physical@@ damage and @@.sex;$raiders[_r].sex_taken Sexual@@ damage.</li>\
<<elseif $this_room.name === "Giant Slime">>\
<li>The Giant Slime rolled around and absorbed her into its body, suffocating her while penetrating her pussy under her clothes, dealing @@.phy;$raiders[_r].dmg_taken Physical@@ damage and @@.sex;$raiders[_r].sex_taken Sexual@@ damage to her.</li>\
<<elseif $this_room.name === "Toxic Slime">>\
<li>The Toxic Slime jumped on her, melting away her clothes while it pleasured her clit, dealing @@.phy;$raiders[_r].dmg_taken Physical@@ damage and @@.sex;$raiders[_r].sex_taken Sexual@@ damage to her.</li>\
<<elseif $this_room.name === "Horny Slime">>\
<li>The Horny Slime grabbed her with its tentacle-like arms and pulled her in, filling all her holes aggressively, dealing @@.phy;$raiders[_r].dmg_taken Physical@@ damage and @@.sex;$raiders[_r].sex_taken Sexual@@ damage to her over two attacks.</li>\
<</if>>\
<<RaiderFetishText $raiders[_r] $this_room>>
<</if>>\
<<PostCombatText $raiders[_r] $this_room>>
</ul>\
</div>\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
</div>\
</div>\
<</for>>\
</div>\<<silently>>\
<<set _dupArray to []>>
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if _dupArray.includes($dungeon_floor_list[_z].name) && $dungeon_floor_list[_z].name !== "Empty Room">>
<<print "<<script>>console.log('DUP FOUND:"+$dungeon_floor_list[_z].name+"')<</script>>">>
<<script>>Save.autosave.save("Dup Error")<</script>>
<<else>>
<<set _dupArray.push($dungeon_floor_list[_z].name)>>
<</if>>
<</for>>
* SET NEXT ROOM *
<<for _n = $cur_room_num; _n < $dungeon_floor_list.length; _n++>>
<<if $dungeon_floor_list[_n].room_type != "Empty">>
<<if $dungeon_floor_list[_n].cur_hp > 0>>
SET TO ROOM
<<set $cur_room_num to _n>>
<<set $absentminded_room to _n - 1>>
<<set $next_room to $dungeon_floor_list[_n]>>
<<break>>
<</if>>
<</if>>
<</for>>
<<if _n >= $dungeon_floor_list.length>>
SET TREASURE ROOM
<<set $absentminded_room to $cur_room_num - 1>>
<<set $next_room to setup.treasure_room>>
<</if>>
CHECKS IF PLAYER ALREADY RAN BETWEEN ROOM EFFECTS ALREADY BEFORE STARTING ANOTHER ROOM!
<<if $first_time_check === false>>
<<set $first_time_check to true>>
* SETUP RAIDER REPORT LOG *
<<set _prev_room to $prev_room_num + 1>>
<<set _next_room to _prev_room + 1>>
<<set _title to "Between Floors " + _prev_room + " and " + _next_room>>
<<for _z = 0; _z < $raiders.length; _z++>>
<<set _newLog to {
type: "Between",
title:_title,
entry: []
}>>
<<set $raiders[_z].report.log.push(clone(_newLog))>>
<</for>>
* TEXT TRIGGERS *
<<BetweenRoomTriggers>>
*TRAIT TRIGGER VARIABLES*
EXHIBITIONIST
<<set $exhibitionist_list to []>>
<<set $exhibitionist_trigger to false>>
ABSENTMINDED
<<set $absentminded_raider to "">>
<<set $absentminded_trigger to false>>
LACTATION & FUTANARI
<<set $leaking_list to []>>
*STATUS TRIGGER VARIABLES*
FEAR
<<set $fear_list to []>>
<<set $fear_trigger to false>>
BIRTH
<<set $birth_event_list to []>> holds list of all birth events triggered
<<set $cur_birth_event to []>> holds all birthing event from the same raider that will be displayed
* REMOVE TEMPORARY STATUSES *
<<for _r = 0; _r < $raiders.length; _r++>>
BRAINWASHED
<<if $raiders[_r].status_names.includes("Brainwashed")>>
<<for _e = 0; _e < $raiders[_r].statuses.length; _e++>>
<<if $raiders[_r].statuses[_e].id === setup.brainwashed.id>>
<<if $raiders[_r].statuses[_e].permanent_bool === false && $raiders[_r].statuses[_e].bool === true>>
REMOVE STATUS
<<set _delete to $raiders[_r].statuses.deleteAt(_e)>>
<<set _delete to $raiders[_r].status_names.delete(setup.brainwashed.id)>>
<<set $between_triggers.status.brainwashed_cured.push($raiders[_r].index)>>
<</if>>
<<break>>
<</if>>
<</for>>
<</if>>
TRANCE
<<if $raiders[_r].status_names.includes("Trance")>>
<<for _e = 0; _e < $raiders[_r].statuses.length; _e++>>
<<if $raiders[_r].statuses[_e].id === setup.trance.id>>
REMOVE STATUS
<<set _delete to $raiders[_r].statuses.deleteAt(_e)>>
<<set _delete to $raiders[_r].status_names.delete(setup.trance.id)>>
<<break>>
<</if>>
<</for>>
<</if>>
DANCER DANCES
<<if $raiders[_r].status_names.includes("Dancer Buff")>>
<<for _z = 0; _z < $raiders[_r].statuses.length; _z++>>
<<if $raiders[_r].statuses[_z].id === "Dancer Buff">>
<<set _remove to $raiders[_r].statuses.deleteAt(_z)>>
<<set _removeName to $raiders[_r].status_names.delete("Dancer Buff")>>
REMOVED _remove.id
SET LOOP BACK
<<set _z-->>
<</if>>
<</for>>
<</if>>
ENCHANTRESS'S HINDRANCE
<</for>>
* TRIGGER POTIONS AND REDUCE STACKS *
<<for _r = 0; _r < $raiders.length; _r++>>
--- POTION OF RESTORATION ---
<<if $raiders[_r].status_names.includes(setup.potion_of_restoration.id)>>
<<for _z = 0; _z < $raiders[_r].statuses.length; _z++>>
<<if $raiders[_r].statuses[_z].id === setup.potion_of_restoration.id>>
RESTORE HEALTH
<<set $raiders[_r].cur_health to Math.clamp($raiders[_r].cur_health + $raiders[_r].statuses[_z].amount, 1, $raiders[_r].max_health)>>
REDUCE CD
<<set $raiders[_r].statuses[_z].cd-->>
<<if $raiders[_r].statuses[_z].cd <= 0>>
TRIGGER TEXT, HOLD INFO
<<set $between_triggers.potion_expired.restoration.push($raiders[_r].index)>>
<<set _info to {
id: $raiders[_r].index,
potion: clone($raiders[_r].statuses[_z])
}>>
<<set $between_triggers.potion_expired.potion_info.push(clone(_info))>>
REMOVE POTION,
<<set _delete to $raiders[_r].statuses.deleteAt(_z)>>
<<set _deleteName to $raiders[_r].status_names.deleteAt(_z)>>
<<else>>
UPDATE NAME
<<set $raiders[_r].statuses[_z].name to setup.potion_of_restoration.id+" x"+$raiders[_r].statuses[_z].cd>>
TRIGGER TEXT
<<set $between_triggers.potion.restoration.push($raiders[_r].index)>>
<</if>>
<<break>>
<</if>>
<</for>>
<</if>>
--- POTION OF CALMING ---
<<if $raiders[_r].status_names.includes(setup.potion_of_calming.id)>>
<<for _z = 0; _z < $raiders[_r].statuses.length; _z++>>
<<if $raiders[_r].statuses[_z].id === setup.potion_of_calming.id>>
REDUCE LUST
<<set $raiders[_r].cur_lust to Math.clamp($raiders[_r].cur_lust - $raiders[_r].statuses[_z].amount, 0, $raiders[_r].max_lust - 1)>>
REDUCE CD
<<set $raiders[_r].statuses[_z].cd-->>
<<if $raiders[_r].statuses[_z].cd <= 0>>
TRIGGER TEXT, HOLD INFO
<<set $between_triggers.potion_expired.calming.push($raiders[_r].index)>>
<<set _info to {
id: $raiders[_r].index,
potion: clone($raiders[_r].statuses[_z])
}>>
<<set $between_triggers.potion_expired.potion_info.push(clone(_info))>>
REMOVE POTION,
<<set _delete to $raiders[_r].statuses.deleteAt(_z)>>
<<set _deleteName to $raiders[_r].status_names.deleteAt(_z)>>
<<else>>
UPDATE NAME
<<set $raiders[_r].statuses[_z].name to setup.potion_of_calming.id+" x"+$raiders[_r].statuses[_z].cd>>
TRIGGER TEXT
<<set $between_triggers.potion.calming.push($raiders[_r].index)>>
<</if>>
<<break>>
<</if>>
<</for>>
<</if>>
--- NUMBING POTION ---
<<if $raiders[_r].status_names.includes(setup.numbing_potion.id)>>
<<for _z = 0; _z < $raiders[_r].statuses.length; _z++>>
<<if $raiders[_r].statuses[_z].id === setup.numbing_potion.id>>
REDUCE CD
<<set $raiders[_r].statuses[_z].cd-->>
<<if $raiders[_r].statuses[_z].cd <= 0>>
TRIGGER TEXT, HOLD INFO
<<set $between_triggers.potion_expired.numbing.push($raiders[_r].index)>>
<<set _info to {
id: $raiders[_r].index,
potion: clone($raiders[_r].statuses[_z])
}>>
<<set $between_triggers.potion_expired.potion_info.push(clone(_info))>>
REMOVE POTION,
<<set _delete to $raiders[_r].statuses.deleteAt(_z)>>
<<set _deleteName to $raiders[_r].status_names.deleteAt(_z)>>
<<else>>
UPDATE NAME
<<set $raiders[_r].statuses[_z].name to setup.numbing_potion.id+" x" + $raiders[_r].statuses[_z].cd>>
<</if>>
<<break>>
<</if>>
<</for>>
<</if>>
--- GRIT POTION ---
<<if $raiders[_r].status_names.includes(setup.numbing_potion.id)>>
<<for _z = 0; _z < $raiders[_r].statuses.length; _z++>>
<<if $raiders[_r].statuses[_z].id === setup.grit_potion.id>>
REDUCE CD
<<set $raiders[_r].statuses[_z].cd-->>
<<if $raiders[_r].statuses[_z].cd <= 0>>
TRIGGER TEXT, HOLD INFO
<<set $between_triggers.potion_expired.grit.push($raiders[_r].index)>>
<<set _info to {
id: $raiders[_r].index,
potion: clone($raiders[_r].statuses[_z])
}>>
<<set $between_triggers.potion_expired.potion_info.push(clone(_info))>>
REMOVE POTION,
<<set _delete to $raiders[_r].statuses.deleteAt(_z)>>
<<set _deleteName to $raiders[_r].status_names.deleteAt(_z)>>
<<else>>
UPDATE NAME
<<set $raiders[_r].statuses[_z].name to setup.grit_potion.id+" x" + $raiders[_r].statuses[_z].cd>>
<</if>>
<<break>>
<</if>>
<</for>>
<</if>>
--- METTLE POTION ---
<<if $raiders[_r].status_names.includes(setup.mettle_potion.id)>>
<<for _z = 0; _z < $raiders[_r].statuses.length; _z++>>
<<if $raiders[_r].statuses[_z].id === setup.mettle_potion.id>>
REDUCE CD
<<set $raiders[_r].statuses[_z].cd-->>
<<if $raiders[_r].statuses[_z].cd <= 0>>
TRIGGER TEXT, HOLD INFO
<<set $between_triggers.potion_expired.mettle.push($raiders[_r].index)>>
<<set _info to {
id: $raiders[_r].index,
potion: clone($raiders[_r].statuses[_z])
}>>
<<set $between_triggers.potion_expired.potion_info.push(clone(_info))>>
REMOVE POTION,
<<set _delete to $raiders[_r].statuses.deleteAt(_z)>>
<<set _deleteName to $raiders[_r].status_names.deleteAt(_z)>>
<<else>>
UPDATE NAME
<<set $raiders[_r].statuses[_z].name to setup.mettle_potion.id+" x" + $raiders[_r].statuses[_z].cd>>
<</if>>
<<break>>
<</if>>
<</for>>
<</if>>
--- FIERY POTION ---
<<if $raiders[_r].status_names.includes(setup.fiery_potion.id)>>
<<for _z = 0; _z < $raiders[_r].statuses.length; _z++>>
<<if $raiders[_r].statuses[_z].id === setup.fiery_potion.id>>
REDUCE CD
<<set $raiders[_r].statuses[_z].cd-->>
<<if $raiders[_r].statuses[_z].cd <= 0>>
TRIGGER TEXT, HOLD INFO
<<set $between_triggers.potion_expired.fiery.push($raiders[_r].index)>>
<<set _info to {
id: $raiders[_r].index,
potion: clone($raiders[_r].statuses[_z])
}>>
<<set $between_triggers.potion_expired.potion_info.push(clone(_info))>>
REMOVE POTION,
<<set _delete to $raiders[_r].statuses.deleteAt(_z)>>
<<set _deleteName to $raiders[_r].status_names.deleteAt(_z)>>
<<else>>
UPDATE NAME
<<set $raiders[_r].statuses[_z].name to setup.fiery_potion.id+" x" + $raiders[_r].statuses[_z].cd>>
<</if>>
<<break>>
<</if>>
<</for>>
<</if>>
--- POTION OF PERCEPTION ---
<<if $raiders[_r].status_names.includes(setup.potion_of_perception.id)>>
<<for _z = 0; _z < $raiders[_r].statuses.length; _z++>>
<<if $raiders[_r].statuses[_z].id === setup.potion_of_perception.id>>
REDUCE CD
<<set $raiders[_r].statuses[_z].cd-->>
<<if $raiders[_r].statuses[_z].cd <= 0>>
TRIGGER TEXT, HOLD INFO
<<set $between_triggers.potion_expired.perception.push($raiders[_r].index)>>
<<set _info to {
id: $raiders[_r].index,
potion: clone($raiders[_r].statuses[_z])
}>>
<<set $between_triggers.potion_expired.potion_info.push(clone(_info))>>
REMOVE POTION,
<<set _delete to $raiders[_r].statuses.deleteAt(_z)>>
<<set _deleteName to $raiders[_r].status_names.deleteAt(_z)>>
<<else>>
UPDATE AMOUNT
<<set $raiders[_r].statuses[_z].amount -= $raiders[_r].statuses[_z].int>>
UPDATE NAME
<<set $raiders[_r].statuses[_z].name to setup.potion_of_perception.id+" x" + $raiders[_r].statuses[_z].cd>>
<</if>>
<</if>>
<</for>>
<</if>>
--- POTION OF FAITH ---
<<if $raiders[_r].status_names.includes(setup.potion_of_faith.id)>>
<<for _z = 0; _z < $raiders[_r].statuses.length; _z++>>
<<if $raiders[_r].statuses[_z].id === setup.potion_of_faith.id>>
REDUCE CD
<<set $raiders[_r].statuses[_z].cd-->>
<<if $raiders[_r].statuses[_z].cd <= 0>>
TRIGGER TEXT, HOLD INFO
<<set $between_triggers.potion_expired.faith.push($raiders[_r].index)>>
<<set _info to {
id: $raiders[_r].index,
potion: clone($raiders[_r].statuses[_z])
}>>
<<set $between_triggers.potion_expired.potion_info.push(clone(_info))>>
REMOVE POTION,
<<set _delete to $raiders[_r].statuses.deleteAt(_z)>>
<<set _deleteName to $raiders[_r].status_names.deleteAt(_z)>>
<<else>>
UPDATE AMOUNT
<<set $raiders[_r].statuses[_z].amount -= $raiders[_r].statuses[_z].int>>
UPDATE NAME
<<set $raiders[_r].statuses[_z].name to setup.potion_of_faith.id+" x" + $raiders[_r].statuses[_z].cd>>
<</if>>
<</if>>
<</for>>
<</if>>
--- POTION OF FORTUNE ---
<<if $raiders[_r].status_names.includes(setup.potion_of_fortune.id)>>
<<for _z = 0; _z < $raiders[_r].statuses.length; _z++>>
<<if $raiders[_r].statuses[_z].id === setup.potion_of_fortune.id>>
REDUCE CD
<<set $raiders[_r].statuses[_z].cd-->>
<<if $raiders[_r].statuses[_z].cd <= 0>>
TRIGGER TEXT, HOLD INFO
<<set $between_triggers.potion_expired.fortune.push($raiders[_r].index)>>
<<set _info to {
id: $raiders[_r].index,
potion: clone($raiders[_r].statuses[_z])
}>>
<<set $between_triggers.potion_expired.potion_info.push(clone(_info))>>
REMOVE POTION,
<<set _delete to $raiders[_r].statuses.deleteAt(_z)>>
<<set _deleteName to $raiders[_r].status_names.deleteAt(_z)>>
<<else>>
UPDATE AMOUNT
<<set $raiders[_r].statuses[_z].amount -= $raiders[_r].statuses[_z].int>>
UPDATE NAME
<<set $raiders[_r].statuses[_z].name to setup.potion_of_fortune.id+" x" + $raiders[_r].statuses[_z].cd>>
<</if>>
<</if>>
<</for>>
<</if>>
--- HEROIC POTION ---
<<if $raiders[_r].status_names.includes(setup.heroic_potion.id)>>
<<for _z = 0; _z < $raiders[_r].statuses.length; _z++>>
<<if $raiders[_r].statuses[_z].id === setup.heroic_potion.id>>
REDUCE CD
<<set $raiders[_r].statuses[_z].cd-->>
<<if $raiders[_r].statuses[_z].cd <= 0>>
TRIGGER TEXT, HOLD INFO
<<set $between_triggers.potion_expired.heroic.push($raiders[_r].index)>>
<<set _info to {
id: $raiders[_r].index,
potion: clone($raiders[_r].statuses[_z])
}>>
<<set $between_triggers.potion_expired.potion_info.push(clone(_info))>>
REMOVE POTION,
<<set _delete to $raiders[_r].statuses.deleteAt(_z)>>
<<set _deleteName to $raiders[_r].status_names.deleteAt(_z)>>
<<else>>
UPDATE AMOUNT
<<set $raiders[_r].statuses[_z].amount -= $raiders[_r].statuses[_z].int>>
UPDATE NAME
<<set $raiders[_r].statuses[_z].name to setup.heroic_potion.id+" x" + $raiders[_r].statuses[_z].cd>>
<</if>>
<</if>>
<</for>>
<</if>>
<</for>>
* TRIGGER STATUS *
<<for _r = 0; _r < $raiders.length; _r++>>
AROUSED
<<if $raiders[_r].status_names.includes(setup.aroused.id)>>
<<for _z = 0; _z < $raiders[_r].statuses.length; _z++>>
FIND STATUS
<<if $raiders[_r].statuses[_z].id === setup.aroused.id>>
DOESNT TRIGGER IF ALREADY MAX LUST
<<if $raiders[_r].cur_lust + 1 < $raiders[_r].max_lust>>
TRIGGER TEXT
<<set $between_triggers.status.aroused.push($raiders[_r].index)>>
INCREASE LUST
<<set _amount to clone($raiders[_r].statuses[_z].stack)>>
<<if $raiders[_r].cur_lust + _amount >= $raiders[_r].max_lust>>
<<set _amount to $raiders[_r].max_lust - $raiders[_r].cur_lust - 1>>
<</if>>
<<set $raiders[_r].statuses[_z].amount to clone(_amount)>>
<<set $raiders[_r].cur_lust += _amount>>
<</if>>
REDUCE STACKS
<<set $raiders[_r].statuses[_z].stack-->>
<<if $raiders[_r].statuses[_z].stack <= 0>>
REMOVE STATUS
<<set $between_triggers.status.aroused_cured.push($raiders[_r].index)>>
REMOVING STATUS
<<set _delete to $raiders[_r].statuses.deleteAt(_z)>>
<<set _delete to $raiders[_r].status_names.delete(setup.aroused.name)>>
<<else>>
CLAMP
<<set $raiders[_r].statuses[_z].stack to Math.clamp($raiders[_r].statuses[_z].stack, 0, $raiders[_r].statuses[_z].max_stack)>>
UPDATE NAME
<<set $raiders[_r].statuses[_z].name to "Aroused x" + $raiders[_r].statuses[_z].stack>>
<</if>>
<<break>>
<</if>>
<</for>>
<</if>>
FEAR
<<if $raiders[_r].status_names.includes(setup.fear.id) && $raiders.length === 1 && !$raiders[_r].trait_names.includes("Courageous")>>
FIND STATUS
<<for _z = 0; _z < $raiders[_r].statuses.length; _z++>>
<<if $raiders[_r].statuses[_z].id === setup.fear.id>>
<<set $raiders[_r].statuses[_z].stack++>>
<<set $between_triggers.status.fear.push($raiders[_r].index)>>
<</if>>
<</for>>
<</if>>
INTOXICATED
<<if $raiders[_r].status_names.includes(setup.intoxicated.id)>>
FIND STATUS
<<for _z = 0; _z < $raiders[_r].statuses.length; _z++>>
<<if $raiders[_r].statuses[_z].id === setup.intoxicated.id>>
REDUCE STACKS
<<set $raiders[_r].statuses[_z].stack-->>
<<if $raiders[_r].statuses[_z].stack <= 0>>
REMOVE STATUS
<<set $between_triggers.status.intoxicated_cured.push($raiders[_r].index)>>
REMOVING STATUS
<<set _delete to $raiders[_r].statuses.deleteAt(_z)>>
<<set _delete to $raiders[_r].status_names.delete(setup.intoxicated.id)>>
<<else>>
CLAMP
<<set $raiders[_r].statuses[_z].stack to Math.clamp($raiders[_r].statuses[_z].stack, 0, $raiders[_r].statuses[_z].max_stack)>>
UPDATE NAME
<<if $raiders[_r].statuses[_z].specialName != "">>
<<set _name to $raiders[_r].statuses[_z].specialName>>
<<else>>
<<set _name to $raiders[_r].statuses[_z].id>>
<</if>>
<<set $raiders[_r].statuses[_z].name to _name+" x"+$raiders[_r].statuses[_z].stack>>
<</if>>
<</if>>
<</for>>
<</if>>
PARASITE
<<if $raiders[_r].status_names.includes(setup.parasite.id)>>
CHECK FOR DEBUFF
<<if !$raiders[_r].status_names.includes(setup.parasite.debuff_id)>>
CREATE DEBUFF
<<set _newDebuff to clone(setup.stat_down)>>
<<set _newDebuff.id to setup.parasite.debuff_id>>
<<set _newDebuff.count to 0>>
<<set _newDebuff.name to "Leeched">>
PUSH STATUS
<<set $raiders[_r].statuses.push(_newDebuff)>>
<<set $raiders[_r].status_names.push(_newDebuff.id)>>
<</if>>
FIND STATUS
<<for _z = 0; _z < $raiders[_r].statuses.length; _z++>>
<<if $raiders[_r].statuses[_z].id === setup.parasite.debuff_id>>
INCREASE STAT COUNT
<<set $raiders[_r].statuses[_z].count += Math.round($raiders[_r].vig * setup.parasite.float)>>
<<set $raiders[_r].statuses[_z].count += Math.round($raiders[_r].end * setup.parasite.float)>>
<<set $raiders[_r].statuses[_z].count += Math.round($raiders[_r].will * setup.parasite.float)>>
<<set $raiders[_r].statuses[_z].count += Math.round($raiders[_r].pers * setup.parasite.float)>>
<<set $raiders[_r].statuses[_z].count += Math.round($raiders[_r].toler * setup.parasite.float)>>
<<set $raiders[_r].statuses[_z].count += Math.round($raiders[_r].aware * setup.parasite.float)>>
<<set $raiders[_r].statuses[_z].count += Math.round($raiders[_r].reas * setup.parasite.float)>>
REDUCE STATS
<<set $raiders[_r].vig -= Math.round($raiders[_r].vig * setup.parasite.float)>>
<<set $raiders[_r].end -= Math.round($raiders[_r].end * setup.parasite.float)>>
<<set $raiders[_r].will -= Math.round($raiders[_r].will * setup.parasite.float)>>
<<set $raiders[_r].pers -= Math.round($raiders[_r].pers * setup.parasite.float)>>
<<set $raiders[_r].toler -= Math.round($raiders[_r].toler * setup.parasite.float)>>
<<set $raiders[_r].aware -= Math.round($raiders[_r].aware * setup.parasite.float)>>
<<set $raiders[_r].reas -= Math.round($raiders[_r].reas * setup.parasite.float)>>
UPDATE TOOLTIP
<<set $raiders[_r].statuses[_z].tooltip to "Lost "+ $raiders[_r].statuses[_z].count+" total stats from Parasites.">>
TRIGGER TEXT
<<set $between_triggers.status.parasite.push($raiders[_r].index)>>
END LOOP IF FOUND
<<break>>
<</if>>
<</for>>
REMOVE PARASITE CHECK
<<set _rng to random(1, 100)>>
<<if setup.parasite.percent >= _rng>>
REMOVE PARASITE
<<for _z = 0; _z < $raiders[_r].statuses.length; _z++>>
<<if $raiders[_r].statuses[_z].id === setup.parasite.id>>
<<set _delete to $raiders[_r].statuses.deleteAt(_z)>>
<<set _delete to $raiders[_r].status_names.delete(setup.parasite.id)>>
END LOOP
<<break>>
<</if>>
<</for>>
<</if>>
<</if>>
POISONED
<<if $raiders[_r].status_names.includes(setup.poisoned.id)>>
<<for _z = 0; _z < $raiders[_r].statuses.length; _z++>>
FIND STATUS
<<if $raiders[_r].statuses[_z].id === setup.poisoned.id>>
DOESNT TRIGGER IF ALREADY MAX LUST
<<if $raiders[_r].cur_hp - 1 > 0>>
TRIGGER TEXT
<<set $between_triggers.status.poisoned.push($raiders[_r].index)>>
LOSE HP
<<set _amount to clone($raiders[_r].statuses[_z].stack)>>
<<if $raiders[_r].cur_hp - _amount <= 0>>
<<set _amount to $raiders[_r].cur_hp - 1>>
<</if>>
<<set $raiders[_r].statuses[_z].amount to clone(_amount)>>
<<set $raiders[_r].cur_hp -= _amount>>
<</if>>
REDUCE STACKS
<<set $raiders[_r].statuses[_z].stack-->>
<<if $raiders[_r].statuses[_z].stack <= 0>>
REMOVE STATUS
<<set $between_triggers.status.poisoned_cured.push($raiders[_r].index)>>
REMOVING STATUS
<<set _delete to $raiders[_r].statuses.deleteAt(_z)>>
<<set _delete to $raiders[_r].status_names.delete(setup.poisoned.name)>>
<<else>>
CLAMP
<<set $raiders[_r].statuses[_z].stack to Math.clamp($raiders[_r].statuses[_z].stack, 0, $raiders[_r].statuses[_z].max_stack)>>
UPDATE NAME
<<set $raiders[_r].statuses[_z].name to "Poisoned x" + $raiders[_r].statuses[_z].stack>>
<</if>>
<<break>>
<</if>>
<</for>>
<</if>>
PREGNANT
<<if $raiders[_r].status_names.includes(setup.pregnant.id)>>
<<for _e = 0; _e < $raiders[_r].statuses.length; _e++>>
<<if $raiders[_r].statuses[_e].id === setup.pregnant.id>>
<<set $raiders[_r].statuses[_e].cd-->>
<<if $raiders[_r].statuses[_e].cd <= 0>>
<<set _newEvent to {
raider_index: clone($raiders[_r].index),
birth_type: clone($raiders[_r].statuses[_e].location),
fetish: clone($raiders[_r].statuses[_e].fetish)
}>>
<<set $birth_event_list.push(_newEvent)>>
<</if>>
<</if>>
<</for>>
<</if>>
STICKY
<<if $raiders[_r].status_names.includes(setup.sticky.id)>>
<<for _e = 0; _e < $raiders[_r].statuses.length; _e++>>
FIND STATUS
<<if $raiders[_r].statuses[_e].id === setup.sticky.id>>
REMOVE A STACK OF STICKY
<<set $raiders[_r].statuses[_e].stack-->>
<<if $raiders[_r].statuses[_e].stack <= 0>>
SHOW TEXT CURING STICKY
<<set $between_triggers.status.sticky_cured.push($raiders[_r].index)>>
REMOVING STATUS
<<set _delete to $raiders[_r].statuses.deleteAt(_e)>>
<<set _delete to $raiders[_r].status_names.delete(setup.sticky.name)>>
<<else>>
UPDATE NAME
<<set $raiders[_r].statuses[_e].name to "Sticky x" + $raiders[_r].statuses[_e].stack>>
<</if>>
END LOOP
<<break>>
<</if>>
<</for>>
<</if>>
<</for>>
* TRIGGER TRAITS *
* POSITIVE EFFECTS *
<<for _r = 0; _r < $raiders.length; _r++>>
COMPOSURE
<<if $raiders[_r].trait_names.includes(setup.composure.name) && $raiders[_r].cur_lust > 0>>
<<set _amount to (Math.round($raiders[_r].max_lust * setup.composure.float)).clamp(1, 1000000)>>
<<if $raiders[_r].cur_lust - _amount < 0>>
<<set _amount to $raiders[_r].cur_lust>>
<</if>>
<<set $raiders[_r].cur_lust -= _amount>>
PUSH AMOUNT TO TRAIT
<<for _z = 0; _z < $raiders[_r].traits.length; _z++>>
<<if $raiders[_r].traits[_z].name === setup.composure.name>>
<<set $raiders[_r].traits[_z].amount to clone(_amount)>> LUST REDUCED: _amount
<<break>>
<</if>>
<</for>>
TRIGGER TEXT
<<set $between_triggers.trait.composure.push($raiders[_r].index)>>
<</if>>
FIT
<<if $raiders[_r].trait_names.includes(setup.fit.name) && $raiders[_r].cur_hp < $raiders[_r].max_hp>>
<<set _amount to (Math.round($raiders[_r].max_hp * setup.fit.float)).clamp(1, 1000000)>>
<<if $raiders[_r].cur_hp + _amount > $raiders[_r].max_hp>>
<<set _amount to $raiders[_r].max_hp - $raiders[_r].cur_hp>>
<</if>>
<<set $raiders[_r].cur_hp += _amount>>
<<for _z = 0; _z < $raiders[_r].traits.length; _z++>>
<<if $raiders[_r].traits[_z].name === setup.fit.name>>
<<set $raiders[_r].traits[_z].amount to _amount>> HEALTH HEALED: _amount
<<break>>
<</if>>
<</for>>
TRIGGER TEXT
<<set $between_triggers.trait.fit.push($raiders[_r].index)>>
<</if>>
* NEGATIVE EFFECTS *
CONCUPISCENT
<<if $raiders[_r].trait_names.includes(setup.concupiscent.name) && $raiders[_r].status_names.includesAny(setup.concupiscent.statuses) && $raiders[_r].cur_lust < $raiders[_r].max_lust - 1>>
<<set _amount to (Math.round($raiders[_r].max_lust * setup.concupiscent.float)).clamp(1, 1000000)>>
<<if $raiders[_r].cur_lust + _amount > $raiders[_r].max_lust - 1>>
<<set _amount to $raiders[_r].max_lust - $raiders[_r].cur_lust - 1>>
<</if>>
<<set $raiders[_r].cur_lust += _amount>>
PUSH AMOUNT TO TRAIT
<<for _z = 0; _z < $raiders[_r].traits.length; _z++>>
<<if $raiders[_r].traits[_z].name === setup.concupiscent.name>>
<<set $raiders[_r].traits[_z].amount to _amount>> LUST GAINED: _amount
<<break>>
<</if>>
<</for>>
TRIGGER TEXT
<<set $between_triggers.trait.concupiscent.push($raiders[_r].index)>>
<</if>>
NASTY
<<if $raiders[_r].trait_names.includes(setup.nasty.name) && ($raiders[_r].status_names.includesAny(setup.nasty.statuses) || $between_triggers.status.sticky_cured.includes($raiders[_r].index)) && $raiders[_r].cur_lust < $raiders[_r].max_lust - 1>>
<<set _amount to (Math.round( $raiders[_r].max_lust * setup.nasty.float)).clamp(1, 1000000)>>
<<if $raiders[_r].cur_lust + _amount > $raiders[_r].max_lust - 1>>
<<set _amount to $raiders[_r].max_lust - $raiders[_r].cur_lust - 1>>
<</if>>
<<set $raiders[_r].cur_lust += _amount>>
<<for _z = 0; _z < $raiders[_r].traits.length; _z++>>
<<if $raiders[_r].traits[_z].name === "Nasty">>
<<set $raiders[_r].traits[_z].amount to _amount>> LUST GAINED: _amount
<<break>>
<</if>>
<</for>>
TRIGGER TEXT
<<set $between_triggers.trait.nasty.push($raiders[_r].index)>>
<</if>>
* OTHER EFFECTS *
ABSENTMINDED
<<if $raiders[_r].trait_names.includes(setup.absentminded.name)>>
FIND TRAIT
<<for _t = 0; _t < $raiders[_r].traits.length; _t++>>
<<if $raiders[_r].traits[_t].name === setup.absentminded.name>>
UPDATE ABSENDMINDED CD
<<if $raiders[_r].traits[_t].cd > 0>>
<<set $raiders[_r].traits[_t].cd-->>
<</if>>
<<break>>
<</if>>
<</for>>
<</if>>
IMPATIENT
<<if $raiders[_r].trait_names.includes(setup.impatient.name)>>
ADD STATUS IF FIRST TIME
<<if !$raiders[_r].status_names.includes(setup.impatient.effect_name)>>
<<set _newStatus to clone(setup.stat_down)>>
<<set _newStatus.id to setup.impatient.effect_name>>
<<set _newStatus.tooltip to setup.impatient.effect_tooltip>>
<<set _newStatus.stack to 0>>
PUSH TO RAIDER
<<set $raiders[_r].statuses.push(_newStatus)>>
<<set $raiders[_r].status_names.push(_newStatus.id)>>
<</if>>
FIND STATUS
<<for _z = 0; _z < $raiders[_r].statuses.length; _z++>>
<<if $raiders[_r].statuses[_z].id === setup.impatient.effect_name>>
<<if $raiders[_r].statuses[_z].stack < setup.impatient.max_stacks>>
ADD STACK, UPDATE NAME
<<set $raiders[_r].statuses[_z].stack++>>
<<switch $raiders[_r].statuses[_z].stack>>
<<case 1 2 3>>
<<set _name to "Irritated">>
<<case 4 5 6>>
<<set _name to "Aggravated">>
<<case 7 8 9>>
<<set _name to "Furious">>
<<default>>
<<set _name to "Livid">>
<</switch>>
UPDATE NAME
<<set $raiders[_r].statuses[_z].name to _name+" x" + $raiders[_r].statuses[_z].stack>>
TRIGGER TEXT
<<set $between_triggers.trait.impatient.push($raiders[_r].index)>>
<</if>>
<<break>>
<</if>>
<</for>>
<</if>>
SURVIVIALIST
<<if $raiders[_r].trait_names.includes(setup.survivalist.name)>>
FIND TRAIT
<<for _z = 0; _z < $raiders[_r].traits.length; _z++>>
<<if $raiders[_r].traits[_z].name === setup.survivalist.name>>
<<set $raiders[_r].traits[_z].cur_cd-->>
<<if $raiders[_r].traits[_z].cur_cd <= 0>>
BREW NEW POTION
RESET CD AND POTION
<<set $raiders[_r].traits[_z].cur_cd to $raiders[_r].traits[_z].max_cd>>
ADD RANDOM POTION
<<set _potion to setup.potion_list.random()>> POTION: _potion.name
<<set $raiders[_r].potions.push(_potion.name)>>
<<set $raiders[_r].traits[_z].potion to _potion.name>>
TRIGGER TEXT
<<set $between_triggers.trait.survivalist.push($raiders[_r].index)>>
<</if>>
<<break>>
<</if>>
<</for>>
<</if>>
<</for>>
* EROTIC DUNGEON *
<<set _noCreature_bool to true>>
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if $dungeon_floor_list[_z].room_type === "Creature">>
<<set _noCreature_bool to false>>
<<break>>
<</if>>
<</for>>
<<if $pc_blessing_list.includes("Erotic Dungeon") && _noCreature_bool === true>>
ENTERING EROTIC DUNGEON!
<<EroticDungeonBlessing $raiders>>
<</if>>
* PRIESTESS HEAL *
<<for _r = 0; _r < $raiders.length; _r++>>
<<if $raiders[_r].class === "Priestess">>
<<PriestessHeal $raiders[_r] $raiders>>
<</if>>
<</for>>
* ALCHESMIST POTION *
<<for _r = 0; _r < $raiders.length; _r++>>
<<if $raiders[_r].class === "Alchemist">>
<<AlchemistPotion $raiders[_r] $raiders>>
<</if>>
<</for>>
--- END FIRST TIME CHECK ---
<</if>>
* EDGING STATUS *
<<for _r = 0; _r < $raiders.length; _r++>>
<<if $raiders[_r].cur_lust >= $raiders[_r].max_lust - setup.edging.int_limit || ($raiders[_r].cur_lust / $raiders[_r].max_lust).toFixed(3) >= setup.edging.limit>>
ADD EDGING
<<AddStatus $raiders[_r] setup.edging false>>
TRIGGER TEXT, REMOVE CURED EDGING
<<set $between_triggers.status.edging.pushUnique($raiders[_r].index)>>
<<set _remove to $between_triggers.status.edging_cured.delete($raiders[_r].index)>>
<<elseif $raiders[_r].status_names.includes(setup.edging.id)>>
<<for _z = 0; _z < $raiders[_r].statuses.length; _z++>>
<<if $raiders[_r].statuses[_z].id === setup.edging>>
<<set _delete to $raiders[_r].statuses.deleteAt(_z)>>
<<set _deleteName to $raiders[_r].status_names.delete(setup.edging.id)>>
TRIGGER TEXT, REMOVE CURED EDGING
<<set $between_triggers.status.edging_cured.pushUnique($raiders[_r].index)>>
<<set _remove to $between_triggers.status.cured.delete($raiders[_r].index)>>
<<break>>
<</if>>
<</for>>
<</if>>
<</for>>
* REAPPLY STATUSES & RESET PIC*
<<for _r = 0; _r < $raiders.length; _r++>>
<<RaiderUpdate $raiders[_r]>>
<<set $raiders[_r].pic to clone($raiders[_r].pic_default)>>
<</for>>
* Picking Random String *
CONTAINS ALL CHOSEN STRINGS FOR EACH RAIDER
<<set _action_string_list to []>>
<<for _r = 0; _r < $raiders.length; _r++>>
CONTAINS ALL OPTIONS FOR THE CURRENT RAIDER TO PICK FROM
<<set _string_options to []>>
<<if $raiders[_r].status_names.includes("Sticky")>>
<<set _strings to setup.sticky_strings>>
<<set _string_options to _string_options.concat(_strings)>>
<</if>>
<<if $raiders[_r].status_names.includes("Pregnant")>>
<<set _strings to setup.pregnant_strings>>
<<set _string_options to _string_options.concat(_strings)>>
<</if>>
<<if $raiders[_r].status_names.includes("Horny")>>
<<set _strings to setup.horny_strings>>
<<set _string_options to _string_options.concat(_strings)>>
<</if>>
<<if $raiders[_r].status_names.includes("Wet")>>
<<set _strings to setup.wet_strings>>
<<set _string_options to _string_options.concat(_strings)>>
<</if>>
<<if $raiders[_r].status_names.includes("Perverted")>>
<<set _strings to setup.perverted_strings>>
<<set _string_options to _string_options.concat(_strings)>>
<</if>>
<<if $raiders[_r].status_names.includes("Edging")>>
<<set _strings to setup.edging_strings>>
<<set _string_options to _string_options.concat(_strings)>>
<</if>>
<<if $raiders[_r].trait_names.includes("Virgin")>>
<<set _strings to setup.virgin_strings>>
<<set _string_options to _string_options.concat(_strings)>>
<</if>>
<<if $raiders[_r].trait_names.includes("Slut")>>
<<set _strings to setup.slut_strings>>
<<set _string_options to _string_options.concat(_strings)>>
<</if>>
<<if $raiders[_r].trait_names.includes("Biologist")>>
<<set _strings to setup.biologist_strings>>
<<set _string_options to _string_options.concat(_strings)>>
<</if>>
<<if $raiders[_r].trait_names.includes("Naive")>>
<<set _strings to setup.naive_strings>>
<<set _string_options to _string_options.concat(_strings)>>
<</if>>
<<if $raiders[_r].trait_names.includes("Square") || _cur_girl.trait_names.includes("Prude")>>
<<set _strings to setup.square_strings>>
<<set _string_options to _string_options.concat(_strings)>>
<</if>>
<<if $raiders[_r].trait_names.includes("Busty") || _cur_girl.trait_names.includes("Thicc")>>
<<set _strings to setup.busty_strings>>
<<set _string_options to _string_options.concat(_strings)>>
<</if>>
<<if $raiders[_r].trait_names.includes("Petite") || _cur_girl.trait_names.includes("Flat")>>
<<set _strings to setup.petite_strings>>
<<set _string_options to _string_options.concat(_strings)>>
<</if>>
<<if _string_options.length <= 6>>
<<set _strings to setup.random_strings_between_rooms>>
<<set _string_options to _string_options.concat(_strings)>>
<</if>>
<<set _action_string_list.push(_string_options.random())>>
<</for>>
* Next Passage *
<<BetweenRoomLink>>
*Display Info*
<</silently>>\
<div class="wrapper">\
<div class="titlebox">\
Between Rooms
</div>\
<div class="cardholder-columns">\
<<if $raiders.length === 1>>\
<div class="cardholder-3columns">\
</div>\
<</if>>\
<<for _r = 0; _r < $raiders.length; _r++>>\
<div class="cardholder-3columns">\
<div class="cardinfo-3columns">\
<div class="picbox-3columns">\
$raiders[_r].pic
</div>\
<div class="textbox-3columns">\
<ul>\
<<if $is_tutoring === true>>\
<<if $raid_tutorial === 1>>\
As you saw, combat between the Raiders and Units are automatic and you cannot take any actions. It is up to you to make sure everything is ready before the group enters the Floor. Why don't you try casting your Jolt Spell against me before advancing the Raid, maybe it will be enough to help the next Unit Capture me.
<<elseif $raid_tutorial === 2>>\
<<set $raid_tutorial++>>\
Ouch! I'm shocked that you would attacked me like that. Spells are strong tools that can help swing the Raid in your favor, so be sure to study up on all the different Spells you have and what they can do. Now lets see if the last room will be enough to Capture me.
<<elseif $raid_tutorial === 3>>\
<<set $raid_tutorial++>>\
I made it! Don't worry though, I'm no easy catch. Normally you would have one more chance to cast Spells to stop the Raiders, but you don't have any Spells that would effect me. I'll met you back in your chambers after I clean up, raiding is hard work.
<</if>>\
<<else>>\
<li>The $raiders[_r].class _action_string_list[_r]</li>\
<</if>>\
<<PriestessText $raiders[_r]>>
<<PotionText $raiders[_r]>>
<<AlchemistText $raiders[_r]>>
<<EroticDungeonText $raiders[_r]>>
<<BetweenTriggerText $raiders[_r]>>
</ul>\
</div>\
</div>\
</div>\
<</for>>\
</div>\
<div class="cardinfo-links">\
<div class="longlinks-table">\
<<if $is_tutoring === true>>\
<div class="offpurplebutton">\
<<button "Next Floor: $next_room.name">><</button>>
</div>\
<<else>>\
<span id="1">\
<<if $next_room.room_type === "Creature">>\
<div class="purplebutton">\
<<button "Next Floor: $next_room.name ^^1^^" "Creature Room">><<set $display_creature to $next_room>><<set $display_room_num to $cur_room_num>><</button>>
</div>\
<<elseif $next_room.room_type === "Trap">>\
<div class="purplebutton">\
<<button "Next Floor: $next_room.name ^^1^^" "Trap Room">><<set $display_trap to $next_room>><<set $display_room_num to $cur_room_num>><</button>>
</div>\
<<elseif $next_room.room_type === "Treasure">>\
<div class="offpurplebutton">\
<<button "Next Floor: $next_room.name">><</button>>
</div>\
<</if>>\
</span>\
<</if>>\
</div>\
<div class="longlinks-table">\
<<if $is_tutoring === true>>\
<div class="offpurplebutton">\
<<button "Dungeon Manager">><</button>>
</div>\
<<else>>\
<div class="purplebutton">\
<span id="2"><<button "Dungeon Manager ^^2^^" "Dungeon Floor Manager">><</button>></span>
</div>\
<</if>>\
</div>\
<div class="links-table">\
<<if $is_tutoring === true>>\
<div class="offpurplebutton">\
<<button "Raiders">><</button>>
</div>\
<<else>>\
<div class="purplebutton">\
<span id="3"><<button "Raiders ^^3^^" "View Raiding Party">><</button>></span>
</div>\
<</if>>\
</div>\
<div class="links-table">\
<<if $is_tutoring === true && $raid_tutorial != 1>>\
<div class="offpurplebutton">\
<<button "Spellbook">><</button>>
</div>\
<<else>>\
<div class="purplebutton">\
<span id="4"><<button "Spellbook ^^4^^" "View Spells">>\
<<set $filter_spell to []>>\
<<for _s = 0; _s < $pc_spellbook.length; _s++>>\
<<UpdateSpell $pc_spellbook[_s]>>\
<</for>>\
<<set $spellbook_page to 0>>\
<</button>></span>\
</div>\
<</if>>\
</div>\
<div class="links-table">\
<<if $is_tutoring === true>>\
<div class="offpurplebutton">\
<<button "Guidebook">><</button>>
</div>\
<<else>>\
<div class="purplebutton">\
<span id="5"><<button "Guidebook ^^5^^" "Guidebook">><</button>></span>
</div>\
<</if>>\
</div>\
<div class="links-table">\
<<if $is_tutoring === true>>\
<div class="offpurplebutton">\
<<button "Save/Load">><</button>>
</div>\
<<else>>\
<div class="purplebutton">\
<span id="6"><<button "Save/Load ^^6^^">><<script>>UI.saves()<</script>><</button>></span>
</div>\
<</if>>\
</div>\
</div>\
</div>\
<div class="exit-link-right">\
<<if $is_tutoring === true && $raid_tutorial === 1>>\
<div class="offbutton">\
<<button "Continue">><</button>>
</div>\
<<else>>\
<span id="forward"><<button [[Continue|_link]]>><<set $this_room to $next_room>><</button>></span>
<</if>>\
</div>\ *TASKS TO COMPLETE*
- MISSIONS
- Succubus First Mission
- Dragon Queen's First Mission
- Mallory's First Mission
- Goddess and shop keeper's Second Mission
- Log all changes in the changelog (good luck)
- Update Guidebook (also good luck)
- Word consistencies
- Turn-Offs
- Physical and Magical Attack/Defense
- Slave Rooms
- Update Grinder (Problem for Future)
- Button in study that updates player's creatures, traps, blessings, and treasures if any changes were made between patches.
- Creatures: Take each creatures the player owns and sims their stats based on changes and updates them accordingly, updates variables for creatures in shop
- Traps: Same as Creatures
- Blessings: Updates variables for blessings owned by player and in shop
- Treasures: Same as Blessings<<silently>>\
* SETUP ROOM *
<<RoomSetup $raiders $this_room>>
<<TrapStats $this_room>>
* SETUP RAIDER *
<<RaiderSetup $raiders>>
* PRE COMBAT EFFECTS *
<<PreCombat $raiders $this_room>>
* DANCER BUFF *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].class === "Dancer">>
<<DancerBuff $raiders[_i] $this_room>>
<</if>>
<</for>>
* TRAPCHECKS *
<<for _i = 0; _i < $raiders.length; _i++>>
<<set $this_room.total_attempts++>>
<<set $this_room.report.trap_attempts++>>
<<CalcTrapcheck $raiders[_i] $this_room.cur_check>>
<<SimTrapcheck $raiders[_i] _trapcheck>>
<<if _text_triggers.check.trapcheck_failed.includes($raiders[_i].index) || _text_triggers.check.trapcheck_crit_failed.includes($raiders[_i].index)>>
<<set _entry to "She triggered the trap.">>
<<set $this_room.total_triggers++>>
<<set $this_room.report.trap_successes++>>
<<else>>
<<set _entry to "She did not trigger the trap.">>
<</if>>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<</for>>
* APPLY PHYSICAL AND SEXUAL DAMAGE *
<<set _waves to (_text_triggers.check.trapcheck_failed.length + _text_triggers.check.trapcheck_crit_failed.length) * $this_room.atk_count>> amount of times raiders will be attacked
<<if $this_room.mode === "Toxic">>
<<set _dart_atk to Math.trunc($this_room.cur_atk * $this_room.high_float)>>
<<set _dart_sex to Math.trunc($this_room.cur_sex * $this_room.low_float)>>
<<set _stack_count to Math.trunc($this_room.cur_atk * $this_room.stacks_float)>>
<<else>>
<<set _dart_atk to Math.trunc($this_room.cur_atk * $this_room.low_float)>>
<<set _dart_sex to Math.trunc($this_room.cur_sex * $this_room.high_float)>>
<<set _stack_count to Math.trunc($this_room.cur_sex * $this_room.stacks_float)>>
<</if>>
<<for _i = _waves; _i > 0; _i-->>
<<for _r = 0; _r < $raiders.length; _r++>>
<<NormalAttack $raiders[_r] $this_room _dart_atk>>
<<SexualAttack $raiders[_r] $this_room _dart_sex>>
<<if $this_room.mode === "Toxic">>
<<AddStacks $raiders[_r] setup.poisoned _stack_count true>>
<<else>>
<<AddStacks $raiders[_r] setup.aroused _stack_count true>>
<</if>>
<</for>>
<</for>>
* UPDATE RAIDER REPORT *
<<for _r = 0; _r < $raiders.length; _r++>>
<<if _waves <= 0 && $raiders.length === 1>>
NO ADDITIONAL ENTRIES NEEDED
<<break>>
<<elseif _waves <= 0 && $raiders.length > 1>>
<<set _entry to "Nobody in her party triggered the trap.">>
<<elseif _text_triggers.status.poisoned.includes($raiders[_r].index)>>
FIND POISONED GAINED FOR REPORT
<<if $raiders[_r].status_names.includes("Poisoned")>>
<<for _s = 0; _s < $raiders[_r].statuses.length; _s++>>
<<if $raiders[_r].statuses[_s].id === setup.poisoned.id>>
<<set _poisoned_gained to $raiders[_r].statuses[_s].gain>>
<<break>>
<</if>>
<</for>>
<</if>>
<<set _entry to "She took @@.phy;"+$raiders[_r].dmg_taken+"@@ and @@.sex;"+$raiders[_r].sex_taken+"@@ damage and gained "+_poisoned_gained+" Poison.">>
<<elseif _text_triggers.status.aroused.includes($raiders[_r].index)>>
FIND AROUSED GAINED FOR REPORT
<<if $raiders[_r].status_names.includes("Aroused")>>
<<for _s = 0; _s < $raiders[_r].statuses.length; _s++>>
<<if $raiders[_r].statuses[_s].id === setup.aroused.id>>
<<set _aroused_gained to $raiders[_r].statuses[_s].gain>>
<<break>>
<</if>>
<</for>>
<</if>>
<<set _entry to "She took @@.phy;"+$raiders[_r].dmg_taken+"@@ and @@.sex;"+$raiders[_r].sex_taken+"@@ damage and gained "+_aroused_gained+" Aroused.">>
<<elseif _waves > 0>>
<<set _entry to "She took @@.phy;"+$raiders[_r].dmg_taken+"@@ and @@.sex;"+$raiders[_r].sex_taken+"@@ damage.">>
<</if>>
UPDATE RAIDER REPORT
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_r].report.log.push(_lastLog)>>
<</for>>
* POST COMBAT EFFECTS *
<<for _r = 0; _r < $raiders.length; _r++>>
<<PostCombat $raiders[_r] $this_room>>
<</for>>
* CHOOSE PICTURE *
SET PIC ARRAY
<<set _picArray to clone($this_room.raider_pics)>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<if _text_triggers.status.poisoned.includes($raiders[_i].index) || _text_triggers.status.aroused.includes($raiders[_i].index)>>
<<set $raiders[_i].pic to _picArray[$raiders[_i].body_type].pluck()>>
<</if>>
<</for>>
* END OF COMBAT REPORT *
<<PostCombatReport $raiders $this_room>>
* CLEAN UP *
<<CleanUp $raiders $this_room>>
* DISPLAY INFO *
<<set _cardholderID to "cardholder-raid-"+$raiders.length+"raiders">>
<<set _cardinfoID to "cardinfo-raid-"+$raiders.length+"raiders">>
<<set _picboxID to "picbox-raid-"+$raiders.length+"raiders">>
<<set _textboxID to "textbox-raid-"+$raiders.length+"raiders">>
<</silently>>\
<<NextRoomButton>>\
<div class="cardholder-raid-playerside">\
<div class="cardinfo-raid-trap">\
<div class="roomtitle-raid-player">\
Floor $cur_room_num
</div>\
<div class="picbox-raid-player">\
$this_room.pic
</div>\
<div class="namebox-raid-player">\
<strong>$this_room.name</strong>
---- $this_room.check_type: $this_room.cur_check ----
</div>\
<div class="textbox-raid-player">\
<ul>\
<<if _waves <= 0>>\
<li>Nothing happened since nobody triggered the trap.</li>\
<</if>>\
<<TrapRoomText $this_room>>
<<BlessingTriggerText $this_room>>
<<EffectEndingText $this_room>>
</ul>\
</div>\
</div>\
</div>\
<div class="cardholder-raid-raiderside">\
<<for _r = 0; _r < $raiders.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_textboxID">\
<ul>\
<<DancerDanceText $raiders[_r] $this_room>>
<<if _text_triggers.check.trapcheck_crit_passed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_passed.includes($raiders[_r].index)>>\
<li><<if _text_triggers.check.trapcheck_crit_passed.includes($raiders[_r].index)>><strong>Critical Success!</strong> <</if>>She was able to see the mechanisms that could set off the trap, so she easily avoided them.</li>\
<<elseif _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_failed.includes($raiders[_r].index)>>\
<li><<if _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)>><strong>Critical Failure!</strong> <</if>>She stepped down on a pressure plate, triggering the dart trap.</li>\
<</if>>\
<<switch _waves>>\
<<case 1 2 3>>\
<li>She was hit by a few darts, taking @@.phy;$raiders[_r].dmg_taken Physical@@ damage and @@.sex;$raiders[_r].sex_taken Sexual@@ damage.</li>\
<<case 4 5>>\
<li>She was shot up by many darts, taking @@.phy;$raiders[_r].dmg_taken Physical@@ damage and @@.sex;$raiders[_r].sex_taken Sexual@@ damage.</li>\
<<case 6>>\
<li>She was filled with darts, taking @@.phy;$raiders[_r].dmg_taken Physical@@ damage and @@.sex;$raiders[_r].sex_taken Sexual@@ damage.</li>\
<</switch>>
<<if _waves > 0>>\
<<RaiderFetishText $raiders[_r] $this_room>>
<</if>>\
<<PostCombatText $raiders[_r] $this_room>>
</ul>\
</div>\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
</div>\
</div>\
<</for>>\
</div>\<div id="cardholder-columns">\
<div id="cardholder-1column">\
<div id="cardinfo-1column">\
<div class="cardpic-1column">[img[images/knight/busty/normal/4.jpg]]</div>\
<div id="cardtext-1column">\
<ul>\
<li>WORDS</li>\
</ul>\
</div>\
</div>\
</div>\
</div>\
<div id="cardinfo-links">\
<div id="links-table">Heal Creature</div>\
<div id="links-table">Open Spellbook</div>\
<div id="links-table">Check Rooms</div>\
<div id="links-table">Check Raiders</div>\
<div id="links-table">LINKS</div>\
<div id="links-table">LINKS</div>\
<div id="links-table">LINKS</div>\
<div id="links-table">LINKS</div>\
<div id="links-table">LINKS</div>\
<div id="links-table">LINKS</div>\
<div id="links-table">LINKS</div>\
<div id="links-table">LINKS</div>\
</div>\<<silently>>\
* Display Info *
<<set _cardholderID to "cardholder-"+$raiders.length+"girls">>
<<set _cardinfoID to "cardinfo-"+$raiders.length+"girls">>
<<set _picboxID to "picbox-"+$raiders.length+"girls">>
<<set _textboxID to "textbox-"+$raiders.length+"girls">>
* Set Link *
<<if $at_entrance === true>>
<<set _link to "Enter Dungeon">>
<<else>>
<<set _link to "Between Rooms">>
<</if>>
* Display *
<</silently>>\
<div class="titlebox">\
Raiding Party
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|_link]]>><</button>></span>
</div>\
<<for _r = 0; _r < $raiders.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
<div @class="_textboxID">\
Name: $raiders[_r].name
Class: $raiders[_r].subclass.name $raiders[_r].class
Role: $raiders[_r].role
Traits: <<for _i = 0; _i < $raiders[_r].traits.length; _i++>>\
<<if $raiders[_r].traits[_i].type === "Special">>\
<span style="color:gold"><<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>></span><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<<else>>\
<<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<</if>>\
<</for>>
Kinks: <<if $raiders[_r].kinks.length === 0>>None<<else>>$raiders[_r].kinks<</if>>
Turn-Offs: <<if $raiders[_r].turnoffs.length === 0>>None<<else>>$raiders[_r].turnoffs<</if>>
Statuses: <<if $raiders[_r].statuses.length == 0>>\
None
<<else>>\
<<for _i = 0; _i < $raiders[_r].statuses.length; _i++>>\
<<hovertip "$raiders[_r].statuses[_i].tooltip">>$raiders[_r].statuses[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].statuses.length>>, <</if>><</for>><</if>>
</div>\
</div>\
</div>\
<</for>>\<<silently>>\
* Variables *
* Reset Raider Images *
<<for _r = 0; _r < $raiders.length; _r++>>
<<set $raiders[_r].pic to clone($raiders[_r].pic_default)>>
<</for>>
* Set Spell List *
<<if $filter_spell.length === 0>>
<<set _spell_list to $pc_spellbook>>
<<else>>
<<set _spell_list to []>>
<<for _z = 0; _z < $pc_spellbook.length; _z++>>
<<if $filter_spell.includes($pc_spellbook[_z].type)>>
<<set _spell_list.push($pc_spellbook[_z])>>
<<else>>
<<continue>>
<</if>>
<</for>>
<</if>>
<<set _spell_list.sort(function (a, b) { return a.order_num - b.order_num; });>>
<<set _spell_list.sort(function (a, b) { return b.favorited - a.favorited; });>>
* Spellbook Page *
<<set _spells_per_page to 9>> the number of slaves that can be on each page, starting count from 0
<<set _start_pos to _spells_per_page * $spellbook_page>> Set where to start the list based on what the page is
<<if _start_pos + _spells_per_page < _spell_list.length>>
<<set _end_pos to _start_pos + _spells_per_page>> Set where to end the list based on what the page is
<<else>>
<<set _end_pos to _spell_list.length>>
<</if>>
* REMOVE DANCER DANCES FROM SUMMONED ROOMS *
<<for _r = 0; _r < $raiders.length; _r++>>
DANCER DANCES
<<if $raiders[_r].status_names.includes("Dancer Buff")>>
<<for _z = 0; _z < $raiders[_r].statuses.length; _z++>>
<<if $raiders[_r].statuses[_z].id === "Dancer Buff">>
<<set _remove to $raiders[_r].statuses.deleteAt(_z)>>
<<set _removeName to $raiders[_r].status_names.delete("Dancer Buff")>>
REMOVED _remove.id
SET LOOP BACK
<<set _z-->>
<</if>>
<</for>>
<</if>>
<</for>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
<strong>Spellbook</strong>
</div>\
<div class="buttonbox-spellbook">\
<div class="buttonholder-spellbook">\
<<if $filter_spell.includes("Infliction")>>\
<span id="i"><<button "<u>I</u>nfliction Spells" "View Spells">><<set _clear to $filter_spell.delete("Infliction")>><<set $spellbook_page to 0>><</button>></span>
<<else>>\
<div class="transparent-button">\
<span id="i"><<button "<u>I</u>nfliction Spells" "View Spells">>\
<<silently>>\
<<set $filter_spell.push("Infliction")>>
<<if $filter_spell.length >= 4>>
<<set $filter_spell to []>>
<</if>>
<<set $spellbook_page to 0>>
<</silently>>\
<</button>></span>\
</div>\
<</if>>\
</div>\
<div class="buttonholder-spellbook">\
<<if $filter_spell.includes("Manipulation")>>\
<span id="m"><<button "<u>M</u>anipulation Spells" "View Spells">><<set _clear to $filter_spell.delete("Manipulation")>><<set $spellbook_page to 0>><</button>></span>
<<else>>\
<div class="transparent-button">\
<span id="m"><<button "<u>M</u>anipulation Spells" "View Spells">>\
<<silently>>\
<<set $filter_spell.push("Manipulation")>>
<<if $filter_spell.length >= 4>>
<<set $filter_spell to []>>
<</if>>
<<set $spellbook_page to 0>>
<</silently>>\
<</button>></span>
</div>\
<</if>>\
</div>\
<div class="buttonholder-spellbook">\
<<if $filter_spell.includes("Summoning")>>\
<span id="s"><<button "<u>S</u>ummoning Spells" "View Spells">><<set _clear to $filter_spell.delete("Summoning")>><<set $spellbook_page to 0>><</button>></span>
<<else>>\
<div class="transparent-button">\
<span id="s"><<button "<u>S</u>ummoning Spells" "View Spells">>\
<<silently>>\
<<set $filter_spell.push("Summoning")>>
<<if $filter_spell.length >= 4>>
<<set $filter_spell to []>>
<</if>>
<<set $spellbook_page to 0>>
<</silently>>\
<</button>></span>
</div>\
<</if>>\
</div>\
<div class="buttonholder-spellbook">\
<<if $filter_spell.includes("Supportive")>>\
<span id="p"><<button "Su<u>p</u>portive Spells" "View Spells">><<set _clear to $filter_spell.delete("Supportive")>><<set $spellbook_page to 0>><</button>></span>
<<else>>\
<div class="transparent-button">\
<span id="p"><<button "Su<u>p</u>portive Spells" "View Spells">>\
<<silently>>\
<<set $filter_spell.push("Supportive")>>
<<if $filter_spell.length >= 4>>
<<set $filter_spell to []>>
<</if>>
<<set $spellbook_page to 0>>
<</silently>>\
<</button>></span>
</div>\
<</if>>\
</div>\
</div>\
<div class="container-spellbook">\
<<for _i = _start_pos; _i < _end_pos; _i++>>\
<<set _hotKey to (_i % 9) + 1>>\
<<set _shiftKey to "shift"+_hotKey>>\
<<if _spell_list[_i].favorited === true>>\
<<set _cell to "cells-favorite-spellbook">>\
<<else>>\
<<set _cell to "cells-spellbook">>\
<</if>>\
<div class="cellholder-spellbook">\
<div @class="_cell">\
<div class="cell-levelreq-spellbook">\
</div>\
<div class="cell-name-spellbook">\
_spell_list[_i].name
</div>\
<div class="cell-cost-spellbook">\
<<silently>>\
* SPELL COST MODS *
<<set _cost to clone(_spell_list[_i].mana)>>
SPELL SLINGER
<<if $spell_blessing_bool.spell_slinger === true && _spell_list[_i].type === "Infliction">>
<<set _cost to 0>>
<</if>>
SUPPORTING ROLE
<<if $spell_blessing_bool.supporting_role === true && _spell_list[_i].type === "Supportive">>
<<set _cost to 0>>
<</if>>
ASPECT OF CONJURATION
<<if $pc_blessing_list.includes("Aspect of Conjuration") && _spell_list[_i].type === "Summoning">>
<<set _cost -= Math.trunc(_cost * setup.blessing_03_12.float)>>
_spell_list[_i].name COST _cost MANA
<</if>>
<</silently>>\
<<if _cost > $pc_cur_mana>>\
@@.mana;Mana@@: @@.bad;_cost@@
<<else>>\
@@.mana;Mana@@: @@.mana;_cost@@
<</if>>
</div>\
<div class="cell-description-spellbook">\
_spell_list[_i].tooltip
</div>\
<div class="cell-link-spellbook">\
<<capture _i, _cost, _hotKet, _shiftKey>>\
<<if $is_tutoring === true && $raid_tutorial === 1 && $pc_cur_mana >= _cost && $pc_spellbook[_i].id === "Jolt">>\
<span @id="_hotKey"><<button "Cast Spell ^^_hotKey^^" _spell_list[_i].passage>>\
<<silently>>\
FIND INDEX FROM PC SPELLBOOK ARRAY
<<for _z = 0; _z < $pc_spellbook.length; _z++>>
<<if _spell_list[_i].id === $pc_spellbook[_z].id>>
<<set $spell_index to _z>>
<<break>>
<</if>>
<</for>>
SET SPELL PAGE TO TARGETTING
<<set $spell_targeting to true>>
SET SPELL MANA COST
<<set $mana_cost to _cost>>
OVERLOAD BOOL
<<set $overloadSpellBool to false>>
<</silently>>\
<</button>></span> \
<<elseif $is_tutoring === true>>\
<div class="offbutton">\
<<button "Cast Spell">><</button>> \
</div>\
<<elseif _spell_list[_i].cast_bool === false || $pc_cur_mana < _cost || $pc_level < _spell_list[_i].level_req>>\
<div class="offbutton">\
<<button "Cast Spell">><</button>> \
</div>\
<<else>>\
<span @id="_hotKey"><<button "Cast Spell ^^_hotKey^^" _spell_list[_i].passage>>\
<<silently>>\
FIND INDEX FROM PC SPELLBOOK ARRAY
<<for _z = 0; _z < $pc_spellbook.length; _z++>>
<<if _spell_list[_i].id === $pc_spellbook[_z].id>>
<<set $spell_index to _z>>
<<break>>
<</if>>
<</for>>
SET SPELL PAGE TO TARGETTING
<<set $spell_targeting to true>>
SET SPELL MANA COST
<<set $mana_cost to _cost>>
OVERLOAD BOOL
<<set $overloadSpellBool to false>>
<</silently>>\
<</button>></span> \
<</if>>\
<<if $pc_blessing_list.includes(setup.blessing_02_12.id) && _spell_list[_i].type !== "Summoning">>\
<<if _spell_list[_i].cast_bool === true && $pc_cur_mana >= _spell_list[_i].mana * setup.blessing_02_12.mult && $pc_level >= _spell_list[_i].level_req>>\
<span @id="_shiftkey"><<button "Overload ^^[_hotKey]^^" _spell_list[_i].passage>>\
<<silently>>\
FIND INDEX FROM PC SPELLBOOK ARRAY
<<for _z = 0; _z < $pc_spellbook.length; _z++>>
<<if _spell_list[_i].id === $pc_spellbook[_z].id>>
<<set $spell_index to _z>>
<<break>>
<</if>>
<</for>>
SET SPELL PAGE TO TARGETTING
<<set $spell_targeting to true>>
SET SPELL MANA COST
<<set $mana_cost to _cost * setup.blessing_02_12.mult>>
OVERLOAD BOOL
<<set $overloadSpellBool to true>>
<</silently>>\
<</button>></span>
<</if>>\
<</if>>\
<</capture>>\
</div>\
</div>\
</div>\
<</for>>\
</div>\
<div class="buttonbox-spellbook">\
<div class="pagebutton-spellbook">\
<<if $spellbook_page > 0>>\
<span id="left"><<button [[Previous Page|View Spells]]>><<set $spellbook_page-->><</button>></span>
<<else>>\
<div class="offbutton">\
<<button "Previous Page">><</button>>
</div>\
<</if>>\
</div>\
<div class="pagebutton-spellbook">\
<<if _spell_list.length > _end_pos>>\
<span id="right"><<button [[Next Page|View Spells]]>><<set $spellbook_page++>><</button>></span>
<<else>>\
<div class="offbutton">\
<<button "Next Page">><</button>>
</div>\
<</if>>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="back"><<if $at_entrance === true>><<button [[Back|Enter Dungeon]]>><<unset $spellbook_page>><</button>><<else>><<button [[Back|Between Rooms]]>><<unset $spellbook_page>><</button>><</if>></span>
</div>\
</div>\<<if $visited_dungeon_rooms === false && $tutorial_guides === true && $is_tutoring === false>>\
<<silently>>\
* Variables *
<<set $visited_dungeon_rooms to true>> prevents this tutorial from showing again
* Display *
<</silently>>\
<div class="titlebox">\
Dungeon Room Manager
</div>\
<div class="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/mistress/face.jpg]]
</div>\
<div class="dialogue-text">\
Welcome to the Dungeon Room Manager.
Here you can view all your rooms and the creatures or traps that reside each room. Open a room to view it in more detail, showing the stats, ability and more. While viewing a room's occupant, you can move it to a different room, change it's mode, upgrade it, or remove it.
Remember to check your Guidebook if you ever forget something. I'll keep it up to date just for you.
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="dialogue">\
<span id="forward"><<button [[Continue|Dungeon Floor Manager]]>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
</div>\
<<else>>\
<<silently>>\
*Variables*
<<set _floor_names to ["Floor One", "Floor Two", "Floor Three", "Floor Four", "Floor Five", "Floor Six", "Floor Seven", "Floor Eight", "Floor Nine", "Floor Ten", "Floor Eleven", "Floor Twelve"]>> Display name for each room
*Display*
<</silently>>\
<div class="titlebox">\
Dungeon Floors
</div>\
<div class="tableholder-manager">\
<<for _i = 0; _i < $dungeon_floor_list.length; _i++>>\
<div class="cell-manager">\
<<set _hotKey to _i + 1>>\
<<capture _i, _hotKey>>\
<div class="cell-textholder-manager">\
<strong><<- _floor_names[_i]>></strong>
<<if $dungeon_floor_list[_i].room_type === "Creature">>\
<span @id="_hotKey"><<button "$dungeon_floor_list[_i].name ^^_hotKey^^" "Creature Room">><<set $display_creature to $dungeon_floor_list[_i]>><<set $display_room_num to _i>><</button>></span>
<<elseif $dungeon_floor_list[_i].room_type === "Trap">>\
<span @id="_hotKey"><<button "$dungeon_floor_list[_i].name ^^_hotKey^^" "Trap Room">><<set $display_trap to $dungeon_floor_list[_i]>><<set $display_room_num to _i>><</button>></span>
<<elseif $dungeon_floor_list[_i].room_type === "Empty" && $dungeon_floor_list[_i].built === true && $is_raiding === false>>\
<span @id="_hotKey"><<button "Empty Room ^^_hotKey^^" "Empty Room">><<set $display_room_num to _i>><<set $start_page to 0>><<set $end_page to 4>><</button>></span>
<<elseif $dungeon_floor_list[_i].room_type === "Empty" && $dungeon_floor_list[_i].built === true && $is_raiding === true>>\
<div class="offbutton">\
<<button "Empty Room">><</button>>
</div>\
<<else>>\
<<set _prev_room to _i - 1>>\
<<if $current_event.name === setup.cheap_labor.name && $current_event.event === true>>\
<<set _amount to Math.round($dungeon_floor_list[_i].cost * setup.cheap_labor.float)>>\
<<set _cost to $dungeon_floor_list[_i].cost - _amount>>\
<<else>>\
<<set _cost to $dungeon_floor_list[_i].cost>>\
<</if>>\
<<if $dungeon_rank < $dungeon_floor_list[_i].rank>>\
<div class="offbutton">\
<<hovertip "Available at Rank <<- $dungeon_floor_list[_i].rank>>">><<button "_cost Gold">><</button>><</hovertip>>
</div>\
<<elseif $dungeon_floor_list[_prev_room].built === false>>\
<div class="offbutton">\
<<hovertip "Requires <<- _floor_names[_prev_room]>>">><<button "_cost Gold">><</button>><</hovertip>>
</div>\
<<elseif $pc_creature_list.length + $pc_trap_list.length < _i + 1>>\
<div class="offbutton">\
<<hovertip "Must have at least <<- _i + 1>> Creatures and Traps Unlocked">><<button "_cost Gold">><</button>><</hovertip>>
</div>\
<<elseif $is_raiding === false>>\
<<if $pc_gold >= _cost>>\
<<capture _cost>>\
<span @id="_hotKey"><<button "_cost Gold ^^_hotKey^^" "Dungeon Floor Manager">>\
<<silently>>\
<<set $dungeon_floor_list[_i].built to true>>
<<set $dungeon_floor_list[_i].pic to "[img[images/rooms/empty_room.jpg]]">>
<<set $pc_gold -= _cost>>
<<set $pc_rooms_gold_spent += _cost>>
<<if $current_event.name === setup.cheap_labor.name && $current_event.event === true>>
<<set $current_event.event to false>>
<</if>>
<</silently>>\
<</button>></span>\
<</capture>>\
<<else>>\
<div class="offbutton">\
<<hovertip "Not enough Gold">><<button "Build for _cost Gold">><</button>><</hovertip>>
</div>\
<</if>>\
<<else>>\
<div class="offbutton">\
<<hovertip "Cannot Build during a Raid">><<button "Build for _cost Gold">><</button>><</hovertip>>
</div>\
<</if>>\
<</if>>\
</div>\
<</capture>>\
<div class="cell-picholder-manager">\
$dungeon_floor_list[_i].pic
</div>\
</div>\
<</for>>\
</div>\
<div class="exit-link-right">\
<<if $is_tutoring === true>>\
<span id="u"><<button "Move <u>U</u>nits" "Move Units">><</button>></span> <span id="forward"><<button [[Continue|Tutorial]]>><</button>></span>
<<elseif $is_raiding === true>>\
<<if $at_entrance === true>>\
<span id="back"><<button [[Back|Enter Dungeon]]>><</button>></span>
<<else>>\
<span id="back"><<button [[Back|Between Rooms]]>><</button>></span>
<</if>>\
<<else>>\
<span id="e"><<button "<u>E</u>dit Layout" "Move Units">><</button>></span> <span id="back"><<button [[Main Menu]]>><</button>></span> <span id="q"><<button "<u>Q</u>uick Menu" "Quick Menu">><</button>></span>
<</if>>\
</div>\
<</if>>\<<silently>>\
* Variables *
<<set _floor_names to ["Floor One", "Floor Two", "Floor Three", "Floor Four", "Floor Five", "Floor Six", "Floor Seven", "Floor Eight", "Floor Nine", "Floor Ten", "Floor Eleven", "Floor Twelve"]>> Display name for each room
* Stats *
<<CreatureStats $display_creature>>
* Update Description *
<<CreatureDescription $display_creature>>
* Display *
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Dungeon Floor Manager]]>><<set $dungeon_floor_list[$display_room_num] to $display_creature>><<unset $display_room_num>><</button>></span>
</div>\
<div class="cardholder-picside">\
<div class="picbox-inforoom-green">\
<div class="titlebox-abovepic">\
<<- _floor_names[$display_room_num]>>
</div>\
<div class="textboxlarge-abovepic">\
<strong>$display_creature.name</strong>
</div>\
<div class="textbox-abovepic">\
<<hovertip "$display_creature.exp / $display_creature.next_level_exp">>Lvl. $display_creature.level<</hovertip>>
</div>\
<div class="textbox-abovepic">\
Upkeep: <span style="color:gold">$display_creature.upkeep Gold</span>
</div>\
<div class="picbox-inforoom">\
$display_creature.pic
</div>\
<div class="statusbox-belowpic">\
</div>\
</div>\
</div>\
<div class="cardholder-infoside">\
<div class="textbox-inforoom-green">\
<div class="description-stats">\
$display_creature.description
</div>\
<div class="table-stats">\
<div class="cell-stats">\
<u>Creature Types</u>
$display_creature.creature_types
</div>\
<div class="cell-stats">\
<<set _num to $display_creature.cur_max_hp - Math.trunc($display_creature.max_hp)>>\
<span class="health"><u>Health</u>
$display_creature.cur_hp / $display_creature.cur_max_hp</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
</div>\
<div class="cell-stats">\
<<set _num to $display_creature.cur_atk - Math.trunc($display_creature.atk)>>\
<<if $display_creature.attack_type === "Physical">>\
<span class="physical"><u>Physical Attack</u>
$display_creature.cur_atk</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
<<elseif $display_creature.attack_type === "Magical">>\
<span class="magical"><u>Magical Attack</u>
$display_creature.cur_atk</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
<<elseif $display_creature.attack_type === "True">>\
<u>True Damage</u>
$display_creature.cur_atk <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
<</if>>\
</div>\
<div class="cell-stats">\
<<set _num to $display_creature.cur_sex - Math.trunc($display_creature.sex)>>\
<span class="lust"><u>Sexual Attack</u>
$display_creature.cur_sex</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
</div>\
<div class="cell-stats">\
<<set _num to $display_creature.cur_pres - Math.trunc($display_creature.pres)>>\
<span class="pres"><u>Physical Resistance</u>
$display_creature.cur_pres</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
</div>\
<div class="cell-stats">\
<<set _num to $display_creature.cur_mres - Math.trunc($display_creature.mres)>>\
<span class="mres"><u>Magical Resistance</u>
$display_creature.cur_mres</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
</div>\
<div class="longcell-stats">\
<u><strong>Fetishes</strong></u>
<<if $display_creature.fetishes.length === 0>>\
None
<<else>>\
$display_creature.fetishes
<</if>>\
</div>\
<div class="shortcell-stats">\
<u>Raiders Encountered</u>
$display_creature.total_raiders
</div>\
<div class="shortcell-stats">\
<u>Raiders Captured</u>
$display_creature.total_captures
</div>\
<div class="shortcell-stats">\
<u>Times Defeated</u>
$display_creature.total_deaths
</div>\
<div class="shortcell-stats">\
<u>Damage Dealt</u>
$display_creature.total_dmgdealt
</div>\
<div class="shortcell-stats">\
<u>Lust Increased</u>
$display_creature.total_sexdealt
</div>\
<div class="shortcell-stats">\
<u>Damage Taken</u>
$display_creature.total_dmgtaken
</div>\
</div>\
</div>\
<div class="linkbox-inforoom">\
<div class="links-inforoom">\
<<if $display_creature.effects.length === 0>>\
<div class="offbutton">\
<<button "View Effects">><</button>>
</div>\
<<else>>\
<span id="1"><<button "View Effects ^^1^^" "Effects List">><<set $effect_room to $display_creature>><</button>></span>
<</if>>\
</div>\
<div class="links-inforoom">\
<<if $display_creature.upgraded === false>>\
<span id="2"><<button "Upgrade ^^2^^" "Creature Upgrades">><<set $upgrade_room to clone($display_creature)>><<set $sent_from to "Creature Room">><</button>></span>
<<elseif $display_creature.upgraded === true>>\
<div class="offbutton">\
<<button "Upgrade">><</button>>
</div>\
<<else>>
There's something else?
<</if>>\
</div>\
<div class="links-inforoom">\
<<if $is_raiding === false>>\
<span id="3"><<button "Remove Creature ^^3^^" "Remove Unit">><<set $delete_room_id to $display_creature>><<set $delete_room_num to $display_room_num>><</button>></span>
<<else>>\
<div class="offbutton">\
<<button "Remove Creature">><</button>>
</div>\
<</if>>\
</div>\
</div>\
</div>\
</div>\<<silently>>\
* Variables *
<<set _floor_names to ["Floor One", "Floor Two", "Floor Three", "Floor Four", "Floor Five", "Floor Six", "Floor Seven", "Floor Eight", "Floor Nine", "Floor Ten", "Floor Eleven", "Floor Twelve"]>> Display name for each room
* Trap Stats *
<<TrapStats $display_trap>>
* Trap Description *
<<TrapDescription $display_trap>>
* Display *
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Dungeon Floor Manager]]>><<set $dungeon_floor_list[$display_room_num] to $display_trap>><<unset $display_room_num>><</button>></span>
</div>\
<div class="cardholder-picside">\
<div class="picbox-inforoom-blue">\
<div class="titlebox-abovepic">\
<<- _floor_names[$display_room_num]>>
</div>\
<div class="textboxlarge-abovepic">\
<strong>$display_trap.name</strong>
</div>\
<div class="textbox-abovepic">\
Rank $display_trap.level
</div>\
<div class="textbox-abovepic">\
Upkeep: <span style="color:gold">$display_trap.upkeep Gold</span>
</div>\
<div class="picbox-inforoom">\
<div class="cardpic-inforoom">\
$display_trap.pic
</div>\
</div>\
<div class="statusbox-belowpic">\
</div>\
</div>\
</div>\
<div class="cardholder-infoside">\
<div class="textbox-inforoom-blue">\
<div class="description-stats-trap">\
$display_trap.description
</div>\
<div class="table-stats-trap">\
<div class="cell-stats-trap">\
<u>Trap Types</u>
$display_trap.trap_types
</div>\
<div class="cell-stats-trap">\
<<set _num to $display_trap.cur_check - $display_trap.check>>\
<u>$display_trap.check_type</u>
$display_trap.cur_check <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
</div>\
<div class="cell-stats-trap">\
<<set _num to $display_trap.cur_atk - $display_trap.atk>>\
<<if $display_trap.attack_type === "Physical">>\
<span style="color:orange"><u>Physical Attack</u>
$display_trap.cur_atk</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
<<elseif $display_trap.attack_type === "Magical">>\
<span style="color:deepskyblue"><u>Magical Attack</u>
$display_trap.cur_atk</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
<<elseif $display_trap.attack_type === "True">>\
<u>True Attack</u>
$display_trap.cur_atk <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
<</if>>\
</div>\
<div class="cell-stats-trap">\
<<set _num to $display_trap.cur_sex - $display_trap.sex>>\
<span style="color:fuchsia"><u>Sexual Attack</u>
$display_trap.cur_sex</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
</div>\
<div class="longcell-stats-trap">\
<u><strong>Fetishes</strong></u>
<<if $display_trap.fetishes.length === 0>>\
None
<<else>>\
$display_trap.fetishes
<</if>>\
</div>\
<div class="shortcell-stats-trap">\
<u>Raiders Encountered</u>
$display_trap.total_raiders
</div>\
<div class="shortcell-stats-trap">\
<u>Raiders Captured</u>
$display_trap.total_captures
</div>\
<div class="shortcell-stats-trap">\
<<if $display_trap.total_attempts > 0>>\
<<set _success_rate to ($display_trap.total_triggers / $display_trap.total_attempts).toFixed(2)>>\
<<set _success_rate to Math.trunc(_success_rate * 100)>>\
<<else>>\
<<set _success_rate to 0>>\
<</if>>\
<u>Success Rate</u>
_success_rate%
</div>\
<div class="shortcell-stats-trap">\
<u>Damage Dealt</u>
$display_trap.total_dmgdealt
</div>\
<div class="shortcell-stats-trap">\
<u>Lust Increased</u>
$display_trap.total_sexdealt
</div>\
<div class="shortcell-stats-trap">\
<u>Statuses Inflicted</u>
$display_trap.total_statuses
</div>\
</div>\
</div>\
<div class="linkbox-inforoom">\
<div class="links-inforoom">\
<<if $display_trap.effects.length === 0>>\
<div class="offbutton">\
<<button "View Effects">><</button>>
</div>\
<<else>>\
<span id="1"><<button "View Effects ^^1^^" "Effects List">><<set $effect_room to $display_trap>><</button>></span>
<</if>>\
</div>\
<div class="links-inforoom">\
<<if $display_trap.mode_list.length === 0>>\
<div class="offbutton">\
<<hovertip "No Modes">><<button "Change Mode">><</button>><</hovertip>>
</div>\
<<elseif $is_raiding === true && $display_trap.raid_mode === false>>\
<div class="offbutton">\
<<hovertip "Cannot Change Modes during Raids">><<button "Change Mode">><</button>><</hovertip>>
</div>\
<<else>>\
<span id="2"><<button "Change Mode ^^2^^" "Trap Modes">><<set $sent_from to "Trap Room">><</button>></span>
<</if>>\
</div>\
<div class="links-inforoom">\
<<if $is_raiding === false>>\
<span id="3"><<button "Remove Trap ^^3^^" "Remove Unit">><<set $delete_room_id to $display_trap>><<set $delete_room_num to $display_room_num>><</button>></span>
<<else>>\
<div class="offbutton">\
<<button "Remove Trap">><</button>>
</div>\
<</if>>\
</div>\
</div>\
</div>\
</div>\<<silently>>\
* Variables *
<<set _floor_names to ["Floor One", "Floor Two", "Floor Three", "Floor Four", "Floor Five", "Floor Six", "Floor Seven", "Floor Eight", "Floor Nine", "Floor Ten", "Floor Eleven", "Floor Twelve"]>> Display name for each room
<<PlayerCreatureList>>
<<PlayerTrapList>>
<<set _page_num to 4>> amount increased or decreased from display
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
<<- _floor_names[$display_room_num]>>
</div>\
<div class="sidebutton-newroom">\
<<if $start_page === 0>>\
<div class="tallbutton-off">\
<<button "<">><</button>>\
</div>\
<<else>>\
<div class="tallbutton">\
<span id="left"><<button [[<|Empty Room]]>><<set $start_page -= _page_num>><<set $end_page -= _page_num>><</button>></span>
</div>\
<</if>>\
</div>\
<div class="cardcontainer-newroom">\
<div class="cardholder-newroom">\
<<if $start_page >= _playerCreatureList.length>>\
<<set _creature_start to $start_page - _page_num>>\
<<set _creature_end to $end_page - _page_num>>\
<<else>>\
<<set _creature_start to clone($start_page)>>\
<<set _creature_end to clone($end_page)>>\
<</if>>\
<<for _c = _creature_start; _c < _creature_end; _c++>>\
<<set _creature to _playerCreatureList[_c]>>\
<<set _hotKey to (_c % 4) + 1>>\
<<set _shiftKey to "shift" + _hotKey>>\
<<capture _creature, _c, _hotKey, _shiftKey>>\
<div class="cellholder-newroom">\
<div class="cells-newroom">\
<div class="cell-title-newroom">\
_creature.name
</div>\
<div class="cell-pic-newroom">\
_creature.pic
</div>\
<div class="cell-text-newroom">\
<span @id="_shiftKey"><<button "[img[images/icons/desc_icon.png]]^^[_hotKey]^^" "Creature Preview">><<set $preview to _creature>><<set $return to "Empty Room">><</button>></span>\
<<if $pc_owned_list.includes(_creature.base_name)>>\
<div class="offbutton">\
<<hovertip "Already Summoned Creature">><<button "Summon">><</button>><</hovertip>>
</div>\
<<else>>\
<span @id="_hotKey"><<button "Summon ^^_hotKey^^" "Summon Creature">><<set $summoning to _playerCreatureList[_c]>><</button>></span>
<</if>>\
</div>\
</div>\
</div>\
<</capture>>\
<<if _c + 1 === _playerCreatureList.length>>\
<<break>>\
<</if>>\
<</for>>\
</div>\
<div class="cardholder-newroom">\
<<if $start_page >= _playerTrapList.length>>\
<<set _trap_start to $start_page - _page_num>>\
<<set _trap_end to $end_page - _page_num>>\
<<else>>\
<<set _trap_start to clone($start_page)>>\
<<set _trap_end to clone($end_page)>>\
<</if>>\
<<for _t = _trap_start; _t < _trap_end; _t++>>\
<<set _trap to _playerTrapList[_t]>>\
<<set _hotKey to (_t % 4) + 5>>\
<<set _shiftKey to "shift"+_hotKey>>\
<<capture _trap, _t, _hotKey, _shiftKey>>\
<div class="cellholder-newroom">\
<div class="cells-newroom">\
<div class="cell-title-newroom">\
_trap.name
</div>\
<div class="cell-pic-newroom">\
_trap.pic
</div>\
<div class="cell-text-newroom">\
<span @id="_shiftKey"><<button "[img[images/icons/desc_icon.png]]^^[_hotKey]^^" "Trap Preview">><<set $preview to _trap>><<set $return to "Empty Room">><</button>></span>\
<<if $pc_owned_list.includes(_trap.base_name)>>\
<div class="offbutton">\
<<hovertip "Already Constructed Trap">><<button "Summon">><</button>><</hovertip>>
</div>\
<<else>>\
<span @id="_hotKey"><<button "Construct ^^_hotKey^^" "Construct Trap">><<set $construct to _playerTrapList[_t]>><</button>></span>
<</if>>\
</div>\
</div>\
</div>\
<</capture>>\
<<if _t + 1 === _playerTrapList.length>>\
<<break>>\
<</if>>\
<</for>>\
</div>\
</div>\
<div class="sidebutton-newroom">\
<<if $end_page >= _playerCreatureList.length && $end_page >= _playerTrapList.length>>\
<div class="tallbutton-off">\
<<button ">">><</button>>\
</div>\
<<else>>\
<div class="tallbutton">\
<span id="right"><<button [[>|Empty Room]]>><<set $start_page += _page_num>><<set $end_page += _page_num>><</button>></span>
</div>\
<</if>>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Dungeon Floor Manager]]>><<unset $start_page, $end_page>><</button>></span>
</div>\
</div>\<<silently>>\
* Variables *
<<set _floor_names to ["Floor One", "Floor Two", "Floor Three", "Floor Four", "Floor Five", "Floor Six", "Floor Seven", "Floor Eight", "Floor Nine", "Floor Ten", "Floor Eleven", "Floor Twelve"]>> Display name for each room
* Display *
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<<if $moving_index == null>>\
<span id="back"><<button [[Finish|Dungeon Floor Manager]]>><</button>></span>
<<else>>\
<span id="back"><<button [[Back|Move Units]]>><<unset $moving_room, $moving_index>><</button>></span>
<</if>>\
</div>\
<div class="tableholder-manager">\
<div class="titlebox">\
<<if $moving_index == null>>\
Select a Unit to move
<<else>>\
Select a different Unit
<</if>>\
</div>\
<<for _i = 0; _i < $dungeon_floor_list.length; _i++>>\
<div class="cell-manager">\
<div class="cell-textholder-manager">\
<<set _hotKey to _i + 1>>\
<<capture _i, _hotKey>>\
<strong><<- _floor_names[_i]>></strong>
<<if _i == $moving_index>>\
<div class="offbutton">\
<<button "Selected">><</button>>
</div>\
<<elseif $moving_index == null>>\
<<if $dungeon_floor_list[_i].built === true || $dungeon_floor_list[_i].room_type === "Creature" || $dungeon_floor_list[_i].room_type === "Trap">>\
<span @id="_hotKey"><<button "Move ^^_hotKey^^" "Move Units">><<set $moving_index to _i>><<set $moving_room to $dungeon_floor_list[_i]>><</button>></span>
<<else>>\
<div class="offbutton">\
<<button "Switch">><</button>>
</div>\
<</if>>\
<<else>>\
<<if $dungeon_floor_list[_i].built === true || $dungeon_floor_list[_i].room_type === "Creature" || $dungeon_floor_list[_i].room_type === "Trap">>\
<span @id="_hotKey"><<button "Move ^^_hotKey^^" "Move Units">>\
<<silently>>\
MOVE ROOMS
<<set $dungeon_floor_list[$moving_index] to $dungeon_floor_list[_i]>>
<<set $dungeon_floor_list[_i] to $moving_room>>
UNSET VAR
<<unset $moving_room, $moving_index>>
<</silently>>\
<</button>></span>\
<<else>>\
<div class="offbutton">\
<<button "Move">><</button>>
</div>\
<</if>>\
<</if>>\
<</capture>>\
</div>\
<div class="cell-picholder-manager">\
$dungeon_floor_list[_i].pic
</div>\
</div>\
<</for>>\
</div>\
</div>\
<<silently>>\
*Variables*
<<set $first_time_check to false>>
* Set First Time Check for this passage *
<<if $raid_report_bool == null>>
<<set $raid_report_bool to false>>
<</if>>
<<if $raid_report_bool === false>>
DISABLE TRIGGER
<<set $raid_report_bool to true>>
*Increase Capture Count*
<<for _i = 0; _i < $captured_girl_list.length; _i++>>
<<set _class to $captured_girl_list[_i].class.toLowerCase()>>
<<set $raider_captured_stats[_class]++>>
<<set $raider_captured_stats.total++>>
<<set $captured_raiders_count++>>
MALLORY MISSION 1
<<if $missionLog.mallory.num === 0 && $missionLog.mallory.started === true && $captured_girl_list[_i].trait_names.includes(setup.newblood.name)>>
<<set $missionLog.mallory.int++>>
<<if $missionLog.mallory.int >= setup.malloryMisLine[$missionLog.mallory.num].goal>>
<<set $missionLog.mallory.completed to true>>
<<set $newMission_bool to true>>
<</if>>
<</if>>
ANNA MISSION 1
<<if $missionLog.anna.num === 0 && $missionLog.anna.started === true && $captured_girl_list[_i].trait_names.includes(setup.descendant.name)>>
<<set $missionLog.anna.completed to true>>
<<set $newMission_bool to true>>
<<set _delete to $captured_girl_list.deleteAt(_i)>>
<<set _i-->>
<<set $link to "Captured Descendant">>
<</if>>
<</for>>
REMOVE RAIDERS CAPTURED FROM TOWN
<<set $captured_raiders_count -= $impInvasionCount>>
*Take Girls Gold*
<<for _i = 0; _i < $captured_girl_list.length; _i++>>
<<set _cur_girl to $captured_girl_list[_i]>>
<<set $gold_earned += _cur_girl.gold>>
<<set $pc_raid_gold_earned += _cur_girl.gold>>
* Take Girls Treasure*
<<if _cur_girl.item !== "">>
<<set $treasure_earned.push(clone(_cur_girl.item))>>
<<set $pc_raid_treasure_earned++>>
<</if>>
* Add Raider to Capture List *
<<set $captured_girl_list[_i] to _cur_girl>>
<</for>>
* Set Slave Body Type Arrays *
<<set _unused_slave_packs to {
slender: [],
average: [],
busty: []
}>>
<<set _used_slave_packs to {
slender: [],
average: [],
busty: []
}>>
<<for _i = 0; _i < $slave_pack_array.length; _i++>>
<<if $slave_pack_array[_i].body_type === "busty">>
<<set _unused_slave_packs.busty.push($slave_pack_array[_i])>>
<<elseif $slave_pack_array[_i].body_type === "slender">>
<<set _unused_slave_packs.slender.push($slave_pack_array[_i])>>
<<elseif $slave_pack_array[_i].body_type === "average">>
<<set _unused_slave_packs.average.push($slave_pack_array[_i])>>
<</if>>
<</for>>
* Slave Grinder *
<<for _i = 0; _i < $captured_girl_list.length; _i++>>
<<set _slave to clone(setup.slave)>>
* Transfer Information From Raider to Slave *
<<set _slave.name to $captured_girl_list[_i].name>>
<<set _slave.body_type to $captured_girl_list[_i].body_type>>
<<set _slave.exp to $captured_girl_list[_i].exp>>
<<set _slave.raider_class to $captured_girl_list[_i].class>>
<<set _slave.subclass to $captured_girl_list[_i].subclass.name>>
<<set _slave.rating to $captured_girl_list[_i].subclass.name>>
<<set _slave.slave_pack to $captured_girl_list[_i].slave_pack>>
* Determine Trait Rates *
VIRGIN TRAIT RATE
<<if $captured_girl_list[_i].trait_names.includes("Virgin")>>
<<set _virgin_rate to 2>>
<<else>>
<<set _virgin_rate to 0>>
<</if>>
RARE AND RAIDER TRAIT RATE
<<if $captured_girl_list[_i].special_trait != "">>
<<set _rare_rate to setup.rare_slave_trait_rate * setup.rare_slave_trait_bonus>>
<<set _raider_rate to setup.raid_slave_trait_rate * setup.raid_slave_trait_bonus>>
<<else>>
<<set _rare_rate to setup.rare_slave_trait_rate>>
<<set _raider_rate to setup.raid_slave_trait_rate>>
<</if>>
INCREASE BASED ON RAIDER SUBCLASS
<<switch $captured_girl_list[_i].subclass>>
<<case "Master">>
<<set _rare_rate *= 3.5>>
<<set _raider_rate *= 3.5>>
<<case "Veteran">>
<<set _rare_rate *= 3>>
<<set _raider_rate *= 3>>
<<case "Expert">>
<<set _rare_rate *= 2.5>>
<<set _raider_rate *= 2.5>>
<<case "Adept">>
<<set _rare_rate *= 2>>
<<set _raider_rate *= 2>>
<<case "Novice">>
<<set _rare_rate *= 1.5>>
<<set _raider_rate *= 1.5>>
<</switch>>
DRAGONSCALE CROWN
<<set _raider_rate *= 1 + (setup.rare_treasure_02.raidFloat * $treasureroom_inventory.count(setup.rare_treasure_02.name))>>
<<set _rare_rate *= 1 + (setup.rare_treasure_02.rareFloat * $treasureroom_inventory.count(setup.rare_treasure_02.name))>>
* Give Stat Bonus Based On Class *
<<if $captured_girl_list[_i].class === "Priestess" || $captured_girl_list[_i].class === "Knight">>
<<set _slave.obedience++>>
<<elseif $captured_girl_list[_i].class === "Witch" || $captured_girl_list[_i].class === "Dancer">>
<<set _slave.libido++>>
<<elseif $captured_girl_list[_i].class === "Warrior" || $captured_girl_list[_i].class === "Brawler" || $captured_girl_list[_i].class === "Hunter">>
<<set _slave.strength++>>
<<elseif $captured_girl_list[_i].class === "Sorcerer" || $captured_girl_list[_i].class === "Alchemist" || $captured_girl_list[_i].class === "Thief">>
<<set _slave.intelligence++>>
<</if>>
* Grind Slave *
<<SlaveGrinder _slave _virgin_rate _rare_rate 0 _raider_rate>>
* Add Stress *
<<set _slave.cur_stress to _slave.max_stress>>
* Make Disobedient *
<<set _slave.disobedient to true>>
* Add New Slave *
<<set $slave_girl_list.push(_slave)>>
<</for>>
<</if>>
* Organize Treasure List *
<<if $treasure_page == null>>
<<set $treasure_page to 0>>
<</if>>
<<if $earned_treasure_list == null>>
<<set $earned_treasure_list to setup.common_treasure_list.concat(setup.uncommon_treasure_list, setup.rare_treasure_list)>>
<</if>>
<<for _i = 0; _i < $earned_treasure_list.length; _i++>>
SEARCHING FOR $earned_treasure_list[_i].name
<<set $earned_treasure_list[_i].count to $treasure_earned.count($earned_treasure_list[_i].name)>>
<<if $earned_treasure_list[_i].count <= 0>>
FOUND NONE
<<set _delete to $earned_treasure_list.deleteAt(_i)>>
<<set _i-->>
<</if>>
<</for>>
<<set _treasure_per_page to 8>> the number of treasures that can be on each page, starting count from 0
<<set _start_pos to _treasure_per_page * $treasure_page>> Set where to start the list based on what the page is
<<if _start_pos + _treasure_per_page < $earned_treasure_list.length>>
<<set _end_pos to _start_pos + _treasure_per_page>> Set where to end the list based on what the page is
<<else>>
<<set _end_pos to $earned_treasure_list.length>>
<</if>>
* Sorting Bools *
<<if $count_sorted == null>>
<<set $count_sorted to false>>
<</if>>
<<if $name_sorted == null>>
<<set $name_sorted to true>>
<<set $earned_treasure_list.sort(function (a, b) {
var
nameA = a.name.toUpperCase(),
nameB = b.name.toUpperCase();
if (nameA < nameB) {
return -1;
}
else if (nameA > nameB) {
return 1;
}
return 0;
});>>
<</if>>
<<if $value_sorted == null>>
<<set $value_sorted to false>>
<</if>>
<<if $link == null>>
<<set $link to "Slave List">>
<</if>>
*Display Info*
<</silently>>\
<div class="exit-link-right">\
<span id="forward"><<button "View Slaves" $link>><<unset $raid_report_bool, $earned_treasure_list, $treasure_page, $count_sorted, $name_sorted, $value_sorted, $link>><</button>></span>
</div>\
<div class="titlebox">\
Raid Report
</div>\
<div class="header-raid-report">\
<div class="cardholder-raid-report">\
<div class="titlebox-raid-report">\
Captured Raiders
</div>\
<div class="textbox-raid-report">\
<<if $captured_raiders_count === 0>>\
No Raiders Captured
<<elseif $captured_raiders_count === 1>>\
1 Raider Captured
<<else>>\
$captured_raiders_count Raiders Captured
<</if>>
</div>\
</div>\
<div class="cardholder-raid-report">\
<div class="titlebox-raid-report">\
Gold Gained
</div>\
<div class="textbox-raid-report">\
<<if $gold_earned === 0>>\
No Gold Earned
<<else>>\
<span style="color:gold">$gold_earned Gold</span>
<</if>>
</div>\
</div>\
</div>\
<div class="button-treasure-list">\
<<if $treasure_page > 0>>\
<div class="tallbutton">\
<span id="left"><<button [[<|Captured Raiders]]>><<set $treasure_page-->><</button>></span>
</div>\
<</if>>\
</div>\
<div class="cardholder-treasure-vault">\
<div class="headerholder-treasure-vault">\
<div class="header-count-treasure-vault">\
<span id="c"><<button "<u>C</u>ount" "Captured Raiders">>\
<<silently>>\
<<if $count_sorted === false>>
<<set $earned_treasure_list.sort(function (a, b) { return b.count - a.count; });>>
<<set $count_sorted to true>>
<<set $name_sorted to false>>
<<set $value_sorted to false>>
<<else>>
<<set $earned_treasure_list.sort(function (a, b) { return a.count - b.count; });>>
<<set $count_sorted to false>>
<<set $name_sorted to false>>
<<set $value_sorted to false>>
<</if>>
<</silently>>\
<</button>></span>\
</div>\
<div class="header-name-treasure-vault">\
<span id="n"><<button "<u>N</u>ame" "Captured Raiders">>\
<<silently>>\
<<if $name_sorted === false>>
<<set $count_sorted to false>>
<<set $name_sorted to true>>
<<set $value_sorted to false>>
<<set $earned_treasure_list.sort(function (a, b) {
var
nameA = a.name.toUpperCase(),
nameB = b.name.toUpperCase();
if (nameA < nameB) {
return -1;
}
else if (nameA > nameB) {
return 1;
}
return 0;
});>>
<<else>>
<<set $count_sorted to false>>
<<set $name_sorted to false>>
<<set $value_sorted to false>>
<<set $earned_treasure_list.sort(function (a, b) {
var
nameA = a.name.toUpperCase(),
nameB = b.name.toUpperCase();
if (nameA > nameB) {
return -1;
}
else if (nameA < nameB) {
return 1;
}
return 0;
});>>
<</if>>
<</silently>>\
<</button>></span>
</div>\
<div class="header-description-treasure-vault">\
<strong>Description</strong>
</div>\
<div class="header-value-treasure-vault">\
<span id="v"><<button "<u>V</u>alue" "Captured Raiders">>\
<<silently>>\
<<if $value_sorted === false>>
<<set $earned_treasure_list.sort(function (a, b) { return b.gold - a.gold; });>>
<<set $count_sorted to false>>
<<set $name_sorted to false>>
<<set $value_sorted to true>>
<<else>>
<<set $earned_treasure_list.sort(function (a, b) { return a.gold - b.gold; });>>
<<set $count_sorted to false>>
<<set $name_sorted to false>>
<<set $value_sorted to false>>
<</if>>
<</silently>>\
<</button>></span>\
</div>\
<div class="header-button-treasure-vault">\
<<set _cur_page to $treasure_page + 1>>\
<<if $earned_treasure_list.length === 0>>\
<<set _cur_page to 0>>\
<</if>>\
<<set _tot_pages to Math.trunc(($earned_treasure_list.length / _treasure_per_page) + 0.99)>>\
Page
_cur_page / _tot_pages
</div>\
</div>\
<div class="cellholder-treasure-vault">\
<<for _i = _start_pos; _i < _end_pos; _i++>>\
<<silently>>\
<<set _hotKey to (_i % 8) + 1>>
* Set Base Cost *
<<set _cost to clone(setup.treasure_cost[$earned_treasure_list[_i].rarity])>>
* Treasure Cost Modifiers *
SELLING MOD
<<set _cost to (Math.round(_cost * $treasure_sell_float)).clamp(1, 1000000)>>
RING OF DECEPTION
<<if $earned_treasure_list[_i].name === setup.common_treasure_07.name>>
<<set _cost *= setup.common_treasure_07.mult>>
<</if>>
RING OF TEMPTATION
<<if $earned_treasure_list[_i].name === setup.uncommon_treasure_04.name>>
<<set _cost *= setup.uncommon_treasure_07.mult>>
<</if>>
* Set Cost *
<<set $earned_treasure_list[_i].gold to clone(_cost)>>
<</silently>>\
<div class="cell-count-treasure-vault">\
$earned_treasure_list[_i].count
</div>\
<div class="cell-name-treasure-vault">\
<span @class="$earned_treasure_list[_i].rarity">$earned_treasure_list[_i].name</span>
</div>\
<div class="cell-description-treasure-vault">\
$earned_treasure_list[_i].tooltip
</div>\
<div class="cell-value-treasure-vault">\
@@.gold;$earned_treasure_list[_i].gold Gold@@
</div>\
<div class="cell-button-treasure-vault">\
<<capture _i, _hotKey>>\
<span @id="_hotKey"><<button "Sell ^^_hotKey^^" "Captured Raiders">>\
<<silently>>\
UPDATE STATS
<<set $pc_gold += $earned_treasure_list[_i].gold>>
<<set $pc_gold_earned_other += $earned_treasure_list[_i].gold>>
<<set $pc_treasure_sold++>>
ADD TREASURE TO LIST TO ADD LATER
<<set $raidtreasure_list.push($earned_treasure_list[_i].name)>>
REMOVE TREASURE FROM EARNED TREASURES
<<for _z = 0; _z < $treasure_earned.length; _z++>>
<<if $treasure_earned[_z] === $earned_treasure_list[_i].name>>
<<set _delete to $treasure_earned.deleteAt(_z)>>
<<break>>
<</if>>
<</for>>
<</silently>>\
<</button>></span>\
<</capture>>\
</div>\
<</for>>\
</div>\
</div>\
<div class="button-treasure-list">\
<<if $earned_treasure_list.length > _end_pos>>\
<div class="tallbutton">\
<span id="right"><<button [[>|Captured Raiders]]>><<set $treasure_page++>><</button>></span>
</div>\
<</if>>\
</div>\<<silently>>\
* Starting Variables *
<<set _minGold to 25>>
<<set _maxGold to 30>> min and max base values of gold stolen
<<set _rankMod to [0, 1, 1.25, 1.5, 1.75, 2]>> increases gold stolen based on what rank
<<set _goldOnly_mod to 1.5>> increases gold stolen if they did not steal treasure
<<set _zero_loot_penalty to 2>> increase rep and threat lost if player had no gold or treasure to steal
<<set _zero_gold_penalty to 1>> increase rep and threat lost if player had no gold to steal
<<set _low_gold_penalty to 0.5>> increase rep and threat lost if player didn't have enough gold to steal
<<set $first_time_check to false>>
<<set _desired_gold_amounts to []>> amounts of gold raider wanted to steal
* Create Player Treasure List *
<<if _all_treasure_info == null>>
<<set _all_treasure_info to setup.common_treasure_list.concat(setup.uncommon_treasure_list, setup.rare_treasure_list)>>
<</if>>
<<for _i = 0; _i < $raiders.length; _i++>>
* Treasure Stole Check *
<<if $treasureroom_inventory.length > 0>>
* PRIORITY TREASURES *
RING OF TEMPTATION
<<if $treasureroom_inventory.count(setup.uncommon_treasure_07.name) > 0 && $raiders[_i].treasure === "">>
FIND TREASURE
<<for _z = 0; _z < _all_treasure_info.length; _z++>>
<<if _all_treasure_info[_z].name === setup.uncommon_treasure_07.name>>
<<set $raiders[_i].treasure to _all_treasure_info[_z]>>
<<break>>
<</if>>
<</for>>
<</if>>
RING OF DECEPTION
<<if $treasureroom_inventory.count(setup.common_treasure_07.name) > 0 && $raiders[_i].treasure === "">>
RNG
<<set _rng to random(1, 100)>>
<<if setup.common_treasure_07.percent >= _rng>>
FIND TREASURE
<<for _z = 0; _z < _all_treasure_info.length; _z++>>
<<if _all_treasure_info[_z].name === setup.common_treasure_07.name>>
<<set $raiders[_i].treasure to _all_treasure_info[_z]>>
<<break>>
<</if>>
<</for>>
<</if>>
<</if>>
* STEAL RANDOM TREASURE *
<<if $raiders[_i].treasure === "">>
<<set _randomTreasure to $treasureroom_inventory.random()>>
FIND TREASURE
<<for _z = 0; _z < _all_treasure_info.length; _z++>>
<<if _all_treasure_info[_z].name === _randomTreasure>>
<<set $raiders[_i].treasure to _all_treasure_info[_z]>>
<<break>>
<</if>>
<</for>>
<<- $raiders[_i].treasure>> TREASURE STOLEN
<</if>>
UPDATE STATS
<<set $treasures_stolen++>>
<<set $pc_raid_treasure_stolen++>>
REMOVE TREASURE FROM INVENTORY
<<for _z = 0; _z < $treasureroom_inventory.length; _z++>>
<<if $treasureroom_inventory[_z] === $raiders[_i].treasure.name>>
<<set _remove to $treasureroom_inventory.deleteAt(_z)>>
<<break>>
<</if>>
<</for>>
* STOLEN TREASURE EFFECTS *
RESET ESSENCE RING COUNT
<<if _remove === setup.rare_treasure_03.name>>
<<set $essenceRingTracker to 0>>
<</if>>
RESET SHINY RING COUNT
<<if _remove === setup.common_treasure_08.name>>
<<set $shinyRingTracker to 0>>
<</if>>
<</if>>
* Gold Stolen Amount *
BASE VALUE
<<set _gold_stolen to random(_minGold, _maxGold)>>
RANK MOD
<<set _gold_stolen to Math.round(_gold_stolen * _rankMod[$dungeon_rank])>>
SUBCLASS MOD
<<set _gold_stolen to Math.round(_gold_stolen * $raiders[_i].subclass.steal_mod)>>
ADD EXTRA IF DID NOT STEAL TREASURE
<<if $raiders[_i].treasure === "">>
<<set _gold_stolen += Math.round(_gold_stolen * _goldOnly_mod)>>
<</if>>
UPDATE DESIRED GOLD AMOUNT
<<set _desired_gold_amounts.push(clone(_gold_stolen))>>
<<if $pc_gold < _gold_stolen && $pc_gold > 0>>
<<set _gold_stolen to clone($pc_gold)>>
<<elseif $pc_gold <= 0>>
<<set _gold_stolen to 0>>
<</if>>
SET RAIDER GOLD TO GOLD STOLEN
<<set $raiders[_i].gold to clone(_gold_stolen)>>
<<- $raiders[_i].gold>> GOLD BEING STOLEN
TOTAL GOLD STOLEN
<<set $gold_stolen += $raiders[_i].gold>>
<<set $pc_raid_gold_stolen += _gold_stolen>>
<<set $pc_gold -= _gold_stolen>>
<</for>>
* Calc Rep damage and Threat lost *
<<for _i = 0; _i < $raiders.length; _i++>>
BASE AMOUNT
<<set $raiders[_i].reputation to Math.round($raiders[_i].reputation * setup.cleared_rep_mod)>>
<<set $raiders[_i].threat to Math.round($raiders[_i].threat * setup.cleared_threat_mod)>>
<<if $raiders[_i].gold === 0 && $raiders[_i].treasure === "">>
PLAYER HAD NO GOLD OR TREASURE TO STEAL
<<set $raiders[_i].reputation += Math.round($raiders[_i].reputation * _zero_loot_penalty)>>
<<set $raiders[_i].threat += Math.round($raiders[_i].threat * _zero_loot_penalty)>>
<<elseif $raiders[_i].gold === 0 && $raiders[_i].treasure != "">>
<<set $raiders[_i].reputation += Math.round($raiders[_i].reputation * _zero_gold_penalty)>>
<<set $raiders[_i].threat += Math.round($raiders[_i].threat * _zero_gold_penalty)>>
<<elseif $raiders[_i].gold < _desired_gold_amounts[_i]>>
<<set $raiders[_i].reputation += Math.round($raiders[_i].reputation * _low_gold_penalty)>>
<<set $raiders[_i].threat += Math.round($raiders[_i].threat * _low_gold_penalty)>>
<</if>>
<</for>>
* Add Clear Count *
<<for _i = 0; _i < $raiders.length; _i++>>
<<set _class to $raiders[_i].class.toLowerCase()>>
<<set $raider_cleared_stats[_class]++>>
<<set $raider_cleared_stats.total++>>
<</for>>
* Update Raider Report Log *
<<for _i = 0; _i < $raiders.length; _i++>>
<<set _newLog to {
type: "Cleared",
gold: $raiders[_i].gold,
desired_gold: _desired_gold_amounts[_i],
treasure: $raiders[_i].treasure,
title: "She completed her Raid and cleared your Dungeon."
}>>
<<set $raiders[_i].report.log.push(clone(_newLog))>>
* Update Raider Result Log *
SET RAIDER RESULT LOG
<<if $raiders[_i].gold === 0 && $raiders[_i].treasure === "">>
<<set _result to "She cleared your Dungeon, but you had no @@.gold;Gold@@ or @@.gold;Treasures@@ to loot.">>
<<elseif $raiders[_i].gold === 0 && $raiders[_i].treasure != "">>
<<set _result to "She cleared your Dungeon and stole a @@.gold;Treasure@@, but you had no @@.gold;Gold@@ to loot.">>
<<elseif $raiders[_i].gold < _desired_gold_amounts[_i] && $raiders[_i].treasure === "">>
<<set _result to "She cleared your Dungeon, but was only able to steal @@.gold;"+$raiders[_i].gold+" Gold@@ before your Vault was emptied.">>
<<elseif $raiders[_i].gold < _desired_gold_amounts[_i] && $raiders[_i].treasure != "">>
<<set _result to "She cleared your Dungeon, but was only able to steal @@.gold;"+$raiders[_i].gold+" Gold@@ and a @@.gold;Treasure@@ before your Vault was emptied.">>
<<elseif $raiders[_i].treasure != "">>
<<set _result to "She cleared your Dungeon, stealing @@.gold;"+$raiders[_i].gold+" Gold@@ and a @@.gold;Treasure@@.">>
<<elseif $raiders[_i].treasure === "">>
<<set _result to "She cleared your Dungeon, stealing @@.gold;"+$raiders[_i].gold+" Gold@@.">>
<</if>>
<<set $raiders[_i].report.result to clone(_result)>>
<<set $raiders[_i].report.result_pic to $raiders[_i].pic>>
PUSH LOG
<<set $raider_report_list.push($raiders[_i].report)>>
* Push Raiders Into Cleared List *
<<set $raiders_cleared_list.push($raiders[_i])>>
<</for>>
* Set Next Link *
<<if $raiding_girls_list.length > 0>>
<<set _name to "Next Raid">>
<<set _link to "Raiding Party">>
<div class="exit-link-right"><<button [[Next Raid|Raiding Party]]>><</button>></div>
<<elseif $captured_girl_list.length > 0>>
<<set _name to "End Raid">>
<<set _link to "Captured Raiders">>
<<else>>
<<set _name to "End Raid">>
<<set _link to "Daily Summary">>
<</if>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Vault
</div>\
<div class="picbox-treasure-room">\
[img[images/rooms/treasure_room.jpg]]
</div>\
<div class="cardholder-treasure-room">\
<div class="textbox-treasure-room">\
<ul>\
<<if $raiders.length === 1>>\
<li>$raiders[0].name cleared $dungeon_name alone.</li>\
<<else>>\
<li>The party cleared $dungeon_name.</li>\
<</if>>\
<<for _r = 0; _r < $raiders.length; _r++>>\
<<if $raiders[_r].gold === 0>>\
<li>There was no @@.gold;Gold@@ left for $raiders[_r].name to steal, your @@.rep;Reputation@@ will be heavily damaged.</li>\
<<elseif $raiders[_r].gold < _desired_gold_amounts[_r]>>\
<li>$raiders[_r].name was only able to steal @@.gold;$raiders[_r].gold Gold@@ before you Vault ran out of @@.gold;Gold@@.</li>\
<<else>>\
<li>$raiders[_r].name stole @@.gold;$raiders[_r].gold Gold@@ from your Vault.</li>\
<</if>>\
<<if $raiders[_r].treasure != "">>\
<li>$raiders[_r].name stole your <span @class='$raiders[_r].treasure.rarity'>$raiders[_r].treasure.name</span>.</li>\
<</if>>\
<</for>>\
<<if $pc_gold === 0>>\
<li>@@.bad;Your Vault has run out of <span class='gold'>Gold</span>@@</li>\
<</if>>\
</ul>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[_name|_link]]>><</button>></span>
</div>\
</div>\<<silently>>\
*Variables*
<<if $slave_info == null>>
<<set $slave_info to "Stats">>
<</if>>
<<set _slaves_per_page to 6>> the number of slaves that can be on each page, starting count from 0
<<if $slave_list_page == null>>
<<set $slave_list_page to 0>>
<</if>>
<<set _start_pos to _slaves_per_page * $slave_list_page>> Set where to start the list based on what the page is
<<if _start_pos + _slaves_per_page < $slave_girl_list.length>>
<<set _end_pos to _start_pos + _slaves_per_page>> Set where to end the list based on what the page is
<<else>>
<<set _end_pos to $slave_girl_list.length>>
<</if>>
*Available Room Check*
<<set $open_room to "">>
<<for _i = 0; _i < $slave_room_list.length; _i++>>
<<if $slave_room_list[_i].room_type === "Empty">>
<<if $slave_room_list[_i].built === true>>
<<set $open_room to _i>>
<<break>>
<</if>>
<</if>>
<</for>>
*Display*
<</silently>>\
<div class="section">\
<div class="titlebox">\
Captured Raiders
</div>\
<div class="pagebox-buyslaves">\
<div class="pagecells-buyslaves">\
</div>\
<div class="pagecells-buyslaves">\
<span id="f"><<button "<u>F</u>uck All" "Fuck All">><</button>></span>
</div>\
<div class="pagecells-buyslaves">\
<span id="r"><<button "<u>R</u>elease All" "Daily Summary">>\
<<for _z = 0; _z < $captured_girl_list.length; _z++>>\
<<set $released_girl_list.push($captured_girl_list[_z])>>\
<</for>>\
<<set $captured_girl_list to []>>\
<</button>></span>\
</div>\
<div class="pagecells-buyslaves">\
</div>\
</div>\
<div class="pagebox-buyslaves">\
<div class="pagecells-buyslaves">\
<span id="v">\
<<if $slave_info === "Stats">>\
<<button "<u>V</u>iew Skills" "Slave List">><<set $slave_info to "Skills">><</button>>
<<elseif $slave_info === "Skills">>\
<<button "<u>V</u>iew Stats" "Slave List">><<set $slave_info to "Stats">><</button>>
<</if>>\
</span>
</div>\
<div class="pagecells-buyslaves">\
<<if $slave_list_page > 0>>\
<span id="left"><<button [[Previous Page|Slave List]]>><<set $slave_list_page-->><</button>></span>
<<else>>\
<div class="offbutton">\
<<button "Previous Page">><</button>>
</div>\
<</if>>\
</div>\
<div class="pagecells-buyslaves">\
<<set _cur_page to $slave_list_page + 1>>\
<<set _tot_pages to Math.trunc(($slave_girl_list.length / _slaves_per_page) + 0.99)>>\
Page _cur_page of _tot_pages
</div>\
<div class="pagecells-buyslaves">\
<<if $slave_girl_list.length > _end_pos>>\
<span id="right"><<button [[Next Page|Slave List]]>><<set $slave_list_page++>><</button>></span>
<<else>>\
<div class="offbutton">\
<<button "Next Page">><</button>>
</div>\
<</if>>\
</div>\
</div>\
<div class="slavebox-buyslaves">\
<<for _i = _start_pos; _i < _end_pos; _i++>>\
<<set _hotKey to (_i % 6) + 1>>\
<<set _shiftKey to "shift"+_hotKey>>\
<<set _ctrlKey to "ctrl"+_hotKey>>\
<div class="cellholder-slaves-slavecard">\
<div class="cell-slaves-slavecard">\
<div class="picholder-cells-slavecard">\
$slave_girl_list[_i].pic
</div>\
<div class="textholder-cells-slavecard">\
<div class="title-cells-slavecard">\
<strong>$slave_girl_list[_i].name</strong>
</div>\
<<if $slave_info === "Stats">>\
<div class="stats-cells-slavecard">\
<<hovertip "<<- setup.slave_stats.love.tooltip>>">><<-setup.slave_stats.love.icon>><</hovertip>>
<<hovertip "EXP: $slave_girl_list[_i].love_tracker / $slave_girl_list[_i].love_tracker_limit<br>Max: $slave_girl_list[_i].love_limit">><span style="color:crimson">$slave_girl_list[_i].love</span><</hovertip>>
</div>\
<div class="stats-cells-slavecard">\
<<hovertip "<<- setup.slave_stats.obedience.tooltip>>">><<-setup.slave_stats.obedience.icon>><</hovertip>>
<<hovertip "EXP: $slave_girl_list[_i].obedience_tracker / $slave_girl_list[_i].obedience_tracker_limit<br>Max: $slave_girl_list[_i].obedience_limit">><span style="color:cyan">$slave_girl_list[_i].obedience</span><</hovertip>>
</div>\
<div class="stats-cells-slavecard">\
<<hovertip "<<- setup.slave_stats.libido.tooltip>>">><<-setup.slave_stats.libido.icon>><</hovertip>>
<<hovertip "EXP: $slave_girl_list[_i].libido_tracker / $slave_girl_list[_i].libido_tracker_limit<br>Max: $slave_girl_list[_i].libido_limit">><span style="color:fuchsia">$slave_girl_list[_i].libido</span><</hovertip>>
</div>\
<div class="stats-cells-slavecard">\
<<hovertip "<<- setup.slave_stats.strength.tooltip>>">><<-setup.slave_stats.strength.icon>><</hovertip>>
<<hovertip "EXP: $slave_girl_list[_i].strength_tracker / $slave_girl_list[_i].strength_tracker_limit<br>Max: $slave_girl_list[_i].strength_limit">><span style="color:orange">$slave_girl_list[_i].strength</span><</hovertip>>
</div>\
<div class="stats-cells-slavecard">\
<<hovertip "<<- setup.slave_stats.intelligence.tooltip>>">><<-setup.slave_stats.intelligence.icon>><</hovertip>>
<<hovertip "EXP: $slave_girl_list[_i].intelligence_tracker / $slave_girl_list[_i].intelligence_tracker_limit<br>Max: $slave_girl_list[_i].intelligence_limit">><span style="color:darkorchid">$slave_girl_list[_i].intelligence</span><</hovertip>>
</div>\
<div class="stats-cells-slavecard">\
<<hovertip "<<- setup.slave_stats.stress.tooltip>>">><<-setup.slave_stats.stress.icon>><</hovertip>>
<strong><span style="color:slategray">$slave_girl_list[_i].cur_stress</span></strong>
</div>\
<div class="traits-cells-slavecard">\
<<for _t = 0; _t < $slave_girl_list[_i].traits.length; _t++>>\
<<print '<span style="color:'+$slave_girl_list[_i].traits[_t].color+'"><<hovertip "$slave_girl_list[_i].traits[_t].tooltip">>$slave_girl_list[_i].traits[_t].name<</hovertip>></span>'>><<if _t + 1 < $slave_girl_list[_i].traits.length>>, <</if>>\
<</for>>\
</div>\
<<elseif $slave_info === "Skills">>\
<div class="skills-cell-slavecard">\
<<hovertip "EXP: $slave_girl_list[_i].handjob_tracker / $slave_girl_list[_i].handjob_tracker_limit<br>Max: $slave_girl_list[_i].handjob_limit">>Handjob
$slave_girl_list[_i].handjob<</hovertip>>
</div>\
<div class="skills-cell-slavecard">\
<<hovertip "EXP: $slave_girl_list[_i].blowjob_tracker / $slave_girl_list[_i].blowjob_tracker_limit<br>Max: $slave_girl_list[_i].blowjob_limit">>Blowjob
$slave_girl_list[_i].blowjob<</hovertip>>
</div>\
<div class="skills-cell-slavecard">\
<<hovertip "EXP: $slave_girl_list[_i].titjob_tracker / $slave_girl_list[_i].titjob_tracker_limit<br>Max: $slave_girl_list[_i].titjob_limit">>Titjob
$slave_girl_list[_i].titjob<</hovertip>>
</div>\
<div class="skills-cell-slavecard">\
<<hovertip "EXP: $slave_girl_list[_i].footjob_tracker / $slave_girl_list[_i].footjob_tracker_limit<br>Max: $slave_girl_list[_i].footjob_limit">>Footjob
$slave_girl_list[_i].footjob<</hovertip>>
</div>\
<div class="skills-cell-slavecard">\
<<hovertip "EXP: $slave_girl_list[_i].missionary_tracker / $slave_girl_list[_i].missionary_tracker_limit<br>Max: $slave_girl_list[_i].missionary_limit">>Missionary
$slave_girl_list[_i].missionary<</hovertip>>
</div>\
<div class="skills-cell-slavecard">\
<<hovertip "EXP: $slave_girl_list[_i].cowgirl_tracker / $slave_girl_list[_i].cowgirl_tracker_limit<br>Max: $slave_girl_list[_i].cowgirl_limit">>Cowgirl
$slave_girl_list[_i].cowgirl<</hovertip>>
</div>\
<div class="skills-cell-slavecard">\
<<hovertip "EXP: $slave_girl_list[_i].doggy_tracker / $slave_girl_list[_i].doggy_tracker_limit<br>Max: $slave_girl_list[_i].doggy_limit">>Doggy
$slave_girl_list[_i].doggy<</hovertip>>
</div>\
<div class="skills-cell-slavecard">\
<<hovertip "EXP: $slave_girl_list[_i].anal_tracker / $slave_girl_list[_i].anal_tracker_limit<br>Max: $slave_girl_list[_i].anal_limit">>Anal
$slave_girl_list[_i].anal<</hovertip>>
</div>\
<</if>>\
<div class="button-cells-slavecard">\
<<capture _i, _hotKey>>\
<span @id="_hotKey"><<button "Fuck ^^_hotKey^^" "Choose Captured Sex">>\
<<set $cur_slave to $slave_girl_list[_i]>><<set $cur_slave_num to _i>><<set $captured_sex_type to "">><<set $slave_list_page to 0>>\
<</button>></span>\
<</capture>>\
</div>\
<div class="button-cells-slavecard">\
<<if $enslaved_bool === true>>\
<div class="offbutton">\
<<hovertip "Can only Enslave one Raider per night">><<button "Enslave">><</button>><</hovertip>>
</div>\
<<elseif $open_room === "">>\
<div class="offbutton">\
<<hovertip "No Open Rooms">><<button "Enslave">><</button>><</hovertip>>
</div>\
<<else>>\
<<capture _i, _shiftKey>>\
<span @id="_shiftKey"><<button "Enslave ^^[_hotKey]^^" "Enslave Confirm">>\
<<set $cur_slave to $slave_girl_list[_i]>><<set $cur_slave_num to _i>><<set $slave_list_page to 0>>\
<</button>></span>\
<</capture>>\
<</if>>\
</div>\
<div class="button-cells-slavecard">\
<<if $pc_blessing_list.includes(setup.annaBlessing_0.name)>>\
<<if $marketConnectionBool === true>>\
<<capture _i, _ctrlKey>>\
<span @id="_ctrlKey"><<button "Sell ^^(_hotKey)^^" "Confirm Sell Raider">>\
<<set $cur_slave to $slave_girl_list[_i]>><<set $cur_slave_num to _i>><<set $slave_list_page to 0>>\
<</button>></span>\
<</capture>>\
<<else>>\
<div class="offbutton">\
<<hovertip "Can only Sell one Raider per night">><<button "Sell">><</button>><</hovertip>>
</div>\
<</if>>\
<</if>>\
</div>\
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\<<if $captured_sex_type === "">>\
<<silently>>\
*Set Sex List*
<<set _list to $cur_slave.slave_pack.service_positions.concat($cur_slave.slave_pack.sex_positions)>>
ALPHABETIZE
<<set _list.sort(function (a, b) {
var
nameA = a.toUpperCase(),
nameB = b.toUpperCase();
if (nameA < nameB) {
return -1;
}
else if (nameA > nameB) {
return 1;
}
return 0;
});>>
<<set $captured_sex_type to $last_sex_type>>
*Display Info*
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Slave List]]>><<unset $captured_sex_type>><</button>></span>
</div>\
<div class="titlebox">\
Fucking $cur_slave.name
</div>\
<div class="listbox-sexlist">\
<<listbox "$captured_sex_type" autoselect>>\
<<optionsfrom _list>>
<</listbox>>\
<span id="forward"><<button [[Confirm|Choose Captured Sex]]>><</button>></span>
</div>\
<div class="picbox-sexlist">\
$cur_slave.body_pic
</div>\
</div>\
<<else>>\
<<silently>>\
*Choose Picture*
<<set _pic to $cur_slave.slave_pack[$captured_sex_type.toLowerCase()].random()>>
*Player Stats*
<<set $pc_sex_stats[$captured_sex_type.toLowerCase()]++>>
<<set $pc_sex_stats.total++>>
<<set $last_sex_type to $captured_sex_type>>
*EXP Gains*
LUST COLLECTOR BLESSSING
<<if $pc_blessing_list.includes("Lust Collector")>>
$cur_slave.exp BEFORE
LUST COLLECTOR TRIGGERED
<<set $cur_slave.exp += (Math.round($cur_slave.exp * setup.blessing_00_0.float)).clamp(1, 1000000)>>
$cur_slave.exp AFTER
<</if>>
<<PCLevelUp $cur_slave.exp>>
*Remove Slave from List*
<<set _fucked to $slave_girl_list.deleteAt($cur_slave_num)>>
*Add to Fucked List*
<<set $used_girl_list.push($captured_girl_list[$cur_slave_num])>>
<<set _removed to $captured_girl_list.deleteAt($cur_slave_num)>>
*Set Links*
<<if $slave_girl_list.length > 0>>
<<set _display_link to "Slaves">>
<<set _link to "Slave List">>
<<else>>
<<set _display_link to "View Report">>
<<set _link to "Daily Summary">>
<</if>>
*Display Info*
<</silently>>\
<div class="section">\
<div class="titlebox">\
Fucking $cur_slave.name
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[_display_link|_link]]>><<unset $cur_slave, $cur_slave_num, $captured_sex_type>><</button>></span>
</div>\
<div class="imagebox">\
_pic
</div>\
<div class="textbox-center">\
<<if _exp_gained > 0>>\
You've gained _exp_gained EXP.
<</if>>\
<<if _levelup_trigger === true>>\
You have gained _times_leveledup <<if _times_leveledup === 1>>level<<else>>levels<</if>>.
<</if>>\
<<if $pc_level === $pc_levelcap>>\
You cannot gain anymore levels in this Rank.
<</if>>\
<<if $slave_girl_list.length > 1>>\
There are still more girls to look at.
<<elseif $slave_girl_list.length === 1>>\
There is only one girl left tonight.
<<else>>\
There are no more captured girls left.
<</if>>\
</div>\
</div>\
<</if>>\<div id="section">\
<div class="cardholder-report">\
<div class="header-report">\
<strong><u>Detailed Report</u></strong>
</div>\
<div class="textbox-report-scroll">\
<ul>\
<<if $enslaved_girl != "">>\
<<if $enslaved_girl.item != "">>\
<li><<if $enslaved_girl.class === "Alchemist">>An<<else>>A<</if>> $enslaved_girl.class named $enslaved_girl.name was Captured by your $enslaved_girl.captured_by in Room $enslaved_girl.captured_in. You stole her <span style="color:gold">$enslaved_girl.item.name</span> and <span style="color:gold">$enslaved_girl.gold Gold</span>. Afterwords, you decided to keep her as your newest Slave. Your Threat is Locked and has increased by <span style="color:red">$enslaved_girl.threat</span>. Your Reputation has decreased by <span style="color:red">$enslaved_girl.reputation</span>.</li>
<<else>>\
<li><<if $enslaved_girl.class === "Alchemist">>An<<else>>A<</if>> $enslaved_girl.class named $enslaved_girl.name was Captured by your $enslaved_girl.captured_by in Room $enslaved_girl.captured_in. You stole <span style="color:gold">$enslaved_girl.gold Gold</span> from her. Afterwords, you decided to keep her as your newest Slave. Your Threat is Locked and has increased by <span style="color:red">$enslaved_girl.threat</span>. Your Reputation has decreased by <span style="color:red">$enslaved_girl.reputation</span>.</li>
<</if>>\
<</if>>\
<<for _i = 0; _i < $satisfied_girl_list.length; _i++>>\
<<set _cur_girl to $satisfied_girl_list[_i]>>\
<<if _cur_girl.treasure != "" && _cur_girl.gold === 0>>\
<li><<if _cur_girl.class === "Alchemist">>An<<else>>A<</if>> _cur_girl.class named _cur_girl.name cleared your Dungeon and looted your <span style="color:gold">_cur_girl.treasure.name</span>, but no <span style="color:gold">Gold</span>. Because she was satisfied with her loot, your Dungeon's Reputation was not damaged and your Threat was reduced by <span style="color:green">_cur_girl.threat</span>.</li>
<<else>>\
<li><<if _cur_girl.class === "Alchemist">>An<<else>>A<</if>> _cur_girl.class named _cur_girl.name cleared your Dungeon and looted your <span style="color:gold">_cur_girl.treasure.name</span> and <span style="color:gold">_cur_girl.gold Gold</span>. Because she was satisfied with her loot, your Dungeon's Reputation was not damaged and your Threat was reduced by <span style="color:green">_cur_girl.threat</span>.</li>
<</if>>\
<</for>>\
<<for _i = 0; _i < $unsatisfied_girl_list.length; _i++>>\
<<set _cur_girl to $unsatisfied_girl_list[_i]>>\
<<if _cur_girl.treasure != "" && _cur_girl.gold === 0>>\
<li><<if _cur_girl.class === "Alchemist">>An<<else>>A<</if>> _cur_girl.class named _cur_girl.name cleared your Dungeon. She looted your <span style="color:gold">_cur_girl.treasure.name</span>, but no <span style="color:gold">Gold</span>. Your Dungeon's Reputation was lowered by <span style="color:red">_cur_girl.reputation</span> and your Threat was reduced by <span style="color:green">_cur_girl.threat</span>.</li>
<<elseif _cur_girl.treasure != "" && _cur_girl.gold > 0>>\
<li><<if _cur_girl.class === "Alchemist">>An<<else>>A<</if>> _cur_girl.class named _cur_girl.name cleared your Dungeon. She looted your <span style="color:gold">_cur_girl.treasure.name</span> and <span style="color:gold">_cur_girl.gold Gold</span>. Your Dungeon's Reputation was lowered by <span style="color:red">_cur_girl.reputation</span> and your Threat was reduced by <span style="color:green">_cur_girl.threat</span>.</li>
<<elseif _cur_girl.gold > 0>>\
<li><<if _cur_girl.class === "Alchemist">>An<<else>>A<</if>> _cur_girl.class named _cur_girl.name cleared your Dungeon. There were no <span style="color:gold">Treasures</span> left, so she looted <span style="color:gold">_cur_girl.gold Gold</span>. Your Dungeon's Reputation was lowered by <span style="color:red">_cur_girl.reputation</span> and your Threat was reduced by <span style="color:green">_cur_girl.threat</span>.</li>
<<else>>\
<li><<if _cur_girl.class === "Alchemist">>An<<else>>A<</if>> _cur_girl.class named _cur_girl.name cleared your Dungeon, but there was nothing left in your Treasure room. She was upset and your Dungeon's Reputation was heavily damaged. It was lowered by <span style="color:red">_cur_girl.reputation</span> and your Threat was reduced by <span style="color:green">_cur_girl.threat</span>.</li>
<</if>>\
<</for>>\
<<for _i = 0; _i < $abandoned_girl_list.length; _i++>>\
<<set _cur_girl to $abandoned_girl_list[_i]>>\
<<if _cur_girl.abandoned_by === "Exhibitionist">>\
<li><<if _cur_girl.class === "Alchemist">>An<<else>>A<</if>> _cur_girl.class named _cur_girl.name Abandoned the Dungeon because she wanted to run around the town naked. Your Reputation was increased by <span style="color:green">_cur_girl.reputation</span>.</li>
<<elseif _cur_girl.abandoned_by === "Terror">>\
<li><<if _cur_girl.class === "Alchemist">>An<<else>>A<</if>> _cur_girl.class named _cur_girl.name Abandoned the Dungeon after you cast a Terror Spell on her. Your Reputation was increased by <span style="color:green">_cur_girl.reputation</span>.</li>
<<else>>\
<li><<if _cur_girl.class === "Alchemist">>An<<else>>A<</if>> _cur_girl.class named _cur_girl.name Abandoned her quest in Room _cur_girl.abandoned_in by the _cur_girl.abandoned_by. Your Reputation was increased by <span style="color:green">_cur_girl.reputation</span>.</li>
<</if>>\
<</for>>\
<<for _i = 0; _i < $released_girl_list.length; _i++>>\
<<set _cur_girl to $released_girl_list[_i]>>\
<<if _cur_girl.item != "">>\
<li><<if _cur_girl.class === "Alchemist">>An<<else>>A<</if>> _cur_girl.class named _cur_girl.name was Captured by your _cur_girl.captured_by in Room _cur_girl.captured_in. You stole her <span style="color:gold">_cur_girl.item.name</span> and <span style="color:gold">_cur_girl.gold Gold</span>. After releasing her, you gained <span style="color:green">_cur_girl.reputation</span> Reputation and your Threat was increased by <span style="color:red">_cur_girl.threat</span>.</li>
<<else>>\
<li><<if _cur_girl.class === "Alchemist">>An<<else>>A<</if>> _cur_girl.class named _cur_girl.name was Captured by your _cur_girl.captured_by in Room _cur_girl.captured_in. You stole <span style="color:gold">_cur_girl.gold Gold</span> from her. After releasing her, you gained <span style="color:green">_cur_girl.reputation</span> Reputation and your Threat was increased by <span style="color:red">_cur_girl.threat</span>.</li>
<</if>>\
<</for>>\
<<for _i = 0; _i < $used_girl_list.length; _i++>>\
<<set _cur_girl to $used_girl_list[_i]>>\
<<if $used_girl_list[_i].item != "">>\
<li><<if _cur_girl.class === "Alchemist">>An<<else>>A<</if>> _cur_girl.class named _cur_girl.name was Captured by your _cur_girl.captured_by in Room _cur_girl.captured_in. You stole her <span style="color:gold">_cur_girl.item.name</span> and <span style="color:gold">_cur_girl.gold Gold</span>. Because you fucked her before Releasing her, you gained <span style="color:green">_cur_girl.reputation</span> Reputation and your Threat was increased by <span style="color:red">_cur_girl.threat</span>.</li>
<<else>>\
<li><<if _cur_girl.class === "Alchemist">>An<<else>>A<</if>> _cur_girl.class named _cur_girl.name was Captured by your _cur_girl.captured_by in Room _cur_girl.captured_in. You stole <span style="color:gold">_cur_girl.gold Gold</span> from her. Because you fucked her before Releasing her, you gained <span style="color:green">_cur_girl.reputation</span> Reputation and your Threat was increased by <span style="color:red">_cur_girl.threat</span>.</li>
<</if>>\
<</for>>\
</ul>\
</div>\
</div>\
</div>\
<div class="exit-link-right">[[Back|Daily Summary]]</div>\<<silently>>\
*Variables*
<<set _event to "">> holds what the event passage will be
<<set $threat_trigger_news to false>> set to true if threat was locked but is now unlocked, trigger text in dungeon news textbox.
<<set $raiders to []>> Reset Raiders Array
* Onsen Amenity *
<<if $onsen.construction === true>>
<<set $onsen.construction_time-->>
<<if $onsen.construction_time <= 0>>
<<set $onsen.construction to false>>
<<set $onsen.construction_bool to true>>
<<set $onsen.built to true>>
<</if>>
<<elseif $onsen.built === true>>
<<set $onsen.update_bool to true>>
<</if>>
* Reset Slave Scold and Day Off Triggers *
<<for _i = 0; _i < $slave_room_list.length; _i++>>
<<if $slave_room_list[_i].room_type === "Slave">>
* Reset Day Off Bool or Count *
<<if $slave_room_list[_i].dayoff_bool === true>>
<<set $slave_room_list[_i].dayoff_count++>>
<<set $slave_room_list[_i].dayoff_bool to false>>
<<else>>
<<set $slave_room_list[_i].dayoff_count to 0>>
<</if>>
* Reset Day Off Bool or Count *
<<if $slave_room_list[_i].scolded_bool === true>>
<<set $slave_room_list[_i].scolded_count++>>
<<set $slave_room_list[_i].scolded_bool to false>>
<<else>>
<<set $slave_room_list[_i].scolded_count to 0>>
<</if>>
<</if>>
<</for>>
* Heal and Update Effects *
<<for _i = 0; _i < $dungeon_floor_list.length; _i++>>
<<if $dungeon_floor_list[_i].room_type != "Empty">>
<<DungeonEffects $dungeon_floor_list[_i] true>>
<<if $dungeon_floor_list[_i].room_type === "Creature">>
ENDLESS THIRST BLESSING
<<if $pc_blessing_list.includes("Endless Thirst")>>
<<if !$dungeon_floor_list[_i].effect_names.includes("Thirsting")>>
ADD NEW BLESSING EFFECT
<<set _newBuff to clone(setup.creature_effect)>>
<<set _newBuff.id to "Thirsting">>
<<set _newBuff.effect_types to setup.blessing_06_9.effect_types>>
<<set _newBuff.add to setup.blessing_06_9.add>>
<<set _newBuff.cap to setup.blessing_06_9.cap>>
<<set _newBuff.icon to setup.effect_icons.blessing>>
ADD EFFECT
<<set $dungeon_floor_list[_i].effects.push(_newBuff)>>
<<set $dungeon_floor_list[_i].effect_names.push(_newBuff.id)>>
ADDED ENDLESS THIRST TO $dungeon_floor_list[_i].name
<</if>>
<<for _e = 0; _e < $dungeon_floor_list[_i].effects.length; _e++>>
<<if $dungeon_floor_list[_i].effects[_e].id === "Thirsting">>
<<if $dungeon_floor_list[_i].effects[_e].hp_int < $dungeon_floor_list[_i].effects[_e].cap>>
INCREASE THIRST
<<set $dungeon_floor_list[_i].effects[_e].hp_int += $dungeon_floor_list[_i].effects[_e].add>>
UPDATE NAME AND TOOLTIP
<<set _count to $dungeon_floor_list[_i].effects[_e].hp_int / $dungeon_floor_list[_i].effects[_e].add>>
<<set $dungeon_floor_list[_i].effects[_e].name to "Thirsting x" + _count>>
<<set $dungeon_floor_list[_i].effects[_e].tooltip to "Increases @@.health;Health@@ by @@.health;" + $dungeon_floor_list[_i].effects[_e].hp_int + "@@. Increase this amount by @@.health;" + $dungeon_floor_list[_i].effects[_e].add + "@@ at the end of the night. (@@.health;" + $dungeon_floor_list[_i].effects[_e].hp_int + "@@/@@.health;" + $dungeon_floor_list[_i].effects[_e].cap + "@@)">>
TOOLTIP:
<<- $dungeon_floor_list[_i].effects[_e].tooltip>>
<</if>>
<<break>>
<</if>>
<</for>>
<</if>>
RESET LEVELS GAINED
<<set $dungeon_floor_list[_i].raid_levels_gained to 0>>
<<elseif $dungeon_floor_list[_i].room_type === "Trap">>
OTHER TRAP STUFF
<</if>>
<</if>>
<</for>>
*Restore Player Mana*
<<set $pc_cur_mana to $pc_max_mana>>
<<if $pc_mana_extra > 0>>
<<set $pc_cur_mana += $pc_mana_extra>>
<<set $pc_mana_extra to 0>>
<</if>>
* Restore Player's Energy *
<<set $pc_cur_energy to $pc_max_energy>>
<<if $pc_energy_extra > 0>>
<<set $pc_cur_energy += $pc_energy_extra>>
<<set $pc_energy_extra to 0>>
<</if>>
*Threat Locked cd decreases*
*Event Effects End*
<<set $current_event.event to false>>
*Increase Day Count*
<<set $days++>>
*End Raid Triggers*
<<set $is_raiding to false>>
* Reset Spells *
<<for _z = 0; _z < $pc_spellbook.length; _z++>>
ALLOW SPELLS TO BE CAST
<<set $pc_spellbook[_z].cast_bool to true>>
HEAL SUMMON CREATURES
<<if $pc_spellbook[_z].type === "Summoning">>
<<set $pc_spellbook[_z].hp_percent to 1>>
<</if>>
<</for>>
*Slave Market*
<<set $update_stat_values_bool to true>>
<<set $refresh_slave_market_cd-->>
<<set $slave_class_cd-->>
<<if $refresh_slave_market_cd <= 0>>
RESET TIMER
<<set $refresh_slave_market_cd to clone(setup.refresh_slave_market_timer)>>
SET BOOL TO TRUE
<<set $refresh_slave_market_bool to true>>
HOLD SPECIAL SLAVES
<<set _connectionsArray to []>>
<<for _s = 0; _s < $slave_market_list.length; _s++>>
<<if $slave_market_list[_s].connection_bool === true>>
<<set _connectionsArray.push(clone($slave_market_list[_s]))>>
<</if>>
<</for>>
SET NEXT AMOUNT OF SLAVES
<<set $slave_market_list to []>>
<<if _connectionsArray.length > 0>>
<<set $slave_market_list to $slave_market_list.concat(_connectionsArray)>>
<</if>>
<<set _num to random($slave_market_count_min, $slave_market_count_max)>>
<<for _n = 0; _n < _num; _n++>>
<<set $slave_market_list.push(setup.slave)>>
<</for>>
END CERTAIN EVENTS
<<set $high_demand_event to false>>
<</if>>
<<if $slave_class_cd <= 0>>
RESET TIMER
<<set $slave_class_cd to clone(setup.slave_class_timer)>>
SET BOOl
<<set $update_slave_class_bool to true>>
DISPLAY TEXT
<<set $slave_class_news to true>>
<</if>>
* Hired Raiders *
<<set $hired_raiders to []>>
<<set $cur_hire_count to $max_hire_count>>
* Treasure Shop Restock *
<<set $restock_treasure_shop_bool to true>>
* Quest Board CD *
<<set $quest_board_cd-->>
<<if $quest_board_cd <= 0>>
<<set $update_quest_board_bool to true>> updates quest board during next main menu passage
<<set $quest_board_cd to clone(setup.guild_quest_timer)>> resets quest board timer
<<set $new_slave_quest_bool to true>> displays new quests text in news feed
<</if>>
* Creature Keeper EXP Gained *
<<for _i = 0; _i < $keeper_list.length; _i++>>
<<if $keeper_list[_i].room_type === "Creature">>
<<set $keeper_list[_i].keeper_days++>>
<<if $keeper_list[_i].level < $creature_levelcap>>
<<set _exp to Math.round($keeper_exp * ($keeper_list[_i].level * $keeper_mod))>>
<<CreatureLevelUp $keeper_list[_i] $keeper_exp>>
<</if>>
<</if>>
<</for>>
*Add Conditional Events*
<<set _event_choice_list to clone(setup.event_data_list)>>
CHEAP LABOR
<<set _bool to false>>
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if $dungeon_floor_list[_z].built === false && $dungeon_floor_list[_z].rank <= $dungeon_rank>>
<<set _bool to true>>
<<break>>
<</if>>
<</for>>
<<for _z = 0; _z < $slave_room_list.length; _z++>>
<<if $slave_room_list[_z].built === false && $slave_room_list[_z].rank <= $dungeon_rank>>
<<set _bool to true>>
<<break>>
<</if>>
<</for>>
<<if _bool === true>>
<<set _event_choice_list.push(setup.cheap_labor)>>
<</if>>
RARE SLAVE
<<if $refresh_slave_market_bool === false>>
<<set _event_choice_list.push(setup.rare_slave)>>
<</if>>
HIGH DEMAND & BIG HAUL
<<if $refresh_slave_market_bool === true>>
<<set _event_choice_list.push(setup.high_demand)>>
<<set _event_choice_list.push(setup.big_haul)>>
<</if>>
THANK YOU
<<if $thank_you_event === false>>
<<set _event_choice_list.push(setup.thank_you)>>
<</if>>
*Roll for random Event*
<<set _rng to random(1, 100)>>
<<if setup.event_rate >= _rng || $days_without_event >= setup.max_days_between_events>>
<<set $days_without_event to 0>>
<<for _e = 0; _event === ""; _e++>>
<<set _event to _event_choice_list.random()>>
PREVENTS AN EVENT IF IT WAS ONE OF THE LAST TWO EVENTS
<<if _event.name === $previous_event.name || _event.name === $current_event.name>>
<<set _event to "">>
<</if>>
<<if _e >= 50>>
<<break>>
<</if>>
<</for>>
<<set $previous_event to $current_event>>
<<set $current_event to _event>>
<<set $current_event.event to true>>
<<else>>
INCREASE DAYS WITHOUT EVENT
<<set $days_without_event++>>
<</if>>
* Mission Log Update *
GODDESS MISSION
<<if $missionLog.goddess.num === 0 && $missionLog.goddess.unlocked === false && $dungeon_rank >= setup.goddessMisLine[$missionLog.goddess.num].rank && $days >= setup.goddessMisLine[$missionLog.goddess.num].days>>
<<set $missionLog.goddess.unlocked to true>>
<<set $newMission_bool to true>>
<<elseif $missionLog.goddess.num === 0 && $onsen.built === true && $missionLog.goddess.completed === false>>
<<set $missionLog.goddess.completed to true>>
<<set $newMission_bool to true>>
<</if>>
SARA MISSION
<<if $missionLog.sara.num === 0 && $missionLog.sara.unlocked === false>>
<<if $missionLog.sara.int >= setup.saraMisLine[$missionLog.sara.num].gold_goal>>
<<set $missionLog.sara.unlocked to true>>
<<set $newMission_bool to true>>
<</if>>
<</if>>
PATRICIAS MISSION
* Morning Gratitude *
<<if $pc_blessing_list.includes("Morning Gratitude")>>
<<MorningGratitudeService $slave_room_list>>
<</if>>
*Set Dream Gif and String*
<<set _dream_type_list to ["Tits", "Ass", "Pussy", "Lesbians"]>>
ADD 2 MOST USED SEX TYPES
<<set _sex_types to [$pc_total_handjob, $pc_total_missionary, $pc_total_cowgirl, $pc_total_blowjob, $pc_total_doggy, $pc_total_anal]>>
<<set _most to 5>>
<<set _second_most to 5>>
<<for _i = 0; _i < _sex_types.length; _i++>>
<<if _sex_types[_i] > _most>>
<<set _most to _sex_types[_i]>>
<<elseif _sex_types[_i] > _second_most>>
<<set _second_most to _sex_types[_i]>>
<</if>>
<</for>>
<<if $pc_total_handjob === _most || $pc_total_handjob === _second_most>>
<<set _dream_type_list.push("Hand Jobs")>>
<</if>>
<<if $pc_total_missionary === _most || $pc_total_missionary === _second_most>>
<<set _dream_type_list.push("Missionary")>>
<</if>>
<<if $pc_total_cowgirl === _most || $pc_total_cowgirl === _second_most>>
<<set _dream_type_list.push("Cow Girl")>>
<</if>>
<<if $pc_total_blowjob === _most || $pc_total_blowjob === _second_most>>
<<set _dream_type_list.push("Blow Job")>>
<</if>>
<<if $pc_total_doggy === _most || $pc_total_doggy === _second_most>>
<<set _dream_type_list.push("Doggy")>>
<</if>>
<<if $pc_total_anal === _most || $pc_total_anal === _second_most>>
<<set _dream_type_list.push("Anal")>>
<</if>>
ADD BONDAGE GIF
<<if $training_hall.built === true>>
<<set _dream_type_list.push("Bondage")>>
<</if>>
PICK RANDOM GIF TYPE
<<set _dream_type to _dream_type_list.random()>>
<<switch _dream_type>>
<<case "Tits">>
<<set _rng to random(5)>>
<<switch _rng>>
<<case 0>>
<<set _string to "You dream about titty fucking in the shower.">>
<<set _gif to "[img[gifs/dreams/tits/0.gif]]">>
<<case 1>>
<<set _string to "You dream about your cock getting sandwich between two pairs of tits.">>
<<set _gif to "[img[gifs/dreams/tits/1.gif]]">>
<<case 2>>
<<set _string to "You dream about one day learning a spell that can make a girl's tits expand to any size you desire.">>
<<set _gif to "[img[gifs/dreams/tits/2.gif]]">>
<<case 3>>
<<set _string to "You dream about feeling up a random girl at the local onsen.">>
<<set _gif to "[img[gifs/dreams/tits/3.gif]]">>
<<case 4>>
<<set _string to "You dream about big, bouncy, tits coming out to play.">>
<<set _gif to "[img[gifs/dreams/tits/4.gif]]">>
<<case 5>>
<<set _string to "You dream about touching the perfect pair of breasts.">>
<<set _gif to "[img[gifs/dreams/tits/5.gif]]">>
<</switch>>
<<case "Ass">>
<<set _rng to random(5)>>
<<switch _rng>>
<<case 0>>
<<set _string to "You dream about grinding your dick between someone's thick ass cheeks.">>
<<set _gif to "[img[gifs/dreams/ass/0.gif]]">>
<<case 1>>
<<set _string to "You dream about using a girl's thighs to get off.">>
<<set _gif to "[img[gifs/dreams/ass/1.gif]]">>
<<case 2>>
<<set _string to "You dream about getting sat on and eating them out.">>
<<set _gif to "[img[gifs/dreams/ass/2.gif]]">>
<<case 3>>
<<set _string to "You dream about spanking a sexy ass.">>
<<set _gif to "[img[gifs/dreams/ass/3.gif]]">>
<<case 4>>
<<set _string to "You dream about squeezing some sweet cheeks.">>
<<set _gif to "[img[gifs/dreams/ass/4.gif]]">>
<<case 5>>
<<set _string to "You dream about a girl teasing you.">>
<<set _gif to "[img[gifs/dreams/ass/5.gif]]">>
<</switch>>
<<case "Pussy">>
<<set _rng to random(5)>>
<<switch _rng>>
<<case 0>>
<<set _string to "You dream about a woman touching herself in heat.">>
<<set _gif to "[img[gifs/dreams/pussy/0.gif]]">>
<<case 1>>
<<set _string to "You dream about a girl who is dripping wet, begging for you.">>
<<set _gif to "[img[gifs/dreams/pussy/1.gif]]">>
<<case 2>>
<<set _string to "You dream about a shy girl playing with herself in public.">>
<<set _gif to "[img[gifs/dreams/pussy/2.gif]]">>
<<case 3>>
<<set _string to "You dream about a slut squirting hard.">>
<<set _gif to "[img[gifs/dreams/pussy/3.gif]]">>
<<case 4>>
<<set _string to "You dream about fingering a slut until she cums.">>
<<set _gif to "[img[gifs/dreams/pussy/4.gif]]">>
<<case 5>>
<<set _string to "You dream about eating a whore out in a forest.">>
<<set _gif to "[img[gifs/dreams/pussy/5.gif]]">>
<</switch>>
<<case "Lesbians">>
<<set _rng to random(5)>>
<<switch _rng>>
<<case 0>>
<<set _string to "You dream about a group of lesbians sucking a girl dry.">>
<<set _gif to "[img[gifs/dreams/lesbians/0.gif]]">>
<<case 1>>
<<set _string to "You dream about lesbians grinding against each other.">>
<<set _gif to "[img[gifs/dreams/lesbians/1.gif]]">>
<<case 2>>
<<set _string to "You dream about school girls fingering after class.">>
<<set _gif to "[img[gifs/dreams/lesbians/2.gif]]">>
<<case 3>>
<<set _string to "You dream about a girl getting eaten out.">>
<<set _gif to "[img[gifs/dreams/lesbians/3.gif]]">>
<<case 4>>
<<set _string to "You dream about some kinky lesbian shit.">>
<<set _gif to "[img[gifs/dreams/lesbians/4.gif]]">>
<<case 5>>
<<set _string to "You dream a girl getting raped by her maids.">>
<<set _gif to "[img[gifs/dreams/lesbians/5.gif]]">>
<</switch>>
<<case "Hand Job">>
<<set _rng to random(2)>>
<<switch _rng>>
<<case 0>>
<<set _string to "You dream about blowing your load in someone's mouth after getting a hand job.">>
<<set _gif to "[img[gifs/dreams/handjob/0.gif]]">>
<<case 1>>
<<set _string to "You dream about getting jerked off in the library.">>
<<set _gif to "[img[gifs/dreams/handjob/1.gif]]">>
<<case 2>>
<<set _string to "You dream about getting your big cock worshipped.">>
<<set _gif to "[img[gifs/dreams/handjob/2.gif]]">>
<</switch>>
<<case "Missionary">>
<<set _rng to random(2)>>
<<switch _rng>>
<<case 0>>
<<set _string to "You dream about dominating a girl underneath you.">>
<<set _gif to "[img[gifs/dreams/missionary/0.gif]]">>
<<case 1>>
<<set _string to "You dream about plowing a big titty nun.">>
<<set _gif to "[img[gifs/dreams/missionary/1.gif]]">>
<<case 2>>
<<set _string to "You dream about bringing a Kimono girl back to your place for some fun.">>
<<set _gif to "[img[gifs/dreams/missionary/2.gif]]">>
<</switch>>
<<case "Cow Girl">>
<<set _rng to random(2)>>
<<switch _rng>>
<<case 0>>
<<set _string to "You dream about busty nurse riding your cock.">>
<<set _gif to "[img[gifs/dreams/cowgirl/0.gif]]">>
<<case 1>>
<<set _string to "You dream about getting ridden hard.">>
<<set _gif to "[img[gifs/dreams/cowgirl/1.gif]]">>
<<case 2>>
<<set _string to "You dream about having two girls riding you.">>
<<set _gif to "[img[gifs/dreams/cowgirl/2.gif]]">>
<</switch>>
<<case "Blow Job">>
<<set _rng to random(2)>>
<<switch _rng>>
<<case 0>>
<<set _string to "You dream about forcing your cock down a waitress' throat.">>
<<set _gif to "[img[gifs/dreams/blowjob/0.gif]]">>
<<case 1>>
<<set _string to "You dream about getting your cock licked clean by two girls.">>
<<set _gif to "[img[gifs/dreams/blowjob/1.gif]]">>
<<case 2>>
<<set _string to "You dream about getting you dick sucked off all night.">>
<<set _gif to "[img[gifs/dreams/blowjob/2.gif]]">>
<</switch>>
<<case "Doggy">>
<<set _rng to random(2)>>
<<switch _rng>>
<<case 0>>
<<set _string to "You dream about punishing a maid from behind all night long.">>
<<set _gif to "[img[gifs/dreams/doggy/0.gif]]">>
<<case 1>>
<<set _string to "You dream about bending over a student in front of her class.">>
<<set _gif to "[img[gifs/dreams/doggy/1.gif]]">>
<<case 2>>
<<set _string to "You dream about fucking a girl in front of her friend.">>
<<set _gif to "[img[gifs/dreams/doggy/2.gif]]">>
<</switch>>
<<case "Anal">>
<<set _rng to random(2)>>
<<switch _rng>>
<<case 0>>
<<set _string to "You dream about becoming one with nature.">>
<<set _gif to "[img[gifs/dreams/anal/0.gif]]">>
<<case 1>>
<<set _string to "You dream about coming in her backdoor.">>
<<set _gif to "[img[gifs/dreams/anal/1.gif]]">>
<<case 2>>
<<set _string to "You dream about filling both her holes.">>
<<set _gif to "[img[gifs/dreams/anal/2.gif]]">>
<</switch>>
<<case "Bondage">>
<<set _rng to random(2)>>
<<switch _rng>>
<<case 0>>
<<set _string to "You dream new ways to train you slaves.">>
<<set _gif to "[img[gifs/dreams/bondage/0.gif]]">>
<<case 1>>
<<set _string to "You dream about using you cock to discipline your slaves.">>
<<set _gif to "[img[gifs/dreams/bondage/1.gif]]">>
<<case 2>>
<<set _string to "You dream spanking your slaves into submission.">>
<<set _gif to "[img[gifs/dreams/bondage/2.gif]]">>
<</switch>>
<</switch>>
* Set Next Link *
<<if $current_event.event === true>>
<<set _link to "New Event">>
<<elseif $morning_job>>
<<set $cur_job to clone($morning_job)>>
<<unset $morning_job>>
<<set _link to $cur_job.passage>>
<<else>>
<<set _link to "Main Menu">>
<</if>>
*Display*
<</silently>>\
<div class="wrapper">\
<div class="titlebox">\
Dreaming
</div>\
<div class="imagebox">\
_gif
</div>\
<div class="textbox-center">\
_string
A new day awaits you...
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[Next Day|_link]]>><</button>></span>
</div>\
</div>\
<<silently>>\
/* Save File Default Name */
Main Menu Day $days
*Variables*
<<set _news_display to "">> Holds the string that will be shown to the player in the Dungeon News area
<<set _rare_rate_mod to 1>> Reduces the chance of seeing rare items in the treasure shop by this amount after a rare item is stocked
<<set _uncommon_rate_mod to 5>> Reduces the chance of seeing uncommon items in the treasure shop by this amount after an uncommon item is stocked
<<set _min_start_stress_float to 0.25>> min starting stress slaves start with
<<set _max_start_stress_float to 0.3>> max ....
* Update Version *
<<UpdateVersion>>
*Empty Room Check*
If any room is empty and unlocked, the player cannot start the raids
<<set _empty_bool to false>>
<<for _i = 0; _i < $dungeon_floor_list.length; _i++>>
<<if $dungeon_floor_list[_i].room_type === "Empty" && $dungeon_floor_list[_i].built === true>>
<<set _empty_bool to true>>
<<break>>
<</if>>
<</for>>
* Update Global Treasure Stock *
<<UpdateGlobalStock>>
* Restock Treasure Shop *
<<if $restock_treasure_shop_bool === true>>
VARIABLES
<<set _base_rare to -0.05>>
<<set _rare_mod to 0.03>>
<<set _base_uncommon to 0.05>>
<<set _uncommon_mod to 0.04>>
<<set _rare_count to 0>> Add a rare treasure for each count
<<set _uncommon_count to 0>> Add a uncommon treasure for each count
SET BOOL TO FALSE
<<set $restock_treasure_shop_bool to false>>
SET TREASURE RATE
<<set _rare_rate to _base_rare + (_rare_mod * $dungeon_rank)>>
<<set _uncommon_rate to _base_uncommon + (_uncommon_mod * $dungeon_rank)>>
TRADE HERO
<<if $pc_blessing_list.includes("Trade Hero")>>
<<set _rare_rate += setup.saraBlessing_0.rare_float>>
<<set _uncommon_rate += setup.saraBlessing_0.uncommon_float>>
<</if>>
SET INVENTORY
<<set $treasureshop_inventory to []>>
SET NUMBER OF TREASURES
<<set _stock_count to random($treasureshop_inv_min, $treasureshop_inv_max)>>
TRADE HERO
<<if $pc_blessing_list.includes("Trade Hero")>>
<<set _stock_count += random(setup.saraBlessing_0.min_int, setup.saraBlessing_0.max_int)>>
<</if>>
OVERSTOCKED
<<if $current_event.event === true && $current_event.name === setup.overstocked.name>>
<<set _stock_count to Math.round(_stock_count * setup.overstocked.mult)>>
<</if>>
<<for _i = 0; _i < _stock_count; _i++>>
<<set _rng to (randomFloat(0.999)).toFixed(3)>>
RNG IS _rng
<<if (_rare_rate > _rng || _rare_count > 0) && $global_treasure_stock.rare.length > 0>>
ADD RARE TREASURE TO SHOP
<<set _rare_count-->>
<<SetRareTreasure>>
<<set $treasureshop_inventory.push(_newTreasure.name)>>
<<continue>>
<</if>>
<<if (_uncommon_rate > _rng || _uncommon_count > 0) && $global_treasure_stock.uncommon.length > 0>>
ADD UNCOMMON TREASURE TO SHOP
<<set _uncommon_count-->>
<<SetUncommonTreasure>>
<<set $treasureshop_inventory.push(_newTreasure.name)>>
<<continue>>
<</if>>
<<SetCommonTreasure>>
<<set $treasureshop_inventory.push(_newTreasure.name)>>
<</for>>
ADD TREASURES FROM OTHER SOURCES
TREASURES SOLD AT END OF RAID
<<set $treasureshop_inventory to $treasureshop_inventory.concat($raidtreasure_list)>>
<</if>>
*Update Slave Stat and Skill Values*
<<if $update_stat_values_bool === true>>
<<set $update_stat_values_bool to false>>
<<for _z = 0; _z < $market_statInfo_list.length; _z++>>
<<set $market_statInfo_list[_z].value to random($market_statInfo_list[_z].min, $market_statInfo_list[_z].max)>>
<</for>>
<<for _z = 0; _z < $market_skillInfo_list.length; _z++>>
<<set $market_skillInfo_list[_z].value to random($market_skillInfo_list[_z].min, $market_skillInfo_list[_z].max)>>
<</for>>
<<set _most_value_stat to $market_statInfo_list.random()>> chooses a most valued stat as a starting point
<<set _least_value_stat to $market_statInfo_list.random()>> chooses a least valued stat as a starting point
<<set _most_value_skill to $market_skillInfo_list.random()>>
<<set _least_value_skill to $market_skillInfo_list.random()>>
<<set _value_mod to 0.2>> increase or decreases the amount of the most valued or least valued stat by this amount
DETERMINE MOST AND LEAST VALUED STATS AND SKILLS
<<for _i = 0; _i < $market_statInfo_list.length; _i++>>
<<if $market_statInfo_list[_i].value > _most_value_stat.value>>
<<set _most_value_stat to $market_statInfo_list[_i]>>
<<elseif $market_statInfo_list[_i].value < _least_value_stat.value>>
<<set _least_value_stat to $market_statInfo_list[_i]>>
<</if>>
<</for>>
<<for _i = 0; _i < $market_skillInfo_list.length; _i++>>
<<if $market_skillInfo_list[_i].value > _most_value_skill.value>>
<<set _most_value_skill to $market_skillInfo_list[_i]>>
<<elseif $market_skillInfo_list[_i].value < _least_value_skill.value>>
<<set _least_value_skill to $market_skillInfo_list[_i]>>
<</if>>
<</for>>
<<for _i = 0; _i < $market_statInfo_list.length; _i++>>
<<if $market_statInfo_list[_i].name === _most_value_stat.name>>
<<set _amount to Math.round($market_statInfo_list[_i].value * _value_mod)>>
<<set $market_statInfo_list[_i].value += _amount>>
<<set $most_valued_stat to $market_statInfo_list[_i].name>>
<<continue>>
<<elseif $market_statInfo_list[_i].name === _least_value_stat.name>>
<<set _amount to Math.round($market_statInfo_list[_i].value * _value_mod)>>
<<set $market_statInfo_list[_i].value -= _amount>>
<<set $least_valued_stat to $market_statInfo_list[_i].name>>
<<continue>>
<</if>>
<</for>>
<<for _i = 0; _i < $market_skillInfo_list.length; _i++>>
<<if $market_skillInfo_list[_i].name === _most_value_skill.name>>
<<set _amount to Math.round($market_skillInfo_list[_i].value * _value_mod)>>
<<set $market_skillInfo_list[_i].value += _amount>>
<<set $most_valued_skill to $market_skillInfo_list[_i].name>>
<<continue>>
<<elseif $market_skillInfo_list[_i].name === _least_value_skill.name>>
<<set _amount to Math.round($market_skillInfo_list[_i].value * _value_mod)>>
<<set $market_skillInfo_list[_i].value -= _amount>>
<<set $least_valued_skill to $market_skillInfo_list[_i].name>>
<<continue>>
<</if>>
<</for>>
<</if>>
*Refresh Slave Market*
<<if $refresh_slave_market_bool === true>>
<<set $refresh_slave_market_bool to false>>
<<set $slave_market_news to true>>
<<set $rare_slave_news to false>>
SET HOT TRAITS
<<set $hot_traits to []>>
<<set _trait_options to setup.pos_slave_trait_array>>
<<set $hot_traits to _trait_options.randomMany(3)>>
*Grind Slaves*
SET SLAVE PACK ARRAYS
<<set _unused_slave_packs to {
slender: [],
average: [],
busty: []
}>>
<<set _used_slave_packs to {
slender: [],
average: [],
busty: []
}>>
<<for _i = 0; _i < $slave_pack_array.length; _i++>>
<<if $slave_pack_array[_i].body_type === "busty">>
<<set _unused_slave_packs.busty.push($slave_pack_array[_i])>>
<<elseif $slave_pack_array[_i].body_type === "slender">>
<<set _unused_slave_packs.slender.push($slave_pack_array[_i])>>
<<elseif $slave_pack_array[_i].body_type === "average">>
<<set _unused_slave_packs.average.push($slave_pack_array[_i])>>
<</if>>
<</for>>
SET SLAVE RANK AND TRAIT PERCENT
<<for _i = 0; _i < $slave_market_list.length; _i++>>
<<if $slave_market_list[_i].grinded === false>>
DETERMINE RATING
<<set _rng to random(1, 100)>>
<<if $slave_market_percent.master >= _rng>>
<<set $slave_market_list[_i].rating to "Master">>
<<set _rare_rate to setup.rare_slave_trait_rate * 3.5>>
<<set _market_rate to setup.market_slave_trait_rate * 3.5>>
<<elseif $slave_market_percent.veteran >= _rng>>
<<set $slave_market_list[_i].rating to "Veteran">>
<<set _rare_rate to setup.rare_slave_trait_rate * 3>>
<<set _market_rate to setup.market_slave_trait_rate * 3>>
<<elseif $slave_market_percent.expert >= _rng>>
<<set $slave_market_list[_i].rating to "Expert">>
<<set _rare_rate to setup.rare_slave_trait_rate * 2.5>>
<<set _market_rate to setup.market_slave_trait_rate * 2.5>>
<<elseif $slave_market_percent.adept >= _rng>>
<<set $slave_market_list[_i].rating to "Adept">>
<<set _rare_rate to setup.rare_slave_trait_rate * 2>>
<<set _market_rate to setup.market_slave_trait_rate * 2>>
<<elseif $slave_market_percent.novice >= _rng>>
<<set $slave_market_list[_i].rating to "Novice">>
<<set _rare_rate to setup.rare_slave_trait_rate * 1.5>>
<<set _market_rate to setup.market_slave_trait_rate * 1.5>>
<<else>>
<<set $slave_market_list[_i].rating to "Rookie">>
<<set _rare_rate to clone(setup.rare_slave_trait_rate)>>
<<set _market_rate to clone(setup.market_slave_trait_rate)>>
<</if>>
<<SlaveGrinder $slave_market_list[_i] setup.market_virgin_rate _rare_rate _market_rate 0>>
ADD STRESS
<<set $slave_market_list[_i].cur_stress to random(setup.min_start_stress, setup.max_start_stress)>>
<</if>>
<</for>>
<</if>>
*Add Rare Slave to Market*
<<if $rare_slave_bool === true>>
<<set $rare_slave_bool to false>>
<<set $rare_slave_news to true>>
SET SLAVE PACK ARRAYS
<<set _unused_slave_packs to {
slender: [],
average: [],
busty: []
}>>
<<set _used_slave_packs to {
slender: [],
average: [],
busty: []
}>>
<<for _i = 0; _i < $slave_pack_array.length; _i++>>
<<if $slave_pack_array[_i].body_type === "busty">>
<<set _unused_slave_packs.busty.push($slave_pack_array[_i])>>
<<elseif $slave_pack_array[_i].body_type === "slender">>
<<set _unused_slave_packs.slender.push($slave_pack_array[_i])>>
<<elseif $slave_pack_array[_i].body_type === "average">>
<<set _unused_slave_packs.average.push($slave_pack_array[_i])>>
<</if>>
<</for>>
DETERMINE RATING
<<switch $dungeon_rank>>
<<case 1>>
<<set $rare_slave.rating to "Novice">>
<<case 2>>
<<set $rare_slave.rating to "Adept">>
<<case 3>>
<<set $rare_slave.rating to "Expert">>
<<case 4>>
<<set $rare_slave.rating to "Veteran">>
<<case 5>>
<<set $rare_slave.rating to "Master">>
<</switch>>
ADD STATS
<<set $rare_slave.obedience++>>
<<set $rare_slave.libido++>>
<<set $rare_slave.strength++>>
<<set $rare_slave.intelligence++>>
<<SlaveGrinder $rare_slave setup.rare_slave.virgin_trait setup.rare_slave.rare_trait setup.rare_slave.market_trait 0>>
ADD STRESS
<<set $rare_slave.cur_stress to random(setup.min_start_stress, setup.max_start_stress)>>
ADD TO MARKET
<<set $slave_market_list.push($rare_slave)>>
<</if>>
* Quest Board Update *
<<if $update_quest_board_bool === true>>
<<set $update_quest_board_bool to false>>
<<set $quest_board_news to true>>
REMEMBER ANY SPECIAL QUESTS
<<set _special_quest_holder to []>>
<<for _z = 0; _z < $quest_board_list.length; _z++>>
<<if $quest_board_list[_z].type === "Special">>
<<set _special_quest_holder.push($quest_board_list[_z])>>
<</if>>
<</for>>
REMOVE OLD QUESTS
<<set $quest_board_list to []>>
CHOOSE HOW MANY QUEST WILL BE POSTED
<<set _posting_amount to random($min_quests_posted, $max_quests_posted)>>
CREATE LIST OF OPTIONS
<<set _trivialList to {
list: clone(setup.trivialQuestList),
percent: 0
}>>
<<set _easyList to {
list: clone(setup.easyQuestList),
percent: 0
}>>
<<set _options to [_trivialList, _easyList]>>
SET PERCENT AMOUNT
<<switch $dungeon_rank>>
<<case 1>>
<<set _diffPercent to [100, 20, 0, 0]>>
<<case 2>>
<<set _diffPercent to [40, 100, 20, 0]>>
<<case 3>>
<<set _diffPercent to [20, 40, 100, 20]>>
<<default>>
<<set _diffPercent to [20, 20, 100, 40]>>
<</switch>>
<<for _z = 0; _z < _options.length; _z++>>
<<set _options[_z].percent to _diffPercent[_z]>>
<<for _q = 0; _q < _options[_z].list.length; _q++>>
<<if _options[_z].list[_q].rank > $dungeon_rank>>
REMOVED _options[_z].list[_q].name QUEST
<<set _delete to _options[_z].list.deleteAt(_q)>>
<<set _q-->>
<</if>>
<</for>>
<</for>>
REORDER LIST
<<set _options.sort(function (a, b) { return a.percent - b.percent; });>>
POST NEW QUESTS
<<for _i = _posting_amount; _i > 0; _i-->>
<<for _z = 0; _z < _options.length; _z++>>
<<if _options[_z].percent === 0>>
<<continue>>
<</if>>
<<set _rng to random(1, 100)>>
<<if _options[_z].percent >= _rng || _options[_z].percent === 100 || _z === _options.length - 1>>
<<set _newQuest to _options[_z].list.pluck()>>
<<if _options[_z].list.length === 0>>
<<set _delete to _options.deleteAt(_z)>>
<</if>>
<<break>>
<</if>>
<</for>>
CREATE QUEST
<<QuestGrinder _newQuest>>
<</for>>
* Add Back Special Quests *
<<if _special_quest_holder.length > 0>>
<<set $quest_board_list to $quest_board_list.concat(_special_quest_holder)>>
<</if>>
<</if>>
* Slave Class Update *
<<if $update_slave_class_bool === true>>
<<set $update_slave_class_bool to false>>
<<set $slave_class_news to true>>
REMEMBER ANY SPECIAL QUESTS
<<set _special_class_holder to []>>
<<for _z = 0; _z < $slave_class_list.length; _z++>>
<<if $quest_board_list[_z].type === "Special">>
<<set _special_class_holder.push($slave_class_list[_z])>>
<</if>>
<</for>>
REMOVE OLD CLASSES
<<set $slave_class_list to []>>
CHOOSE HOW MANY CLASSES WILL BE POSTED
<<set _posting_amount to random($min_classes_posted, $max_classes_posted)>>
CREATE LIST OF OPTIONS
<<set _introductionList to {
list: clone(setup.introductionClassList),
percent: 0
}>>
<<set _beginnerList to {
list: clone(setup.beginnerClassList),
percent: 0
}>>
<<set _options to [_introductionList, _beginnerList]>>
SET PERCENT AMOUNT
<<switch $dungeon_rank>>
<<case 1>>
<<set _diffPercent to [100, 20, 0, 0]>>
<<case 2>>
<<set _diffPercent to [40, 100, 20, 0]>>
<<case 3>>
<<set _diffPercent to [20, 40, 100, 20]>>
<<default>>
<<set _diffPercent to [20, 20, 100, 40]>>
<</switch>>
<<for _z = 0; _z < _options.length; _z++>>
<<set _options[_z].percent to _diffPercent[_z]>>
<<for _q = 0; _q < _options[_z].list.length; _q++>>
<<if _options[_z].list[_q].rank > $dungeon_rank>>
REMOVED _options[_z].list[_q].name CLASS
<<set _delete to _options[_z].list.deleteAt(_q)>>
<<set _q-->>
<</if>>
<</for>>
<</for>>
REORDER LIST
<<set _options.sort(function (a, b) { return a.percent - b.percent; });>>
POST NEW QUESTS
<<for _i = _posting_amount; _i > 0; _i-->>
<<for _z = 0; _z < _options.length; _z++>>
<<if _options[_z].percent === 0>>
<<continue>>
<</if>>
<<set _rng to random(1, 100)>>
<<if _options[_z].percent >= _rng || _options[_z].percent === 100 || _z === _options.length - 1>>
<<set _newClass to _options[_z].list.pluck()>>
<<if _options[_z].list.length === 0>>
<<set _delete to _options.deleteAt(_z)>>
<</if>>
<<break>>
<</if>>
<</for>>
CREATE CLASS
<<ClassGrinder _newClass>>
<</for>>
* Add Back Special Classes *
<<if _special_class_holder.length > 0>>
<<set $slave_class_list to $slave_class_list.concat(_special_class_holder)>>
<</if>>
<</if>>
* Onsen *
<<if $onsen.built === true && $onsen.update_bool === true>>
<<set $onsen.update_bool to false>>
<<set $onsen.goddess_bool to false>> remove ahri from onsen
<<set $onsen.users to []>> resets slaves in onsen
<<set _onsen_limit to 3>> number of people that can use the onsen at one time
<<set _goddess_percent to 4>> percent chance that goddess can be found in the onsen
<<set _slave_percent to 16>> percent chance that the raider can be found in the onsen
GODDESS CHECK
<<set _rng to random(1, 100)>>
<<if _goddess_percent >= _rng>>
<<set $onsen.goddess_bool to true>>
<<set _onsen_limit-->>
<</if>>
SLAVE CHECK
<<for _z = 0; _z < $slave_room_list.length; _z++>>
<<if $slave_room_list[_z].room_type === "Slave">>
<<if $slave_room_list[_z].injured === false && $slave_room_list[_z].disobedient === false && $slave_room_list[_z].class_cd <= 0 && $slave_room_list[_z].quest_cd <= 0 && $onsen.users.length < _onsen_limit>>
<<set _rng to random(1, 100)>>
<<if _slave_percent >= _rng>>
<<set $onsen.users.push($slave_room_list[_z].index)>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
* Hints *
<<set _hint to setup.hint_list.random()>>
<</silently>>\
<div class="wrapper">\
<div class="hints-main-menu">\
<div class="hints-picbox-main-menu">\
[img[images/mistress/face.jpg]]
</div>\
<div class="hints-textbox-main-menu">\
_hint
</div>\
</div>\
<div class="bodybox-main-menu">\
<div class="buttonholder-main-menu">\
<div class="buttoncells-main-menu">\
<div class="menubutton">\
<span id="1"><<button "Dungeon Manager ^^1^^" "Dungeon Floor Manager">><</button>></span>
</div>\
</div>\
<div class="buttoncells-main-menu">\
<div class="menubutton">\
<span id="2"><<button "Slave Rooms ^^2^^" "Slave Room Manager">><</button>></span>
</div>\
</div>\
<div class="buttoncells-main-menu">\
<div class="menubutton">\
<span id="3"><<button "Amenities ^^3^^" "Amenities">><</button>></span>
</div>\
</div>\
<div class="buttoncells-main-menu">\
<div class="menubutton">\
<span id="4"><<button "Town ^^4^^" "Town Menu">><</button>></span>
</div>\
</div>\
<div class="buttoncells-main-menu">\
<div class="menubutton">\
<span id="5"><<button "Guidebook ^^5^^" "Guidebook">><</button>></span>
</div>\
</div>\
<div class="buttoncells-main-menu">\
<div class="menubutton">\
<span id="6"><<button "Slave Packs ^^6^^" "Slave Pack Menu">><</button>></span>
</div>\
</div>\
<div class="buttoncells-main-menu">\
<div class="menubutton">\
<span id="7"><<button "Save/Load ^^7^^">><<script>>UI.saves()<</script>><</button>></span>
</div>\
</div>\
<div class="buttoncells-main-menu">\
<div class="raidbutton">\
<<if _empty_bool === true>>\
<span id="8"><<button "End Day ^^8^^" "Empty Dungeon Warning">><</button>></span>
<<elseif $treasureroom_size < $treasureroom_inventory.length>>\
<span id="8"><<button "End Day ^^8^^" "Treasure Vault Warning">><</button>></span>
<<else>>\
<span id="8"><<button "End Day ^^8^^" "Pre Raid Report">><</button>></span>
<</if>>\
</div>\
</div>\
</div>\
<div class="infoholder-main-menu">\
<div class="event-holder-main-menu">\
<div class="event-box-main-menu">\
<div class="event-title-main-menu">\
<<if $current_event.event === true>>\
$current_event.name
<<else>>\
No Events
<</if>>\
</div>\
<div class="event-text-main-menu">\
<<if $current_event.event === true>>\
$current_event.description
<</if>>\
</div>\
</div>\
</div>\
<div class="dungeon-holder-main-menu">\
<div class="dungeon-box-main-menu">\
<div class="dungeon-title-main-menu">\
Dungeon News
</div>\
<div class="dungeon-text-main-menu">\
<ul>\
<<if $game_over_count === 1 && $difficulty != "casual">>\
<li><span style="color:red"><strong>Warning!</strong> If you end the next two nights with 0 Gold, you will be forced to leave your Dungeon!</span></li>\
<<elseif $game_over_count === 2 && $difficulty != "casual">>\
<li><span style="color:red"><strong>Warning!</strong> If you end the tonight with 0 Gold, you will be forced to leave your Dungeon!</span></li>\
<</if>>\
<<if $treasureroom_size < $treasureroom_inventory.length>>\
<li>@@.bad;<strong>Warning!</strong> You have too many <span class="gold">Treasures</span>. You will need to expand your [[Vault|View Treasure Inventory]] or Sell them to the <<link [[Treasure Shop]]>><<set $entered_treasureshop_bool to true>><<set $treasureshop_mode to "Sell">><</link>> before you can end the day!@@</li>\
<</if>>\
<<if $reputation_nextrank_trigger === true>>\
<li>You hit the @@.rep;Reputation@@ Milestone, go to your [[Quarters|Player's Stats]] to Rank Up! <<if $dungeon_rank === 2>>(Coming in a later update)<</if>></li>\
<</if>>\
<<if $newMission_bool === true>>\
<li>You have new Missions available in your [[Mission Log]].</li>\
<</if>>\
<<if $refresh_slave_market_cd === 1>>\
<li>Last chance to buy the any of the Slaves in the <<link [[Slave Market]]>><<set $entered_market_bool to true>><</link>>.</li>\
<<elseif $slave_market_news === true && $slave_class_news === true>>\
<li>The <<link [[Slave Market]]>><<set $entered_market_bool to true>><</link>> has new Slaves and Classes available.</li>\
<<elseif $slave_market_news === true>>\
<li>The <<link [[Slave Market]]>><<set $entered_market_bool to true>><</link>> has new Slaves available.</li>\
<<elseif $slave_class_news === true>>\
<li>The <<link [[Slave Market]]>><<set $entered_market_bool to true>><</link>> has new Classes available.</li>\
<</if>>\
<<if $rare_slave_news === true>>\
<li>There is a Rare Slave in the <<link [[Slave Market]]>><<set $entered_market_bool to true>><</link>> for sale.</li>\
<</if>>\
<<if $high_demand_event === true>>\
<li>The value of Slaves is increased due to high demand and low stock.</li>\
<</if>>\
<<if $quest_board_cd === 1>>\
<li>Last chance to take any Quests in the <<link [[Adventurer's Guild]]>><<set $entered_guild_bool to true>><</link>>.</li>\
<<elseif $quest_board_news === true>>\
<li>The Quest Board in the <<link [[Adventurer's Guild]]>><<set $entered_guild_bool to true>><</link>> has new postings.</li>\
<</if>>\
<<set _legendary_count to 0>>\
<<for _z = 0; _z < setup.legendary_treasure_list.length; _z++>>\
<<set _legendary_count += $treasureshop_inventory.count(setup.legendary_treasure_list[_z].name)>>\
<</for>>\
<<set _rare_count to 0>>\
<<for _z = 0; _z < setup.legendary_treasure_list.length; _z++>>\
<<set _rare_count += $treasureshop_inventory.count(setup.rare_treasure_list[_z].name)>>\
<</for>>\
<<if _legendary_count > 1 && _rare_count > 1>>\
<li>The <<link [[Treasure Shop]]>><<set $entered_treasureshop_bool to true>><</link>> has @@.legendary;_legendary_count Legendary@@ and @@.rare;_rare_count Rare@@ Treasures instock!</li>\
<<elseif _legendary_count > 1 && _rare_count === 1>>\
<li>The <<link [[Treasure Shop]]>><<set $entered_treasureshop_bool to true>><</link>> has @@.legendary;_legendary_count Legendary@@ Treasures and a @@.rare;Rare@@ Treasure instock!</li>\
<<elseif _legendary_count === 1 && _rare_count > 1>>\
<li>The <<link [[Treasure Shop]]>><<set $entered_treasureshop_bool to true>><</link>> has @.rare;_rare_count Rare@@ Treasures and a @@.legendary;Legendary@@ Treasure instock!</li>\
<<elseif _legendary_count === 1 && _rare_count === 1>>\
<li>The <<link [[Treasure Shop]]>><<set $entered_treasureshop_bool to true>><</link>> has a @@.legendary;Legendary@@ and @@.rare;Rare@@ Treasure instock!</li>\
<<elseif _legendary_count > 1>>\
<li>The <<link [[Treasure Shop]]>><<set $entered_treasureshop_bool to true>><</link>> has @@.legendary;_legendary_count Legendary@@ Treasures instock!</li>\
<<elseif _legendary_count === 1>>\
<li>The <<link [[Treasure Shop]]>><<set $entered_treasureshop_bool to true>><</link>> has a @@.legendary;Legendary@@ Treasure instock!</li>\
<<elseif _rare_count > 1>>\
<li>The <<link [[Treasure Shop]]>><<set $entered_treasureshop_bool to true>><</link>> has @@.rare;_rare_count Rare@@ Treasures instock!</li>\
<<elseif _rare_count === 1>>\
<li>The <<link [[Treasure Shop]]>><<set $entered_treasureshop_bool to true>><</link>> has a @@.rare;Rare@@ Treasure instock!</li>\
<</if>>\
<<for _z = 0; _z < $slave_room_list.length; _z++>>\
<<if $slave_room_list[_z].room_type === "Slave">>\
<<capture _z>>\
<<if $slave_room_list[_z].injured === true>>\
<li><<link "$slave_room_list[_z].name" "Slave Room">><<set $cur_slave to $slave_room_list[_z]>><<set $cur_slave_num to _z>><<set $slaveroom_page to "skill">><</link>> is Injured and cannot work.</li>\
<<elseif $slave_room_list[_z].disobedient === true>>\
<li><<link "$slave_room_list[_z].name" "Slave Room">><<set $cur_slave to $slave_room_list[_z]>><<set $cur_slave_num to _z>><<set $slaveroom_page to "skill">><</link>> is Disobedient and refuses to work.</li>\
<<elseif $slave_room_list[_z].cur_stress >= 70 && $slave_room_list[_z].disobedient != true && $slave_room_list[_z].dayoff_bool === false>>\
<li><<link "$slave_room_list[_z].name's" "Slave Room">><<set $cur_slave to $slave_room_list[_z]>><<set $cur_slave_num to _z>><<set $slaveroom_page to "skill">><</link>> <span class="stress">Stress</span> is at <span class="stress">$slave_room_list[_z].cur_stress</span>.</li>\
<</if>>\
<<if $slave_room_list[_z].job === "">>\
<li><<link "$slave_room_list[_z].name" "Slave Room">><<set $cur_slave to $slave_room_list[_z]>><<set $cur_slave_num to _z>><<set $slaveroom_page to "skill">><</link>> has not been assigned a Job.</li>\
<</if>>\
<</capture>>\
<</if>>\
<</for>>\
<<if $onsen.construction_bool === true>>\
<li>Your new [[Onsen]] has been built.</li>\
<</if>>\
<<if $onsen.goddess_bool === true || ($missionLog.goddess.completed === true && $missionLog.goddess.num === 0)>>\
<li>@@.npc-dialogue;Ahri@@ is using the [[Onsen]].</li>\
<</if>>\
<<if $onsen.users.length === 1>>\
<<for _z = 0; _z < $slave_room_list.length; _z++>>\
<<if $slave_room_list[_z].room_type === "Slave">>\
<<if $onsen.users.includes($slave_room_list[_z].index)>>\
<li>$slave_room_list[_z].name is using the [[Onsen]].</li>\
<</if>>\
<</if>>\
<</for>>\
<<elseif $onsen.users.length > 1>>\
<<set _onsen_list to []>>\
<<for _z = 0; _z < $slave_room_list.length; _z++>>\
<<if $slave_room_list[_z].room_type === "Slave">>\
<<if $onsen.users.includes($slave_room_list[_z].index)>>\
<<set _onsen_list.push($slave_room_list[_z].name)>>\
<</if>>\
<</if>>\
<</for>>\
<<set _last_user to _onsen_list.pop()>>\
<li>_onsen_list<<if _onsen_list.length > 1>>,<</if>> and _last_user are using the [[Onsen]].</li>\
<</if>>\
</ul>\
</div>\
</div>\
</div>\
</div>\
</div>\
</div>\Welcome to the variables list. Please keep things neat and tidy while working in this area.
* SLAVE PACK INFO *
<<= loadSlavePackImageData()>>
Loads and stores slaves in images in an array
* GAME VERSION *
<<set setup.game_version to "0.2.2">>
-PLAYER VARIABLES-
*PLAYER LEVEL INFO*
<<set setup.pc_nextlevel_constant to 39>>
<<set setup.pc_nextlevel_mod to 1.42>>
-------------------------------------------NEXT LEVEL EQUATION-------------------------------------
((CurLevel * CurLevel) + LevelConstant) * LevelMod)
*PLAYER BASE STATS*
<<set setup.pcBaseMana to 3>>
<<set setup.pcBaseEnergy to 1>>
<<set setup.pcStartLust to 1>>
<<set setup.pcStartGold to 1000>>
*LEVEL CAPS*
<<set setup.pc_levelcap to 10>> starting level cap and increases by this amount per rank
<<set setup.creature_levelcap to 5>> starting level a creature can be and increases by this amount each rank
-DUNGEON VARIABLES-
*NOTES - START*
Reputation: Dungeon rating that influences how many girls come to your dungeon. Also increases special girl appearances.
The max Reputation increases based on your dungeon rank.
rank 1: Start at this rank
rank 2: 200 rep
rank 3: 500 rep
rank 4: 1000 rep
rank 5: 2000 rep
Max Rank: 5000 rep
Special Reward: 10000 rep
After reaching max reputation, you can upgrade your dungeon, even if you lose rep.
After ranking up at rank 5, the max rep increases to 10,000 but cannot rank up after.
Instead grants special reward for reaching 10,000 reputation.
Gain rep for various actions
INCREASING
increase rep after releasing a girl without fucking her, base amount times the dungeon rank, increases for each girl you released
increase rep for each strong creature in your dungeon, strong creatures are ones that have captured or defeated many girls after a certain number of girls. Flat amount per day per creature
increase rep for each trap with a low clear rate after a certain number of attempts. Flat amount per day per trap
increase rep for the amount of value in your Treasure Room. 1 Rep per 100 value.
DECREASING
decrease rep after a girl clears your dungeon, base amount divided by the average health left and lust filled, increases for each girl that clears your dungeon.
decrease rep after you fuck a girl and release her, base amount times dungeon rank, increases for each girl you fuck.
greatly decrease rep after enslaving a girl, see enslaving for more details.
decrease rep for each weak creature in your dungeon, weak creatures are ones that have been defeated many times. Flat amount per day per creature
decrease rep for each trap with a high clear rate after a certain number of attempts. Flat amount per day per trap
OTHER
girls that steal a treasure decrease the amount of rep lost, if a girl is satisfied with the gold and treasure she got, no rep could be lost even if a girl clears your dungeon.
girls that clear the dungeon while you have no gold left get a large reputation penalty.
Threat: Helps determines how difficult the girls that come to your dungeon are.
Threat goes from 1 up to 100.
Threat factors into how strong the girls are that enter your dungeon, it is not the only factor.
Dungeon rank and player level also contribute to girl difficulty.
INCREASING
Increases each time a girl is captured or defeated in your dungeon. Small flat amount
Greatly increases after enslaving a captured girl, see enslaving for more details
DECREASING
Decreases for each girl that clears your dungeon, base amount divided by the average health left and lust filled.
Decreases with advertising. Amount varies
Greatly decreases if you fail to Capture any raiders during the night. Flat amount
Enslaving: You can also choose to keep one girl at the end of each night as long as you have space for her.
After you enslave a girl, you will gain a lot of Threat and lose Reputation.
Your Threat level will also be locked for 2 days and increase 2 more days for each rank your dungeon is.
Threat will increase a base amount plus an amount times the number of slaves you currently own.
Reputation will decrease a base amount plus an amount times the number of slaves you currently own.
Only one girl can be enslaved a night and you cannot enslave another one while your threat is locked.
When you enslave a girl, you won't be able to assign her tasks, train her, or sell her until the Threat lock has ended.
You can only enslave a girl if you have an available living quarters.
Rank: Once you reach the max reputation, you can rank up your dungeon.
Start rank 1 with 2 rooms.
Rank cannot go down.
Max rank is 5.
increase dungeon rank by meeting the requirements and spending the required gold.
rank 2: player level cap increases to 20, new rooms, traps are upgraded to rank 2, and creatures cap is level 10. Other upgrades and unlocks tbd
rank 3: player level cap increases to 30, new rooms, traps are upgraded to rank 3, and creatures cap is level 15. Other upgrades and unlocks tbd
rank 4: player level cap increases to 40, new rooms, traps are upgraded to rank 4, and creatures cap is level 20. Other upgrades and unlocks tbd
rank 5: player level cap increases to 50, new rooms, traps are upgraded to rank 5, and creatures cap is level 25. Other upgrades and unlocks tbd
*DUNGEON VARIABLES - START*
<<set setup.reputation_rank2 to 200>> amount of reputation required to upgrade to rank 2
<<set setup.reputation_rank3 to 500>> ... rank 3
<<set setup.reputation_rank4 to 1000>> ... rank 4
<<set setup.reputation_rank5 to 2000>> ... rank 5
<<set setup.reputation_reward to 5000>> reward to achieving perfect dungeon status
<<set setup.reputation_trigger_icon to "[img[images/icons/trigger_icon.png]]">> icon shows when the player can go to the next dungeon rank
<<set setup.reputation_icon_tooltip to "You have hit the next Reputation goal, allowing you to gain a new Dungeon Rank.">> shows when the player can go to the next dungeon rank
<<set setup.captured_rep_constant to 1.5>> increase amount of rep gained for each girl captured
<<set setup.cleared_rep_mod to 0.75>> if a Raider clears dungeon, increase Reputation lost by this amount
<<set setup.cleared_rep_constant to 3.4>> increases amount of rep lost for each girl who cleared
<<set setup.abandoned_rep_mod to 0.25>> reduces rep gained by this amount if they abandoned
<<set setup.abandoned_rep_constant to 0.5>> increases amount of rep gained after a girl abandons the dungeon per girl that abandoned
<<set setup.rep_sex_penalty to 0.75>> reduces the amount of rep gained after fucking a girl
<<set setup.captured_threat_constant to 1.3>> increase amount of threat gained for each girl captured
<<set setup.cleared_threat_mod to 2>> if a Raider clears dungeon, increase Threat lost by this amount
<<set setup.cleared_threat_constant to 2.25>> increases amount of threat gained or lost for each girl.
<<set setup.threat_sex_penalty to 1.5>> increases amount of threat gained after fucking a girl
<<set setup.threat_locked_icon to "[img[images/icons/lock_icon.png]]">> icon used to show the threat level is locked
<<set setup.threat_icon_tooltip to "Your Threat is locked and cannot be lowered during this time. Days remaining: $threat_locked_cd">>
<<set setup.threat_max_amount to 100>> threat cannot go past this amount
<<set setup.rank_icon to "[img[images/icons/rank_icon.png]]">> icon used to display what rank the dungeon is at
Empty Dungeon Room
<<set setup.empty_room = {
name: "Empty Room",
room_type: "Empty",
built: true,
rank: 1,
cost: 0,
pic: "[img[images/rooms/empty_room.jpg]]"
}>>
Empty Slave Room
<<set setup.empty_cell = {
name: "Empty Room",
room_type: "Empty",
built: true,
rank: 1,
cost: 0,
pic: "[img[images/rooms/empty_cell.jpg]]"
}>>
EMPTY KEEPER ROOM
<<set setup.empty_keep = {
name: "Empty Room",
room_type: "Empty",
pic: "[img[images/rooms/empty_keep.jpg]]"
}>>
Treasure Room
<<set setup.treasure_room = {
name: "Treasure Vault",
passage: "Treasure Vault",
room_type: "Treasure"
}>>
Training Hall
<<set $training_hall = {
name: "Training Hall",
built: false,
cost: 500,
description: "Training options become available for your Slaves, increasing their stat's growth.",
pic: "[img[images/rooms/unbuilt_other.jpg]]"
}>>
Enchanting Chamber
<<set setup.enchanting_chamber = {
name: "Enchanting Chamber",
built: false,
cost: 1000,
description: "Spend Gold for enchantments and upgrades for yourself, Creatures, and Traps.",
pic: "[img[images/rooms/unbuilt_other.jpg]]"
}>>
Monument
<<set setup.monument = {
name: "Monument",
built: false,
cost: 10000,
description: "Choose to build one of a variety of Monuments, all with different effects and powers. You can only build one.",
pic: "[img[images/rooms/unbuilt_other.jpg]]"
}>>
Shrine
<<set setup.shrine = {
name: "Shrine",
built: false,
cost: 5000,
description: "Be able to communicate with your Goddess, gaining new tasks that unlock new powers once completed.",
pic: "[img[images/rooms/unbuilt_other.jpg]]"
}>>
Onsen
<<set setup.onsen to {
name: "Onsen",
room_type: "Amenity",
construction_time: 1,
cost: 750,
float: 0.2,
description: "Increases the amount of @@.love;Love@@ gained and @@.stress;Stress@@ reduced for your Slaves at the end of each day by 20%.",
pic: "[img[images/rooms/onsen.jpg]]",
}>>
*DUNGEON VARIABLES - END*
* RANK UP VAIRABLES - START *
<<set setup.slave_market_count to 2>> increases min and max number of slaves for sale in the slave market per rank
<<set setup.classes_posted to 2>> increases min and max number of classes posted in slave market per rank
<<set setup.guild_hire_count to 1>> increases number of raiders that can be hired per day per rank
<<set setup.quests_posted to 3>> increases min and max number of classes posted in the adventurer's guild
* RANK UP VAIRABLES - END *
* DIFFICULTY VARIABLES - START *
<<set setup.casual_raider_pool_mod to 0.75>>
<<set setup.casual_raider_stat_mod to 0.75>>
<<set setup.casual_gold_mod to 1.5>>
<<set setup.casual_exp_mod to 1.25>>
<<set setup.casual_rep_mod to 1.5>>
<<set setup.casual_threat_mod to 0.75>>
<<set setup.casual_slaveEXP_mod to 1.25>>
<<set setup.brutal_raider_pool_mod to 1.5>>
<<set setup.brutal_raider_stat_mod to 1.5>>
<<set setup.brutal_gold_mod to 0.6>>
<<set setup.brutal_exp_mod to 0.8>>
<<set setup.brutal_rep_mod to 0.6>>
<<set setup.brutal_threat_mod to 1.2>>
<<set setup.brutal_slaveEXP_mod to 0.8>>
* DIFFICULTY VARIABLES - END *
* TREASURE DATA - START*
NOTES - START
--- NEW! ---
There will be 24 common treasures, 16 Uncommon, 8 Rare and 4 Legendary Treasures (eventually)
Treasures will have some effects that occur during the raid (examples: increasing number of poisoned gained, start with lust, ect)
Effects should be stackable in someway as players can have multiple of the same treasures
Treasures that are stole stop having an effect
Raiders will steal the most valued treasure
Treasure Value can only hold a certain number of treasures, can be increased.
If a player ends the day with more treasures than they can store, they will get a warning and be taken to the treasure shop
NOTES - END
*CLASS TREASURE DATA SETS - START*
TREASURE COST INFORMATION
<<set setup.treasure_cost = {
common: 100,
uncommon: 500,
rare: 2500,
legendary: 10000
}>>
<<set setup.treasure_stock = {
common: 20,
uncommon: 10,
rare: 5,
legendary: 1
}>> /* Number of each treasure type can appear in the game at any point in time */
COMMON TREASURES
<<set setup.common_treasure_01 = {
name: "Studded Mirror",
rarity: "common",
rank: 1,
gold: 0,
count: 0,
percent: 10,
tooltip: "Has a 10% chance to Lure a low Ranked Raider to your Dungeon.",
hovertip: "Has a 10% chance to Lure a low Ranked Raider to your Dungeon."
}>>
<<set setup.common_treasure_02 = {
name: "Garnished Mirror",
rarity: "common",
rank: 1,
gold: 0,
count: 0,
percent: 10,
tooltip: "Has a 10% chance to Lure a high Ranked Raider to your Dungeon.",
hovertip: "Has a 10% chance to Lure a high Ranked Raider to your Dungeon."
}>>
<<set setup.common_treasure_03 = {
name: "Laced Gloves",
rarity: "common",
rank: 1,
gold: 0,
count: 0,
int: 2,
tooltip: "Raiders entering your Dungeon gain 2 <<hovertip '<<- setup.poisoned.tooltip>>'>>Poisoned<</hovertip>>.",
hovertip: "Raiders entering your Dungeon gain 2 Poisoned.",
}>>
<<set setup.common_treasure_04 = {
name: "Sparkling Tiara",
rarity: "common",
rank: 1,
gold: 0,
count: 0,
int: 2,
tooltip: "Raiders entering your Dungeon gain 2 <<hovertip '<<- setup.aroused.tooltip>>'>>Aroused<</hovertip>>.",
hovertip: "Raiders entering your Dungeon gain 2 Aroused.",
}>>
<<set setup.common_treasure_05 = {
name: "Idol of the Goddess",
rarity: "common",
rank: 1,
gold: 0,
count: 0,
int: 10,
tooltip: "Increases your @@.rep;Reputation@@ by @@.rep;10@@ at the end of the day.",
hovertip: "Increases your @@.rep;Reputation@@ by @@.rep;10@@ at the end of the day."
}>>
<<set setup.common_treasure_06 = {
name: "Dragon Effigy",
rarity: "common",
rank: 1,
gold: 0,
count: 0,
int: 3,
tooltip: "Reduces your Threat by 3 at the end of the day.",
hovertip: "Reduces your Threat by 3 at the end of the day."
}>>
<<set setup.common_treasure_07 = {
name: "Ring of Deception",
rarity: "common",
rank: 1,
gold: 0,
count: 0,
percent: 50,
mult: 2,
tooltip: "Raiders have a 50% chance to steal this when stealing a Treasure. Sells for twice as much @@.gold;Gold@@.",
hovertip: "Raiders have a 50% chance to steal this when stealing a Treasure. Sells for twice as much @@.gold;Gold@@."
}>>
<<set setup.common_treasure_08 = {
name: "Shiny Ring",
rarity: "common",
rank: 1,
gold: 0,
count: 0,
int: 250,
max_count: 5,
tooltip: "After Capturing 5 Raiders, this Treasure is destroyed and you gain @@.gold;250 Gold@@.",
hovertip: "After Capturing 5 Raiders, this Treasure is destroyed and you gain @@.gold;250 Gold@@."
}>>
<<set setup.common_treasure_09 = {
name: "Gilded Band",
rarity: "common",
rank: 1,
gold: 0,
count: 0,
float: 0.05,
tooltip: "Raiders carry 5% more @@.gold;Gold@@.",
hovertip: "Raiders carry 5% more @@.gold;Gold@@."
}>>
UNCOMMON TREASURES
<<set setup.uncommon_treasure_01 = {
name: "Ophidian Choker",
rarity: "uncommon",
rank: 2,
gold: 0,
count: 0,
int: 1,
tooltip: "Raiders gain 1 additional <<hovertip '<<- setup.poisoned.tooltip>>'>>Poisoned<</hovertip>> in your Dungeon.",
hovertip: "Raiders gain 1 additional Poisoned in your Dungeon."
}>>
<<set setup.uncommon_treasure_02 = {
name: "Devil Bracelet",
rarity: "uncommon",
rank: 1,
gold: 0,
count: 0,
percent: 10,
tooltip: "Raiders entering your Dungeon have a 10% chance to gain a new Kink.",
hovertip: "Raiders entering your Dungeon have a 10% chance to gain a new Kink."
}>>
<<set setup.uncommon_treasure_03 = {
name: "Heart Pendant",
rarity: "uncommon",
rank: 2,
gold: 0,
count: 0,
int: 1,
tooltip: "Raiders gain 1 additional <<hovertip '<<print setup.aroused.tooltip>>'>>Aroused<</hovertip>> in your Dungeon.",
hovertip: "Raiders gain 1 additional Aroused in your Dungeon."
}>>
<<set setup.uncommon_treasure_04 = {
name: "Ruby Charm",
rarity: "uncommon",
rank: 1,
gold: 0,
count: 0,
percent: 10,
tooltip: "Raiders entering your Dungeon have a 10% chance to become <<hovertip '<<- setup.horny.tooltip>>'>>Horny<</hovertip>>.",
hovertip: "Raiders entering your Dungeon have a 10% chance to become Horny."
}>>
<<set setup.uncommon_treasure_05 = {
name: "Sapphire Charm",
rarity: "uncommon",
rank: 1,
gold: 0,
count: 0,
percent: 10,
tooltip: "Raiders entering your Dungeon have a 10% chance to become <<hovertip '<<- setup.wet.tooltip>>'>>Wet<</hovertip>>.",
hovertip: "Raiders entering your Dungeon have a 10% chance to become Wet."
}>>
<<set setup.uncommon_treasure_06 = {
name: "Amethyst Charm",
rarity: "uncommon",
rank: 1,
gold: 0,
count: 0,
percent: 10,
tooltip: "Raiders entering your Dungeon have a 10% chance to become <<hovertip '<<- setup.perverted.tooltip>>'>>Perverted<</hovertip>>.",
hovertip: "Raiders entering your Dungeon have a 10% chance to become Perverted."
}>>
<<set setup.uncommon_treasure_07 = {
name: "Ring of Temptation",
rarity: "uncommon",
rank: 1,
gold: 0,
count: 0,
mult: 2,
tooltip: "Raiders always steal this when stealing a Treasure. Sells for twice as much @@.gold;Gold@@.",
hovertip: "Raiders always steal this when stealing a Treasure. Sells for twice as much @@.gold;Gold@@."
}>>
<<set setup.uncommon_treasure_08 = {
name: "Golden Mirror",
rarity: "uncommon",
rank: 1,
gold: 0,
count: 0,
percent: 10,
tooltip: "Has a 10% chance to Lure a Raider with the <<hovertip '<<- setup.wealthy.tooltip>>'>>@@.gold;Wealthy@@<</hovertip>> Trait to your Dungeon.",
hovertip: "Has a 10% chance to Lure a Raider with the Wealthy Trait to your Dungeon."
}>>
<<set setup.uncommon_treasure_09 = {
name: "Flawless Mirror",
rarity: "uncommon",
rank: 1,
gold: 0,
count: 0,
percent: 10,
tooltip: "Has a 10% chance to Lure a Raider with the <<hovertip '<<- setup.famous.tooltip>>'>>@@.gold;Famous@@<</hovertip>> Trait to your Dungeon.",
hovertip: "Has a 10% chance to Lure a Raider with the Famous Trait to your Dungeon."
}>>
RARE TREASURES
<<set setup.rare_treasure_01 = {
name: "Purity Mirror",
rarity: "rare",
rank: 1,
gold: 0,
count: 0,
percent: 10,
tooltip: "Has a 10% chance to Lure a Raider with the <<hovertip '<<- setup.virgin.tooltip>>'>>@@.gold;Virgin@@<</hovertip>> Trait to your Dungeon.",
hovertip: "Has a 10% chance to Lure a Raider with the Virgin Trait to your Dungeon."
}>>
<<set setup.rare_treasure_02 = {
name: "Dragonscale Crown",
rarity: "rare",
rank: 1,
gold: 0,
count: 0,
raidFloat: 0.2,
rareFloat: 0.1,
tooltip: "Captured Raiders are 20% more likely to have a @@.limegreen;Green@@ Slave Trait and 10% more likely to have a @@.gold;Rare@@ Slave Trait.",
hovertip: "Captured Raiders are 20% more likely to have a @@.limegreen;Green@@ Slave Trait and 10% more likely to have a @@.gold;Rare@@ Slave Trait."
}>>
<<set setup.rare_treasure_03 = {
name: "Essence Ring",
rarity: "rare",
rank: 1,
gold: 0,
count: 0,
int: 1,
max_count: 10,
tooltip: "After Capturing 10 Raiders, this Treasure is destroyed and you gain @@.le;1 Lust Essence@@.",
hovertip: "After Capturing 10 Raiders, this Treasure is destroyed and you gain @@.le;1 Lust Essence@@."
}>>
LEGENDARY TREASURES
<<set setup.legendary_treasure_01 = {
name: "Artisan's Circlet",
rarity: "legendary",
rank: 2,
gold: 0,
count: 0,
rare_percent: 4,
uncommon_percent: 20,
tooltip: "Creates a random Ring Treasure at the end of the night.",
hovertip: "Creates a random Ring Treasure at the end of the night."
}>>
* TREASURE DATA - START *
* TREASURE LIST - START *
<<set setup.common_treasure_list to [setup.common_treasure_01, setup.common_treasure_02, setup.common_treasure_03, setup.common_treasure_04, setup.common_treasure_05, setup.common_treasure_06, setup.common_treasure_07, setup.common_treasure_08, setup.common_treasure_09]>>
<<set setup.uncommon_treasure_list to [setup.uncommon_treasure_01, setup.uncommon_treasure_02, setup.uncommon_treasure_03, setup.uncommon_treasure_04, setup.uncommon_treasure_05, setup.uncommon_treasure_06, setup.uncommon_treasure_07, setup.uncommon_treasure_08, setup.uncommon_treasure_09]>>
<<set setup.rare_treasure_list to [setup.rare_treasure_01, setup.rare_treasure_02, setup.rare_treasure_03]>>
<<set setup.legendary_treasure_list to []>>
<<set setup.ring_treasure_list = {
rare: [],
uncommon: [setup.uncommon_treasure_03, setup.uncommon_treasure_04],
common: [setup.common_treasure_07, setup.common_treasure_12]
}>>
*TREASURE LIST - END*
* TREASURE VARIABLES - START *
<<set setup.vault_expand_size to 2>> increases vault size by this amount each expand
<<set setup.max_vault_expand to 5>> max times vault can be expanded
<<set setup.vault_expand_cost to 300>> base cost to expand vault
* TREASURE VARIABLES - END *
* EQUIPMENT DATA - START *
NOTES
Equipment are crafted by Blacksmith shop and can be attached to a Creature or Trap
Equipment is either for a Creature or Trap
Manage Equipment in the Armory, an Amenity built from the Blacksmith twin's first mission
Each Equipment has 3 possible upgrades and can have all 3
Crafting and Upgrading Equipment requires Gold and Scrap
Scrap can be found during a unique slave job, unlocked after Armory is built
Can only have 1 of each Equipment
<<set setup.equipGoldCost = {
cost: 3000,
upgrade: 1500,
perUpgrade: 2
}>>
<<set setup.equipScrapCost = {
cost: 20,
upgrade: 10,
perUpgrade: 0.5
}>>
<<set setup.creatureEquip_0 = {
name: "Basilisk Plating",
rank: 1,
gold: 0,
scrap: 0,
type: "Creature", /* Type of unit it can be equip to */
crafted: false, /* set to true if the player crafted this equip */
pres_int: 40, /* Amount of phy resist granted */
poison_float: 0.1, /* percent of phy resist granted by equip that is converted into amount of poison gained */
tooltip: "Grants 30 Physical Resistance. Raiders who deal Physical damage to the wearer gains Poison.",
upgrade_0 : {
name: "Reinforce",
gold: 0,
scrap: 0,
bool: false, /* set to true if the player has this upgrade */
pres_mult: 2, /* Amount to mult phy resist granted by equip, calc last */
tooltip: "Grants twice as much @@.pres;Physical Resistance@@."
},
upgrade_1 : {
name: "Enchant",
gold: 0,
scrap: 0,
bool: false,
float: 0.25, /* percent of max health the equip will heal the creature for */
tooltip: "Restores 25% of the Creature's @@.health;max Health@@ after combat."
},
upgrade_2 : {
name: "Infuse",
gold: 0,
scrap: 0,
bool: false,
arouse_float: 0.1, /* percent of phy resist granted by equip that is converted into amount of aroused gained */
tooltip: "Inflicts Aroused to Raiders who deal Physical damage."
}
}>>
<<set setup.creatureEquip_1 = {
name: "Darkened Sword",
rank: 1,
gold: 0,
scrap: 0,
crafted: false, /* set to true if the player crafted this equip */
atk_int: 30, /* Amount of atk granted */
sex_int: 30, /* Amount of sex granted */
upgrade_float: 0.5, /* Amount that upgrade cost is reduced by */
tooltip: "Grants 30 Physical or Magical Attack and 30 Sexual Attack and Upgrade cost reduced by 50%. Upgrades will remove all previous Upgrades from this Equipment.",
upgrade_0 : {
name: "Sharpen",
gold: 0,
scrap: 0,
bool: false, /* set to true if the player has this upgrade */
pres_mult: 2, /* Amount to mult phy resist granted by equip, calc last */
tooltip: "Darkened Sword grants 30 more Physical Attack."
},
upgrade_1 : {
name: "Enchante",
gold: 0,
scrap: 0,
bool: false,
float: 0.25, /* percent of max health the equip will heal the creature for */
tooltip: "Basilisk Plating restores 25% of the Creature's @@.health;max Health@@ after combat."
},
upgrade_2 : {
name: "Infuse",
gold: 0,
scrap: 0,
bool: false,
arouse_float: 0.1, /* percent of phy resist granted by equip that is converted into amount of aroused gained */
tooltip: "Basilisk Plating also inflicts Aroused to Raiders who deal Physical damage."
}
}>>
* EQUIPMENT VARIABLES - START *
-GIRL VARIABLES-
*NOTES - START*
Kinks and Turnoffs: Kinks are fetishes a girl is weak to and turnoffs are fetishes a girl is strong against.
Captured vs Defeated: Captured girls are worth more XP than defeated girls. Captured girls are easier to train in affection stats(love. Defeated girls are easier to train in
Captured girls are held until the end of the night where you can choose to;
Release her to lower your Threat.
Fuck her and release her to Earn XP but raise your threat.
Keep her to train and use her, increasing your Threat the most. Requires space in your living quarters. Locks your threat level.
Subclass: Subclasses are secondary classes that give the girl bonuses based on the subclass. So far the subclasses are expert, master, veteran, novice, rookie, and adept.
Roles: Each girl has a role that effects certain aspects in fights.
Range: Deals damage from afar, hardest girls to attack while other girls are in front of them.
Tank: Defends other girls, draws single target attacks towards them.
Melee: Deals damage up close, is targeted before Range.
Support: Helps rest of the team instead of fighting. Only appears in parties.
Focus priority without any targeting: Tank > Melee > Range > Support.
Some Creatures will ignore this or attack all party members.
Dice Check: 0 is neutral, 1 means critical hit, and -1 means critical fail.
*NOTES - END*
* RAIDER IMAGE ARRAY SETUP - START *
<<set _url to 'images/misc/scouting_'>>\
<<set _arrName to 'scout_pic_list'>>\
<<= createImgArray(_url,_arrName)>>\
<<set setup.slender_raider_pics to {
}>>
<<set setup.busty_raider_pics to {
}>>
<<set setup.average_raider_pics to {
}>>
<<set _class_list to ["hunter","sorcerer","knight","warrior","priestess","thief","alchemist","witch","dancer","brawler"]>>
<<set _class_listCap to ["Hunter","Sorcerer","Knight","Warrior","Priestess","Thief","Alchemist","Witch","Dancer","Brawler"]>>
<<for _i = 0; _i < _class_list.length; _i++>>
<<set _url to "images/classes/"+_class_list[_i]+"/busty/">>\
<<set _arrName to "busty_raider_pics."+_class_listCap[_i]>>\
<<= createImgArray(_url,_arrName)>>\
<<set _url to "images/classes/"+_class_list[_i]+"/average/">>\
<<set _arrName to "average_raider_pics."+_class_listCap[_i]>>\
<<= createImgArray(_url,_arrName)>>\
<<set _url to "images/classes/"+_class_list[_i]+"/slender/">>\
<<set _arrName to "slender_raider_pics."+_class_listCap[_i]>>\
<<= createImgArray(_url,_arrName)>>\
<</for>>
* RAIDER STAT DESCRIPTION *
<<set setup.raider_health_desc to "How much @@.phy;Physical@@ and @@.mag;Magical@@ damage Raiders can take. Depleting a Raider's @@.health;Health@@ Captures her.">>
<<set setup.raider_lust_desc to "How much @@.sex;Sexual@@ damage Raiders can take. Filling a Raider's @@.lust;Lust@@ Captures her.">>
<<set setup.raider_vigor_desc to "Increases the amount of @@.phy;Physical@@ damage Raiders can deal.">>
<<set setup.raider_endurance_desc to "Reduces the amount of @@.phy;Physical@@ damage Raiders take.">>
<<set setup.raider_willpower_desc to "Increases the amount of @@.mag;Magical@@ damage Raiders deal.">>
<<set setup.raider_perseverance_desc to "Reduces the amount of @@.magical;Magical@@ damage Raiders take.">>
<<set setup.raider_tolerance_desc to "Reduces the amount of @@.sex;Sexual@@ damage Raiders take.">>
<<set setup.raider_awareness_desc to "Increases Raiders' chances of passing @@.trap;Trapchecks@@.">>
<<set setup.raider_reason_desc to "Increases Raiders' chances of passing @@.spell;Spellchecks@@.">>
<<set setup.raider_tank_desc to "They always lead the party and protect the them.">>
<<set setup.raider_melee_desc to "They fight in the front and tend to be balance in offensive and defensive abilities.">>
<<set setup.raider_range_desc to "They hide behind Tanks and Melee Classes with strong offensive capabilities.">>
<<set setup.raider_support_desc to "They assist their teammates while staying in the back of the party.">>
* RAIDER IMAGE ARRAY SETUP - END *
*GIRL DATA SETS - START*
<<set setup.hunter = {
class: "Hunter",
subclass: "",
index: "",
name: "",
role: "Range",
type: "Physical",
body_type: "",
max_hp: 0,
cur_hp: 0,
low_hp: 39,
high_hp: 42,
hp_desc: "Average",
max_lust: 0,
cur_lust: 0,
low_lust: 39,
high_lust: 42,
lust_desc: "Average",
str: 0,
cur_vig: 0,
low_vig: 26,
high_vig: 28,
vig_desc: "High",
end: 0,
cur_end: 0,
low_end: 20,
high_end: 22,
end_desc: "Average",
will: 0,
cur_will: 0,
low_will: 14,
high_will: 16,
will_desc: "Low",
pers: 0,
cur_pers: 0,
low_pers: 17,
high_pers: 19,
pers_desc: "Low",
toler: 0,
cur_toler: 0,
low_toler: 21,
high_toler: 23,
toler_desc: "Average",
aware: 0,
cur_aware: 0,
low_aware: 26,
high_aware: 28,
aware_desc: "High",
reas: 0,
cur_reas: 0,
low_reas: 17,
high_reas: 19,
reas_desc: "Low",
vig_float: 0.1,
dmg_dealt: 0,
dmg_taken: 0,
sex_taken: 0,
targetable: true,
targeted: false,
attacked: false,
anus_birth_amount: 0,
womb_birth_amount: 0,
breasts_birth_amount: 0,
gold: 0,
item: "",
treasure: "",
exp: 0,
unique_trait: "",
special_trait: "",
traits: [],
trait_names: [],
fetishes: [],
kinkcount: 2,
turnoffcount: 2,
kinks: [],
kink_trigger: [],
turnoffs: [],
turnoff_trigger: [],
statuses: [],
status_names: [],
report: [],
grinded: false,
reputation: 0,
threat: 0,
capture_info: "",
abandon_info: "",
pic: "",
pic_default: "",
slave_pack: "",
icon: "[img[images/icons/hunter_icon.png]]",
description: "Hunters are a Ranged Class that uses a bow and arrows to attack their targets from afar. They deal high amounts of @@.phy;Physical@@ damage and are excellent against @@.trap;Trapchecks@@, but struggle against @@.mag;Magical Attacks@@ and @@.spell;Spellchecks@@."
}>>
<<set setup.sorcerer = {
class: "Sorcerer",
subclass: "",
index: "",
name: "",
role: "Range",
type: "Magical",
body_type: "",
max_hp: 0,
cur_hp: 0,
low_hp: 35,
high_hp: 38,
hp_desc: "Average",
max_lust: 0,
cur_lust: 0,
low_lust: 35,
high_lust: 38,
lust_desc: "Average",
vig: 0,
cur_vig: 0,
low_vig: 14,
high_vig: 16,
vig_desc: "Low",
end: 0,
cur_end: 0,
low_end: 17,
high_end: 19,
end_desc: "Low",
will: 0,
cur_will: 0,
low_will: 26,
high_will: 28,
will_desc: "High",
pers: 0,
cur_pers: 0,
low_pers: 26,
high_pers: 28,
pers_desc: "High",
toler: 0,
cur_toler: 0,
low_toler: 20,
high_toler: 22,
toler_desc: "Average",
aware: 0,
cur_aware: 0,
low_aware: 20,
high_aware: 22,
aware_desc: "Average",
reas: 0,
cur_reas: 0,
low_reas: 26,
high_reas: 28,
reas_desc: "High",
will_float: 0.1,
dmg_dealt: 0,
dmg_taken: 0,
sex_taken: 0,
targetable: true,
targeted: false,
attacked: false,
anus_birth_amount: 0,
womb_birth_amount: 0,
breasts_birth_amount: 0,
gold: 0,
item: "",
treasure: "",
exp: 0,
unique_trait: "",
special_trait: "",
traits: [],
trait_names: [],
fetishes: [],
kinkcount: 2,
turnoffcount: 2,
kinks: [],
kink_trigger: [],
turnoffs: [],
turnoff_trigger: [],
statuses: [],
status_names: [],
report: [],
grinded: false,
reputation: 0,
threat: 0,
captured_by: "",
captured_in: "",
abandoned_by: "",
abandoned_in: "",
pic: "",
pic_default: "",
slave_pack: "",
icon: "[img[images/icons/sorcerer_icon.png]]",
description: "Sorcerers are a Ranged Class that wields fire and ice magic. They can dish out lots of @@.mag;Magical@@ damage and are strong against @@.mag;Magical Attacks@@ and @@.spell;Spellchecks@@, but are weak against @@.phy;Physical@@ and @@.sex;Sexual@@ damage."
}>>
<<set setup.knight = {
class: "Knight",
subclass: "",
index: "",
name: "",
index: 0,
role: "Tank",
type: "Physical",
body_type: "",
max_hp: 0,
cur_hp: 0,
low_hp: 43,
high_hp: 46,
hp_desc: "High",
max_lust: 0,
cur_lust: 0,
low_lust: 31,
high_lust: 34,
lust_desc: "Low",
vig: 0,
cur_vig: 0,
low_vig: 22,
high_vig: 24,
vig_desc: "Average",
end: 0,
cur_end: 0,
low_end: 29,
high_end: 31,
end_desc: "High",
will: 0,
cur_will: 0,
low_will: 14,
high_will: 16,
will_desc: "Low",
pers: 0,
cur_pers: 0,
low_pers: 26,
high_pers: 28,
pers_desc: "High",
toler: 0,
cur_toler: 0,
low_toler: 17,
high_toler: 19,
toler_desc: "Low",
aware: 0,
cur_aware: 0,
low_aware: 14,
high_aware: 16,
aware_desc: "Low",
reas: 0,
cur_reas: 0,
low_reas: 23,
high_reas: 25,
reas_desc: "Average",
stat_float: 0.1,
dmg_dealt: 0,
dmg_taken: 0,
sex_taken: 0,
targetable: true,
targeted: false,
attacked: false,
anus_birth_amount: 0,
womb_birth_amount: 0,
breasts_birth_amount: 0,
gold: 0,
item: "",
treasure: "",
exp: 0,
unique_trait: "",
special_trait: "",
traits: [],
trait_names: [],
fetishes: [],
kinkcount: 2,
turnoffcount: 2,
kinks: [],
kink_trigger: [],
turnoffs: [],
turnoff_trigger: [],
statuses: [],
status_names: [],
report: [],
grinded: false,
reputation: 0,
threat: 0,
captured_by: "",
captured_in: "",
abandoned_by: "",
abandoned_in: "",
pic: "",
pic_default: "",
slave_pack: "",
icon: "[img[images/icons/knight_icon.png]]",
description: "Knights are a Tank Class that leads the group and protect themselves using their armor, shield, and sword. They are great at soaking up @@.phy;Physical@@ and @@.mag;Magical@@ Attacks, but are susceptible to @@.sex;Sexual Attacks@@ and unreliable against @@.trap;Trapchecks@@."
}>>
<<set setup.warrior = {
class: "Warrior",
subclass: "",
index: "",
name: "",
role: "Melee",
type: "Physical",
body_type: "",
max_hp: 0,
cur_hp: 0,
low_hp: 47,
high_hp: 50,
hp_desc: "High",
max_lust: 0,
cur_lust: 0,
low_lust: 43,
high_lust: 46,
lust_desc: "High",
str: 0,
cur_vig: 0,
low_vig: 26,
high_vig: 28,
vig_desc: "High",
end: 0,
cur_end: 0,
low_end: 26,
high_end: 28,
end_desc: "High",
will: 0,
cur_will: 0,
low_will: 14,
high_will: 16,
will_desc: "Low",
pers: 0,
cur_pers: 0,
low_pers: 14,
high_pers: 16,
pers_desc: "Low",
toler: 0,
cur_toler: 0,
low_toler: 21,
high_toler: 23,
toler_desc: "Average",
aware: 0,
cur_aware: 0,
low_aware: 14,
high_aware: 16,
aware_desc: "Low",
reas: 0,
cur_reas: 0,
low_reas: 14,
high_reas: 16,
reas_desc: "Low",
stat_float: 0.05,
dmg_dealt: 0,
dmg_taken: 0,
sex_taken: 0,
targetable: true,
targeted: false,
attacked: false,
anus_birth_amount: 0,
womb_birth_amount: 0,
breasts_birth_amount: 0,
gold: 0,
item: "",
treasure: "",
exp: 0,
unique_trait: "",
special_trait: "",
traits: [],
trait_names: [],
fetishes: [],
kinkcount: 2,
turnoffcount: 2,
kinks: [],
kink_trigger: [],
turnoffs: [],
turnoff_trigger: [],
statuses: [],
status_names: [],
report: [],
grinded: false,
reputation: 0,
threat: 0,
captured_by: "",
captured_in: "",
abandoned_by: "",
abandoned_in: "",
pic: "",
pic_default: "",
slave_pack: "",
icon: "[img[images/icons/warrior_icon.png]]",
description: "Warriors are a Melee Class that uses blunt weapons and brute force. They are incredibly resilient with their large @@.health;Health@@ and @@.lust;Lust@@ pools and can deal tons of @@.phy;Physical@@ damage, but they are the worst Class against @@.mag;Magical Attacks@@, @@.trap;Trapchecks@@, and @@.spell;Spellchecks@@."
}>>
<<set setup.priestess = {
class: "Priestess",
subclass: "",
index: "",
name: "",
role: "Support",
type: "Magical",
body_type: "",
max_hp: 0,
cur_hp: 0,
low_hp: 35,
high_hp: 38,
hp_desc: "Average",
max_lust: 0,
cur_lust: 0,
low_lust: 27,
high_lust: 30,
lust_desc: "Low",
vig: 0,
cur_vig: 0,
low_vig: 14,
high_vig: 16,
vig_desc: "Low",
end: 0,
cur_end: 0,
low_end: 14,
high_end: 16,
end_desc: "Low",
will: 0,
cur_will: 0,
low_will: 26,
high_will: 28,
will_desc: "High",
pers: 0,
cur_pers: 0,
low_pers: 29,
high_pers: 31,
pers_desc: "High",
toler: 0,
cur_toler: 0,
low_toler: 14,
high_toler: 16,
toler_desc: "Low",
aware: 0,
cur_aware: 0,
low_aware: 21,
high_aware: 23,
aware_desc: "Average",
reas: 0,
cur_reas: 0,
low_reas: 29,
high_reas: 31,
reas_desc: "High",
dmg_dealt: 0,
dmg_taken: 0,
sex_taken: 0,
targetable: true,
targeted: false,
attacked: false,
anus_birth_amount: 0,
womb_birth_amount: 0,
breasts_birth_amount: 0,
gold: 0,
item: "",
treasure: "",
exp: 0,
heal_target: "",
unique_trait: "",
special_trait: "",
traits: [],
trait_names: [],
fetishes: [],
kinkcount: 2,
turnoffcount: 2,
kinks: [],
kink_trigger: [],
turnoffs: [],
turnoff_trigger: [],
statuses: [],
status_names: [],
report: [],
grinded: false,
reputation: 0,
threat: 0,
captured_by: "",
captured_in: "",
abandoned_by: "",
abandoned_in: "",
pic: "",
pic_default: "",
slave_pack: "",
icon: "[img[images/icons/priestess_icon.png]]",
description: "Priestesses are a Support Class that focus holy magic to attack and support. Between floors, they restore @@.health;Health@@ and reduce @@.lust;Lust@@ for themself or another party member. They are very reliable against @@.mag;Magical Attacks@@ and @@.spell;Spellchecks@@, but have the lowest @@.lust;Lust@@ pool of all the Classes and struggle against @@.phy;Physical@@ and @@.sex;Sexual@@ Attacks."
}>>
<<set setup.thief = {
class: "Thief",
subclass: "",
index: "",
name: "",
role: "Melee",
type: "Physical",
body_type: "",
max_hp: 0,
cur_hp: 0,
low_hp: 31,
high_hp: 34,
hp_desc: "Low",
max_lust: 0,
cur_lust: 0,
low_lust: 47,
high_lust: 50,
lust_desc: "High",
str: 0,
cur_vig: 0,
low_vig: 26,
high_vig: 28,
vig_desc: "High",
end: 0,
cur_end: 0,
low_end: 17,
high_end: 19,
end_desc: "Low",
will: 0,
cur_will: 0,
low_will: 14,
high_will: 16,
will_desc: "Low",
pers: 0,
cur_pers: 0,
low_pers: 17,
high_pers: 19,
pers_desc: "Low",
toler: 0,
cur_toler: 0,
low_toler: 21,
high_toler: 23,
toler_desc: "Average",
aware: 0,
cur_aware: 0,
low_aware: 29,
high_aware: 31,
aware_desc: "High",
reas: 0,
cur_reas: 0,
low_reas: 17,
high_reas: 19,
reas_desc: "Low",
aware_float: 0.1,
dmg_dealt: 0,
dmg_taken: 0,
sex_taken: 0,
targetable: true,
targeted: false,
attacked: false,
anus_birth_amount: 0,
womb_birth_amount: 0,
breasts_birth_amount: 0,
gold: 0,
item: "",
treasure: "",
exp: 0,
unique_trait: "",
special_trait: "",
traits: [],
trait_names: [],
fetishes: [],
kinkcount: 2,
turnoffcount: 2,
kinks: [],
kink_trigger: [],
turnoffs: [],
turnoff_trigger: [],
statuses: [],
status_names: [],
report: [],
grinded: false,
reputation: 0,
threat: 0,
captured_by: "",
captured_in: "",
abandoned_by: "",
abandoned_in: "",
pic: "",
pic_default: "",
slave_pack: "",
icon: "[img[images/icons/thief_icon.png]]",
description: "Thieves are a Melee Class that uses sharp daggers and a variety of tools to explore dungeons. They are the best Class against @@.trap;Trapchecks@@ and have large @@.lust;Lust@@ pools to get through any sticky situations, but they struggle in combat as they are the weakest Melee Class defensively."
}>>
<<set setup.alchemist = {
class: "Alchemist",
subclass: "",
index: "",
name: "",
role: "Support",
type: "Physical",
body_type: "",
max_hp: 0,
cur_hp: 0,
low_hp: 35,
high_hp: 38,
hp_desc: "Average",
max_lust: 0,
cur_lust: 0,
low_lust: 35,
high_lust: 38,
lust_desc: "Average",
vig: 0,
cur_vig: 0,
low_vig: 17,
high_vig: 19,
vig_desc: "Low",
end: 0,
cur_end: 0,
low_end: 21,
high_end: 23,
end_desc: "Average",
will: 0,
cur_will: 0,
low_will: 14,
high_will: 16,
will_desc: "Low",
pers: 0,
cur_pers: 0,
low_pers: 20,
high_pers: 22,
pers_desc: "Average",
toler: 0,
cur_toler: 0,
low_toler: 21,
high_toler: 23,
toler_desc: "Average",
aware: 0,
cur_aware: 0,
low_aware: 26,
high_aware: 28,
aware_desc: "High",
reas: 0,
cur_reas: 0,
low_reas: 20,
high_reas: 22,
reas_desc: "Average",
dmg_dealt: 0,
dmg_taken: 0,
sex_taken: 0,
targetable: true,
targeted: false,
attacked: false,
anus_birth_amount: 0,
womb_birth_amount: 0,
breasts_birth_amount: 0,
gold: 0,
item: "",
treasure: "",
exp: 0,
potions: [],
potion_target: "",
potion_used: "",
unique_trait: "",
special_trait: "",
traits: [],
trait_names: [],
fetishes: [],
kinkcount: 2,
turnoffcount: 2,
kinks: [],
kink_trigger: [],
turnoffs: [],
turnoff_trigger: [],
statuses: [],
status_names: [],
report: [],
grinded: false,
reputation: 0,
threat: 0,
captured_by: "",
captured_in: "",
abandoned_by: "",
abandoned_in: "",
pic: "",
pic_default: "",
slave_pack: "",
icon: "[img[images/icons/alchemist_icon.png]]",
description: "Alchemists are a Support Class that fires poisonous arrows from their crossbows. Between rooms, they can use Potions on themselves or other party members that have a variety of effects. They are the most well rounded Support Class, but their attacks are weak and they can run out of Potions."
}>>
<<set setup.witch= {
class: "Witch",
subclass: "",
index: "",
name: "",
role: "Range",
type: "Magical",
body_type: "",
max_hp: 0,
cur_hp: 0,
low_hp: 31,
high_hp: 34,
hp_desc: "Low",
max_lust: 0,
cur_lust: 0,
low_lust: 43,
high_lust: 46,
lust_desc: "High",
vig: 0,
cur_vig: 0,
low_vig: 14,
high_vig: 16,
vig_desc: "Low",
end: 0,
cur_end: 0,
low_end: 17,
high_end: 19,
end_desc: "Low",
will: 0,
cur_will: 0,
low_will: 29,
high_will: 31,
will_desc: "High",
pers: 0,
cur_pers: 0,
low_pers: 22,
high_pers: 24,
pers_desc: "Average",
toler: 0,
cur_toler: 0,
low_toler: 20,
high_toler: 22,
toler_desc: "Average",
aware: 0,
cur_aware: 0,
low_aware: 20,
high_aware: 22,
aware_desc: "Average",
reas: 0,
cur_reas: 0,
low_reas: 23,
high_reas: 25,
reas_desc: "Average",
pen_float: 0.2,
dmg_dealt: 0,
dmg_taken: 0,
sex_taken: 0,
targetable: true,
targeted: false,
attacked: false,
anus_birth_amount: 0,
womb_birth_amount: 0,
breasts_birth_amount: 0,
gold: 0,
item: "",
treasure: "",
exp: 0,
unique_trait: "",
special_trait: "",
traits: [],
trait_names: [],
fetishes: [],
kinkcount: 2,
turnoffcount: 2,
kinks: [],
kink_trigger: [],
turnoffs: [],
turnoff_trigger: [],
statuses: [],
status_names: [],
report: [],
grinded: false,
reputation: 0,
threat: 0,
captured_by: "",
captured_in: "",
abandoned_by: "",
abandoned_in: "",
pic: "",
pic_default: "",
slave_pack: "",
icon: "[img[images/icons/witch_icon.png]]",
description: "Witches are a Ranged Class that utilizes the dark arts to clear a path ahead. Their @@.mag;Magical Attacks@@ are the strongest among all Classes, but are fairly vulnerable against all Attack types."
}>>
<<set setup.dancer = {
class: "Dancer",
subclass: "",
index: "",
name: "",
role: "Support",
type: "Magical",
body_type: "",
max_hp: 0,
cur_hp: 0,
low_hp: 27,
high_hp: 30,
hp_desc: "Low",
max_lust: 0,
cur_lust: 0,
low_lust: 39,
high_lust: 42,
lust_desc: "Average",
vig: 0,
cur_vig: 0,
low_vig: 14,
high_vig: 16,
vig_desc: "Low",
end: 0,
cur_end: 0,
low_end: 14,
high_end: 16,
end_desc: "Low",
will: 0,
cur_will: 0,
low_will: 23,
high_will: 25,
will_desc: "Average",
pers: 0,
cur_pers: 0,
low_pers: 23,
high_pers: 25,
pers_desc: "Average",
toler: 0,
cur_toler: 0,
low_toler: 29,
high_toler: 31,
toler_desc: "High",
aware: 0,
cur_aware: 0,
low_aware: 17,
high_aware: 19,
aware_desc: "Low",
reas: 0,
cur_reas: 0,
low_reas: 23,
high_reas: 25,
reas_desc: "Average",
dmg_dealt: 0,
dmg_taken: 0,
sex_taken: 0,
targetable: true,
targeted: false,
attacked: false,
anus_birth_amount: 0,
womb_birth_amount: 0,
breasts_birth_amount: 0,
gold: 0,
item: "",
treasure: "",
exp: 0,
dance: "",
unique_trait: "",
special_trait: "",
traits: [],
trait_names: [],
fetishes: [],
kinkcount: 2,
turnoffcount: 2,
kinks: [],
kink_trigger: [],
turnoffs: [],
turnoff_trigger: [],
statuses: [],
status_names: [],
report: [],
grinded: false,
reputation: 0,
threat: 0,
captured_by: "",
captured_in: "",
abandoned_by: "",
abandoned_in: "",
pic: "",
pic_default: "",
slave_pack: "",
icon: "[img[images/icons/dancer_icon.png]]",
description: "Dancers are a Support Class that uses magic through their dances to attack and support. Their dances buff themselves and their teammates for the rest of the Encounter. They are the best Class against @@.sex;Sexual Attacks@@, but have the lowest @@.health;maximum Health@@ of all Classes and preventing them from attacking also stops them from applying buffs."
}>>
<<set setup.brawler= {
class: "Brawler",
subclass: "",
index: "",
name: "",
role: "Melee",
type: "Physical",
body_type: "",
max_hp: 0,
cur_hp: 0,
low_hp: 39,
high_hp: 42,
hp_desc: "Average",
max_lust: 0,
cur_lust: 0,
low_lust: 35,
high_lust: 38,
lust_desc: "Average",
vig: 0,
cur_vig: 0,
low_vig: 29,
high_vig: 31,
vig_desc: "High",
end: 0,
cur_end: 0,
low_end: 23,
high_end: 25,
end_desc: "Average",
will: 0,
cur_will: 0,
low_will: 14,
high_will: 16,
will_desc: "Low",
pers: 0,
cur_pers: 0,
low_pers: 17,
high_pers: 19,
pers_desc: "Low",
toler: 0,
cur_toler: 0,
low_toler: 23,
high_toler: 25,
toler_desc: "Average",
aware: 0,
cur_aware: 0,
low_aware: 22,
high_aware: 24,
aware_desc: "Average",
reas: 0,
cur_reas: 0,
low_reas: 17,
high_reas: 19,
reas_desc: "Low",
dmg_float: 0.6,
dmg_dealt: 0,
brawler_2nd_dmg: 0,
dmg_taken: 0,
sex_taken: 0,
targetable: true,
targeted: false,
attacked: false,
anus_birth_amount: 0,
womb_birth_amount: 0,
breasts_birth_amount: 0,
gold: 0,
item: "",
treasure: "",
exp: 0,
unique_trait: "",
special_trait: "",
traits: [],
trait_names: [],
fetishes: [],
kinkcount: 2,
turnoffcount: 2,
kinks: [],
kink_trigger: [],
turnoffs: [],
turnoff_trigger: [],
statuses: [],
status_names: [],
report: [],
grinded: false,
reputation: 0,
threat: 0,
captured_by: "",
captured_in: "",
abandoned_by: "",
abandoned_in: "",
pic: "",
pic_default: "",
slave_pack: "",
icon: "[img[images/icons/brawler_icon.png]]",
description: "Brawlers are a Melee Class that prefers throwing punches instead of using weapons. They have incredibly strong @@.phy;Physical Attacks@@ that hits twice, but are weak against @@.mag;Magical Attacks@@ and struggle against @@.spell;Spellchecks@@."
}>>
*GIRL DATA SETS - END*
*TEST RAIDER - START*
<<set setup.neeko= {
class: "Neeko",
subclass: "",
index: "",
name: "",
role: "Range",
type: "Magical",
body_type: "",
max_hp: 0,
cur_hp: 0,
low_hp: 19,
high_hp: 21,
hp_desc: "Average",
max_lust: 0,
cur_lust: 0,
low_lust: 19,
high_lust: 21,
lust_desc: "Average",
vig: 0,
cur_vig: 0,
low_vig: 10,
high_vig: 12,
vig_desc: "Low",
end: 0,
cur_end: 0,
low_end: 10,
high_end: 12,
end_desc: "Average",
will: 0,
cur_will: 0,
low_will: 10,
high_will: 12,
will_desc: "High",
pers: 0,
cur_pers: 0,
low_pers: 10,
high_pers: 12,
pers_desc: "Average",
toler: 0,
cur_toler: 0,
low_toler: 10,
high_toler: 12,
toler_desc: "Average",
aware: 0,
cur_aware: 0,
low_aware: 10,
high_aware: 12,
aware_desc: "Average",
reas: 0,
cur_reas: 0,
low_reas: 10,
high_reas: 12,
reas_desc: "Average",
dmg_dealt: 0,
dmg_taken: 0,
sex_taken: 0,
targetable: true,
targeted: false,
attacked: false,
anus_birth_amount: 0,
womb_birth_amount: 0,
breasts_birth_amount: 0,
gold: 0,
item: "",
treasure: "",
exp: 0,
potions: [],
potion_target: "",
potion_used: "",
unique_trait: "",
special_trait: "",
traits: [],
trait_names: [],
fetishes: [],
kinkcount: 2,
turnoffcount: 2,
kinks: [],
kink_trigger: [],
turnoffs: [],
turnoff_trigger: [],
statuses: [],
status_names: [],
report: [],
grinded: false,
reputation: 0,
threat: 0,
captured_by: "",
captured_in: "",
abandoned_by: "",
abandoned_in: "",
pic: "",
pic_default: "[img[images/misc/neeko.jpg]]",
slave_pack: "",
icon: "[img[images/icons/neeko_icon.png]]",
description: "TEST PURPOSES ONLY!"
}>>
*CLASS BONUS VARIABLES - START*
*REDUCE CHECKS
<<set setup.aware_reas_mod to 1>> divides Awareness and Reason by this amount after calculating Rank mod
*CLASS BONUS VARIABLES - END*
*SUBCLASS DATA SETS - START*
<<set setup.rookie = {
name: "Rookie",
percent: 0,
pool_mod: 1,
stat_mod: 1,
base_exp: 30,
base_gold: 50,
rare_rate: 0,
uncommon_rate: 0,
steal_mod: 1,
heal_mod: 1,
buff_mod: 1,
min_potion_count: 1,
max_potion_count: 2,
base_reputation: 5,
base_threat: 1
}>>
<<set setup.novice = {
name: "Novice",
percent: 0,
pool_mod: 1.4,
stat_mod: 1.4,
base_exp: 45,
base_gold: 75,
rare_rate: 0,
uncommon_rate: 0.15,
steal_mod: 1.6,
heal_mod: 1.2,
buff_mod: 1.4,
min_potion_count: 2,
max_potion_count: 3,
base_reputation: 10,
base_threat: 2
}>>
<<set setup.adept = {
name: "Adept",
percent: 0,
pool_mod: 2,
stat_mod: 2,
base_exp: 60,
base_gold: 100,
rare_rate: 0.01,
uncommon_rate: 0.3,
steal_mod: 2.2,
heal_mod: 1.4,
buff_mod: 1.8,
min_potion_count: 3,
max_potion_count: 4,
base_reputation: 20,
base_threat: 3
}>>
<<set setup.expert = {
name: "Expert",
percent: 0,
pool_mod: 2.8,
stat_mod: 2.8,
base_exp: 75,
base_gold: 125,
rare_rate: 0.05,
uncommon_rate: 0.45,
steal_mod: 2.8,
heal_mod: 1.6,
buff_mod: 2.2,
min_potion_count: 4,
max_potion_count: 5,
base_reputation: 30,
base_threat: 4
}>>
<<set setup.veteran = {
name: "Veteran",
percent: 0,
pool_mod: 3.8,
stat_mod: 3.8,
base_exp: 90,
base_gold: 150,
rare_rate: 0.1,
uncommon_rate: 0.6,
steal_mod: 3.4,
heal_mod: 1.8,
buff_mod: 2.6,
min_potion_count: 5,
max_potion_count: 6,
base_reputation: 40,
base_threat: 5
}>>
<<set setup.master = {
name: "Master",
percent: 0,
pool_mod: 5,
stat_mod: 5,
base_exp: 120,
base_gold: 200,
rare_rate: 0.2,
uncommon_rate: 0.75,
steal_mod: 4,
heal_mod: 2,
buff_mod: 3,
min_potion_count: 6,
max_potion_count: 6,
base_reputation: 50,
base_threat: 6
}>>
*SUBCLASS DATA SETS - END*
*GIRL LIST VARIABLES - START*
<<set setup.class_list to [setup.hunter, setup.sorcerer, setup.knight, setup.warrior, setup.priestess, setup.thief, setup.alchemist, setup.witch, setup.dancer, setup.brawler]>>
<<set setup.subclass_list to [setup.rookie, setup.novice, setup.adept, setup.expert, setup.veteran, setup.master]>>
<<set setup.role_list to ["Tank", "Melee", "Range", "Support"]>>
<<set setup.girl_names_list to ["Mary", "Jane", "Vivian", "Scarlett", "Ruby", "Indigo", "Dakota", "Jessica", "Sabrina", "Violet", "Josie", "Jasmine", "Monica", "Roxanne", "Crystal", "Jodi", "Lucy", "Lexi", "Toni", "Stacy", "Caroline", "Cassandra", "Annie", "Nicole", "Ruby", "Sapphire", "Emerald", "Diamond", "Pearl", "Erika", "Rose", "Camilla", "Cassidy", "Janice", "Megan", "Melissa", "Gabrielle", "Brooklyn", "Aurora", "Acacia", "Maple", "Stephanie", "Lillie", "Alyssa", "Bella", "Faith", "Giselle", "Hannah", "Helen", "Holly", "Ivy", "Iris", "Kimmy", "Kayla", "Kali", "Luna", "Lydia", "Ophelia", "Olivia", "Willow", "Wendy", "Zoey", "Ava", "Charlotte", "Davina", "Jordyn", "Jocelyn", "Shaila", "Lorilei"]>>
*GIRL LIST VARIABLE - END*
*EXP AND GOLD MODS - START*
<<set setup.exp_raider_mod to 0.04>>
<<set setup.gold_raider_mod to 0.12>>
<<set setup.treasure_raider_rate to 0.125>>
*EXP AND GOLD MODS - START*
*REP AND THREAT - START*
<<set setup.repModifier to [0, 1, 1.13, 1.26, 1.39, 1.52]>> amount each raiders base rep is modified based on dungeon Rank
<<set setup.rep_mult to 3>> amount mult to base rep lost for enslaving raider
<<set setup.min_rep to 10>> Min and max amount for enslaving
<<set setup.max_rep to 200>>
<<set setup.threatModifier to [0, 1, 0.94, 0.88, 0.82, 0.76]>>
<<set setup.threat_mult to 3>> amount mult to base threat gained for enslaving raider
<<set setup.min_threat to 15>> Min and max amount for enslaving
<<set setup.max_threat to 40>>
*REP AND THREAT MODS - END*
*GIRL COMBAT VARIABLES - START*
D20 CHECKS FOR DAMAGE
<<set setup.d20_pass to 1.5>>
<<set setup.d20_fail to 0.5>>
DEFENSE RANGES
*RANGE FOR GIRLS PHYSICAL DEFENSE RESISTANCES*
<<set setup.min_end to 0.8>>
<<set setup.max_end to 1>>
*RANGE FOR GIRLS MAGIC DEFENSE RESISTANCES*
<<set setup.min_pers to 0.8>>
<<set setup.max_pers to 1>>
*RANGE FOR GIRLS TOLERANCE*
<<set setup.min_toler to 0.8>>
<<set setup.max_toler to 1>>
*DAMAGE CALC FOR RAIDERS*
<<set setup.dmg_mult to 50>>
<<set setup.sex_mult to 50>>
<<set setup.check_mult to 0.5>>
LUST DAMAGE
*WEAK AGAINST FETISH*
<<set setup.kink_mod to 0.5>>
*STRONG AGAINST FETISH*
<<set setup.turnoff_mod to 0.5>>
*WEAK AGAINST CREATURE TYPE*
THIS INCREASES OR DECRESES THE LUST GAINED BY THE PERCENT AMOUNT
<<set setup.type_mod to 0.1>>
*GIRL COMBAT VARIABLES - END*
-MONSTER VARIABLES-
-TRAP VARIABLES-
-FETISH VARIABLES-
*NOTES - START*
Aphrodisiac: Something through injection, smell, or taste that causes extreme arousal.
Ass: Using or penetration.
Bondage: Being tied up while receiving pleasure.
Breasts: Anything that involves them.
Big Cock: Penetration or foreplay involving one.
Cunnilingus: Someone or something else using their mouth to pleasure her pussy
Getting Dirty: Become covered in slime, cum, other bodily fluids.
Gangbangs: Anything involving three or more creatures.
Lesbian: Anything involving another girl.
Masturbation: Rubbing pussy, either from self or something else.
Pussy: Penetrating her pussy.
Oral: Giving or receiving pleasure using her mouth.
*NOTES - END*
<<set setup.fetish_list to ["Big Cocks", "Breasts", "Cunnilingus", "Pussy", "Ass", "Oral", "Bondage", "Aphrodisiac", "Getting Dirty", "Lesbians", "Gangbangs", "Masturbation"]>>
-ATTACK VARIABLES-
-SPELL VARIABLES-
-TREASURE VARIABLES-
-STATUS VARIABLES-
*NOTES - START*
Statuses are effects, positive or negative, that girls can get throughout the dungeon.
They can effect stats, increase all types of damage, and more.
*NOTES -END*
*STATUS DATA SET - START*
<<set setup.horny = {
name: "Horny",
id: "Horny",
trigger: "horny",
tooltip: "Deals 20% less damage.",
float: 0.2,
type: 0,
icon: "[img[images/icons/horny_icon.png]]"
}>>
<<set setup.wet = {
name: "Wet",
id: "Wet",
trigger: "wet",
tooltip: "Gains 20% more @@.lust;Lust@@.",
float: 0.2,
type: 0,
icon: "[img[images/icons/wet_icon.png]]"
}>>
<<set setup.perverted = {
name: "Perverted",
id: "Perverted",
trigger: "perverted",
tooltip: "Decreases @@.aware;Awareness@@ and @@.reas;Reason@@ by 20%.",
float: 0.2,
type: 0,
icon: "[img[images/icons/perverted_icon.png]]"
}>>
<<set setup.pregnant = {
name: "Pregnant",
id: "Pregnant",
trigger: "pregnant",
tooltip: "Reduces @@.vig;Vigor@@, @@.end;Endurance@@, @@.will;Willpower@@, @@.pers;Perseverance@@, and @@.toler;Tolerance@@ by 10%. After giving birth, she takes @@.sex;10 Sexual@@ damage equal plus @@.lust;25%@@ of her @@.lust;max Lust@@ with the Ass, Breasts, or Pussy Fetish depending where she gave birth from.",
float: 0.1,
birth_int: 10,
birth_float: 0.25,
cd: 0,
location: "",
fetish: "",
type: -1,
icon: "[img[images/icons/pregnant_icon.png]]"
}>>
<<set setup.sticky = {
name: "Sticky",
id: "Sticky",
trigger: "sticky",
tooltip: "@@.trap;Trapchecks@@ against her are increased by 10% per Sticky stack. Loses a stack between floors. Max 10 stacks.",
float: 0.1,
stack: 0,
gain: 0,
max_stack: 10,
type: -1,
icon: "[img[images/icons/sticky_icon.png]]"
}>>
<<set setup.intoxicated = {
name: "Intoxicated",
id: "Intoxicated",
trigger: "intoxicated",
tooltip: "Deals 5% less damage, gains 5% more @@.lust;Lust@@, and decreases @@.aware;Awareness@@ and @@.reas;Reason@@ by 5% per Intoxicated stack. Loses a stack between floors. Max 5 stacks.",
float: 0.05,
stack: 0,
gain: 0,
max_stack: 5,
specialName: "",
type: -1,
icon: "[img[images/icons/intoxicated_icon.png]]"
}>>
<<set setup.aroused = {
name: "Aroused",
id: "Aroused",
trigger: "aroused",
tooltip: "Between floors, gain @@.lust;1 Lust@@ per Aroused stack, then loses a stack.",
int: 1,
stack: 0,
gain: 0,
max_stack: 999,
type: -1,
icon: "[img[images/icons/aroused_icon.png]]"
}>>
<<set setup.poisoned = {
name: "Poisoned",
id: "Poisoned",
trigger: "poisoned",
tooltip: "Between floors, lose @@.health;1 Health@@ per Poisoned stack, then loses a stack.",
int: 1,
stack: 0,
gain: 0,
max_stack: 999,
type: -1,
icon: "[img[images/icons/poisoned_icon.png]]"
}>>
<<set setup.fear = {
name: "Fear",
id: "Fear",
trigger: "fear",
tooltip: "Between floors while alone, gains 1 stack of Fear and has a 20% chance per stack to Abandon the Raid.",
percent: 20,
stack: 0,
gain: 0,
max_stack: 5,
type: -1,
icon: "[img[images/icons/fear_icon.png]]"
}>>
<<set setup.cursed = {
name: "Cursed",
id: "Cursed",
trigger: "cursed",
tooltip: "Has a 50% chance to Critically Fail during combat, @@.trap;Trapchecks@@, and @@.spell;Spellchecks@@.",
percent: 50,
type: -1,
icon: "[img[images/icons/cursed_icon.png]]"
}>>
<<set setup.lactation = {
name: "Lactation",
id: "Lactation",
trigger: "lactation",
tooltip: "Decreases @@.aware;Awareness@@ by @@.aware;5%@@ per Lactation stack and Breast Fetish attacks are treated as a Kink. Between floors, gain @@.lust;Lust@@ equal to @@.lust;5% max Lust@@ per Lactation stack, then loses a stack. Max 5 stacks",
float: 0.05,
stack: 0,
gain: 0,
max_stack: 5,
lust_float: 0.05,
fetish: "Breasts",
type: -1,
icon: "[img[images/icons/lactation_icon.png]]"
}>>
<<set setup.futanari = {
name: "Futanari",
id: "Futanari",
trigger: "futanari",
tooltip: "Decreases @@.reas;Reason@@ by @@.reas;5%@@ per Futanari stack and Masturbation Fetish attacks are treated as a Kink. Between floors, gain @@.lust;Lust@@ equal to @@.lust;5% max Lust@@ per Futanari stack, then loses a stack. Max 5 stacks.",
float: 0.05,
stack: 0,
gain: 0,
max_stack: 5,
lust_float: 0.05,
fetish: "Masturbation",
type: -1,
icon: "[img[images/icons/futanari_icon.png]]"
}>>
<<set setup.parasite = {
name: "Parasite",
id: "Parasite",
trigger: "parasite",
debuff_id: "Parasite Debuff",
tooltip: "Between floors, decrease all stats by 10% permanently, then the Raider has a 20% chance to cure this Status.",
float: 0.1,
percent: 20,
type: -1,
icon: "[img[images/icons/parasite_icon.png]]"
}>>
<<set setup.drowsy = {
name: "Drowsy",
id: "Drowsy",
trigger: "drowsy",
tooltip: "Reduces @@.aware;Awareness@@ by 20% per Drowsy stack. After gaining 3 stacks, become Captured.",
stack: 0,
float: 0.2,
type: -1,
icon: "[img[images/icons/drowsy_icon.png]]"
}>>
<<set setup.brainwashed = {
name: "Brainwashed",
id: "Brainwashed",
trigger: "brainwashed",
tooltip: "She does not attack or support during combat and her @@.aware;Awareness@@ and @@.reas;Reason@@ are reduced by 50%. Lasts until the end of the next encounter.",
float: 0.5,
bool: false,
permanent_bool: false,
type: -1,
icon: "[img[images/icons/brainwashed_icon.png]]"
}>>
<<set setup.stimulated = {
name: "Stimulated",
id: "Stimulated",
trigger: "stimulated",
tooltip: "The next Attack with an Ass, Breasts, Cunnilingus, Masturbation, Oral, or Pussy Fetish deals 50% more @@.sex;Sexual@@ damage.",
fetishes: ["Ass", "Breasts", "Cunnilingus", "Masturbation", "Oral", "Pussy"],
permanent_bool: false,
float: 0.5,
type: -1,
icon: "[img[images/icons/stimulated_icon.png]]"
}>>
<<set setup.edging = {
name: "Edging",
id: "Edging",
trigger: "edging",
tooltip: "Creatures gain 50% more EXP from Capturing this Raider by filling her @@.lust;Lust@@.",
float: 0.5,
limit: 0.85,
int_limit: 1,
type: 0,
icon: "[img[images/icons/edging_icon.png]]"
}>> LIMIT IS THE PERCENT REQUIRED TO START EDGING, INT LIMIT SAYS IF THERE LUST IS 1 LESS THAN THERE MAX, THEY ARE EDGING
<<set setup.blessed = {
name: "Blessed",
id: "Blessed",
trigger: "blessed",
float: 0.25,
tooltip: "Increases chance of passing @@.spell;Spellchecks@@ by 25%.",
type: 1,
icon: "[img[images/icons/blessed_icon.png]]"
}>>
<<set setup.twisted = {
name: "Twisted",
id: "Twisted",
trigger: "twisted",
tooltip: "Horny, Wet, and Perverted Status effects become positive effects.",
type: 1,
icon: "[img[images/icons/twisted_icon.png]]"
}>>
<<set setup.flow = {
name: "Flow",
id: "Flow",
trigger: "flow",
tooltip: "Increases damage dealt and reduces all damage taken by 5% per Flow stack. Max 5 stacks.",
stack: 0,
max_stack: 5,
float: 0.05,
type: 1,
icon: "[img[images/icons/flow_icon.png]]"
}>>
<<set setup.mark_of_lust = {
name: "Mark of Lust",
id: "Mark of Lust",
trigger: "markoflust",
float: 0.75,
tooltip: "The next @@.sex;Sexual Attack@@ consumes this mark and decreases her @@.toler;Tolerance@@ by 75%.",
type: -1,
icon: "[img[images/icons/mark_of_lust_icon.png]]"
}>>
<<set setup.mark_of_fertility = {
name: "Mark of Fertility",
id: "Mark of Fertility",
trigger: "markoffertility",
percent: 101,
tooltip: "The next attack with a Pregnancy effect removes this Mark and guarantees she will becomes Pregnant.",
type: -1,
icon: "[img[images/icons/mark_of_fertility_icon.png]]"
}>>
<<set setup.stripped = {
name: "Stripped",
id: "Stripped",
trigger: "stripped",
float: 0.25,
tooltip: "Reduces @@.end;Endurance@@, @@.pers;Perseverance@@, and @@.toler;Tolerance@@ by 25%.",
type: -1,
icon: "[img[images/icons/stripped_icon.png]]"
}>>
<<set setup.intimidated = {
name: "Intimidated",
id: "Intimidated",
trigger: "intimidated",
float: 0.25,
tooltip: "Reduces their @@.vig;Vigor@@ and @@.will;Willpower@@ by 25%.",
type: -1,
icon: "[img[images/icons/intimidated_icon.png]]"
}>>
<<set setup.trance = {
name: "Trance",
id: "Trance",
trigger: "trance",
icon: "[img[images/icons/trance_icon.png]]"
}>>
<<set setup.ascended_status = {
name: "Ascended",
id: "Ascended",
trigger: "ascended",
tooltip: "She has awoken, doubling her @@.will;Willpower@@ and @@.pers;Perseverance@@.",
type: 1,
icon: "[img[images/icons/ascended_icon.png]]"
}>>
<<set setup.trophy_status = {
name: "Trophy",
id: "Trophy",
trigger: "trophy",
stack: 0,
tooltip: "She has crossed these Creatures off her list: ",
list: [],
type: 1,
icon: "[img[images/icons/trophy_icon.png]]"
}>>
<<set setup.captured = {
name: "Captured",
id: "Captured",
trigger: "captured",
type: 0,
icon: "[img[images/icons/captured_icon.png]]"
}>>
<<set setup.abandoned = {
name: "Abandoned",
id: "Abandoned",
trigger: "abandoned",
type: 0,
icon: "[img[images/icons/abandoned_icon.png]]"
}>>
<<set setup.teleported = {
name: "Teleported",
id: "Teleported",
trigger: "teleported",
type: 0,
icon: "[img[images/icons/teleported_icon.png]]"
}>>
<<set setup.stat_up = {
name: "Stat Up",
id: "",
trigger: "",
tooltip: "",
count: 1,
type: 1,
icon: "[img[images/icons/stat_up_icon.png]]"
}>>
<<set setup.stat_down = {
name: "Stat Down",
id: "",
trigger: "",
tooltip: "",
count: 1,
type: -1,
icon: "[img[images/icons/stat_down_icon.png]]"
}>>
<<set setup.blank_status = {
name: "Blank"
}>>
*AFFLICTION DATA SET - END*
-TRAITS VARIABLES-
*NOTES - START*
Traits effect girls in various ways depending on what the trait is.
Types: Girls get one of each type of trait. The types are Sexual, Physical, Mental, Special, and Slave Traits.
Sexual Traits: Focuses on unusual Fetish types, Endurance and max Lust stat, the number of Kinks and Turn Offs, and the Horny Status.
Physical Traits: Focuses on body Fetish types, Attack and Defense stats, Trap checks, and the Wet Status.
Sexual Traits: Focuses on mental Fetish types, Magic Attack and Magic Defense, Spell checks, and the Perverted Status.
Special Traits: Unique Traits that offer interesting challenges.
Slave Traits: Traits that the girl inherits after becoming a Slave. Affects her slave stat's growth rates and preferences for training and tasks.
*NOTES - END*
*SEXUAL TRAIT SET - START*
Focuses: Fetishes, Tolerance, Lust gains, maximum Lust, Horny status
<<set setup.masochist = {
name: "Masochist",
type: "Sexual",
exp_mod: 0,
tooltip: "Converts 20% of the @@.phy;Physical@@ and @@.mag;Magical@@ damage she takes into @@.lust;Lust@@.",
float: 0.2,
min_dmg: 5
}>>
<<set setup.kinky = {
name: "Kinky",
type: "Sexual",
exp_mod: 0,
tooltip: "She has three additional Kinks.",
int: 3,
}>>
<<set setup.prude = {
name: "Prude",
type: "Sexual",
exp_mod: 0,
tooltip: "She has two additional Turn-Offs.",
int: 2,
}>>
<<set setup.nasty = {
name: "Nasty",
type: "Sexual",
exp_mod: -0.1,
fetishes: ["Getting Dirty"],
statuses: ["Sticky"],
tooltip: "She has the Getting Dirty Fetish as a Kink. While Sticky, her @@.lust;Lust@@ increases by 20% of her @@.lust;max Lust@@ between floors.",
float: 0.2
}>>
<<set setup.gokkun = {
name: "Gokkun",
type: "Sexual",
exp_mod: -0.1,
fetishes: ["Oral"],
tooltip: "She has the Oral Fetish as a Kink. Attacks with the Oral Fetish restore @@.health;25%@@ of her @@.health;max Health@@.",
heal_float: 0.25,
heal_amount: 0
}>>
<<set setup.submissive = {
name: "Submissive",
type: "Sexual",
exp_mod: -0.1,
fetishes: ["Big Cocks", "Bondage"],
tooltip: "She has the Big Cocks and Bondage Fetishes as a Kink. She deals 50% less damage against Creatures with the either Fetishes.",
float: 0.5,
}>>
<<set setup.exhibitionist = {
name: "Exhibitionist",
type: "Sexual",
exp_mod: 0,
statuses: [setup.horny],
tooltip: "She's always Horny. Between floors, she has between a 10%-90% chance to Abandon her Raid based on how much @@.lust;Lust@@ she has.",
base: 10,
float: 1.1,
mod: 9
}>>
<<set setup.square = {
name: "Square",
type: "Sexual",
exp_mod: 0.1,
tooltip: "She takes 20% less @@.sex;Sexual@@ damage.",
float: 0.2
}>> NOT USED
<<set setup.intense = {
name: "Intense",
type: "Sexual",
exp_mod: 0,
tooltip: "Kinks and Turn-Offs modify the amount of @@.sex;Sexual@@ damage she takes by 75% instead of 50%.",
float: 0.75
}>>
<<set setup.composure = {
name: "Composure",
type: "Sexual",
exp_mod: 0.1,
tooltip: "Between floors, her @@.lust;Lust@@ is reduced by 10% of her @@.lust;max Lust@@.",
float: 0.1,
amount: 0
}>>
<<set setup.feisty = {
name: "Feisty",
type: "Sexual",
exp_mod: 0.1,
tooltip: "She deals increased damaged based on how much @@.lust;Lust@@ she has, up to 25%.",
float: 1.5,
mod: 1.25
}>>
<<set setup.lustful = {
name: "Lustful",
type: "Sexual",
exp_mod: 0,
statuses: ["Horny"],
tooltip: "While she's Horny, her @@.toler;Tolerance@@ is reduced by 50%.",
float: 0.5
}>>
<<set setup.amorous = {
name: "Amorous",
type: "Sexual",
exp_mod: 0,
tooltip: "Whenever she is attacked, if that attack has a Fetish that is neither a Kink or Turn-Off, she gains that Fetish as a new Kink or Turn-Off.",
new_kink: "",
new_turnoff: ""
}>> NOT USED
<<set setup.concupiscent = {
name: "Concupiscent",
type: "Sexual",
exp_mod: 0,
statuses: ["Horny"],
float: 0.15,
amount: 0,
tooltip: "While she's Horny, her @@.lust;Lust@@ increases by 15% of her @@.lust;maximum Lust@@ between floors."
}>> NOT USED
<<set setup.edger = {
name: "Edger",
type: "Sexual",
exp_mod: 0.15,
bool: false,
tooltip: "She prevents becoming Captured by filling her @@.lust;Lust@@ unless she was Edging before the Encounter. Can only triggers once.",
statuses: ["Edging"]
}>>
<<set setup.traits_sexual_list to [setup.composure, setup.edger, setup.exhibitionist, setup.feisty, setup.gokkun, setup.intense, setup.kinky, setup.lustful, setup.masochist, setup.nasty, setup.prude, setup.submissive]>>
*SEXUAL TRAIT SET - END*
*PHYSICAL TRAIT SET - START*
Focuses: Body part Fetishes, Body type, Trapchecks, Wet status, Health, Strength, Endurance,
<<set setup.clumsy = {
name: "Clumsy",
type: "Physical",
exp_mod: -0.1,
tooltip: "She has a 20% chance to fail any @@.trap;Trapcheck@@.",
percent: 20
}>>
<<set setup.dry = {
name: "Dry",
type: "Physical",
exp_mod: 0,
statuses: [setup.wet],
tooltip: "She can't become Wet. Replace this Trait with the Soaked Trait if her @@.lust;Lust@@ is 30% or greater.",
lust_percent: 30
}>>
ONLY USED AFTER DRY
<<set setup.soaked = {
name: "Soaked",
type: "Physical",
exp_mod: 0,
statuses: [setup.wet],
tooltip: "She's always Wet. Replace this Trait with the Drenched Trait if her @@.lust;Lust@@ is 60% or greater.",
lust_percent: 60
}>>
ONLY USE AFTER SOAKED
<<set setup.drenched = {
name: "Drenched",
type: "Physical",
exp_mod: 0,
statuses: [setup.wet],
tooltip: "She's always Wet and its effect is tripled.",
mult: 3
}>>
<<set setup.fit = {
name: "Fit",
type: "Physical",
exp_mod: 0.1,
tooltip: "Between floors, she recovers 10% of her @@.health;max Health@@.",
float: 0.1,
amount: 0,
body: "average"
}>>
<<set setup.muscular = {
name: "Muscular",
type: "Physical",
exp_mod: 0.1,
tooltip: "Increases her @@.vig;Vigor@@ and @@.end;Endurance@@ by 25%.",
float: 0.25,
body: "average"
}>>
<<set setup.thicc = {
name: "Thicc",
type: "Physical",
exp_mod: 0,
fetishes: ["Ass"],
tooltip: "She takes 20% less damage. Attacks with the Ass Fetish deal double @@.sex;Sexual@@ damage.",
float: 0.2,
mult: 2,
body: "busty"
}>>
<<set setup.voluptuous = {
name: "Voluptuous",
type: "Physical",
exp_mod: 0,
fetishes: ["Breasts"],
tooltip: "Increases her max @@.health;Health@@ and @@.lust;Lust@@ by 10%. Attacks with the Breast Fetish deal double @@.sex;Sexual@@ damage.",
float: 0.1,
mult: 2,
body: "busty"
}>>
<<set setup.flat = {
name: "Flat",
type: "Physical",
exp_mod: 0,
fetishes: ["Breasts", "Ass"],
tooltip: "Decreases her @@.end;Endurance@@ by 25%. Attacks with the Ass or Breast Fetish deal 75% less @@.sex;Sexual@@ damage.",
float: 0.25,
other_float: 0.75,
body: "slender"
}>>
<<set setup.petite = {
name: "Petite",
type: "Physical",
exp_mod: 0,
fetishes: ["Pussy"],
room_types: ["Captive"],
tooltip: "Decreases @@.trap;Captive Trapchecks@@ by 30% against her. Attacks with the Pussy Fetish deal double @@.sex;Sexual@@ damage.",
float: 0.3,
mult: 2,
body: "slender"
}>>
<<set setup.bubble_butt = {
name: "Bubble Butt",
type: "Physical",
exp_mod: 0,
tooltip: "She gains 10% less @@.lust;Lust@@ from attacks with the Ass Fetish. Creatures with the Ass Fetish will target her if able.",
kink: "Ass",
float: 0.1
}>> NOT USED
<<set setup.perky = {
name: "Perky",
type: "Physical",
exp_mod: 0,
tooltip: "She gains 10% less @@.lust;Lust@@ from attacks with the Breast Fetish. Creatures with the Breasts Fetish will target her if able.",
kink: "Breasts",
float: 0.1
}>> NOT USED
<<set setup.fragile = {
name: "Fragile",
type: "Physical",
exp_mod: -0.1,
tooltip: "She takes 25% more @@.phy;Physical@@ damage.",
float: 0.25
}>>
<<set setup.robust = {
name: "Robust",
type: "Physical",
exp_mod: 0.15,
tooltip: "Increases her @@.health;max Health@@ by 5%.",
float: 0.05
}>>
<<set setup.fertile = {
name: "Fertile",
type: "Physical",
exp_mod: 0,
float: 0.5,
tooltip: "She is 50% more likely to become Pregnant."
}>>
<<set setup.sweet_scent = {
name: "Sweet Scent",
type: "Physical",
exp_mod: 0,
statuses: ["Wet"],
tooltip: "While she's Wet, Creatures will target her if able.",
kink: "Pussy"
}>> NOT USED
<<set setup.squirter = {
name: "Squirter",
type: "Physical",
exp_mod: -0.1,
tooltip: "She becomes Wet from Cunnilingus, Masturbation or Pussy Fetish attacks. If she is already Wet, she gains @@.lust;Lust@@ equal to 25% of her @@.lust;max Lust@@.",
float: 0.25,
amount: 0,
fetishes: ["Cunnilingus", "Masturbation", "Pussy"],
statuses: ["Wet"],
status: setup.wet
}>>
<<set setup.traits_physical_list to [setup.clumsy, setup.dry, setup.fertile, setup.fit, setup.flat, setup.fragile, setup.muscular, setup.petite, setup.robust, setup.squirter, setup.thicc, setup.voluptuous]>>
*PHYSICAL TRAIT SET - END*
*MENTAL TRAIT SET - START*
Focuses: Willpower, Perseverance, Awareness, Intelligence, Perverted status, Fears,
<<set setup.wise = {
name: "Wise",
type: "Mental",
exp_mod: 0.1,
tooltip: "Increases her @@.reas;Reason@@ by 20% and cannot Critically Fail @@.spell;Spellchecks@@.",
float: 0.2
}>>
<<set setup.sharp = {
name: "Sharp",
type: "Mental",
exp_mod: 0.1,
tooltip: "Increases her @@.aware;Awareness@@ by 20% and cannot Critically Fail @@.trap;Trapchecks@@.",
float: 0.2
}>>
<<set setup.resolute = {
name: "Resolute",
type: "Mental",
exp_mod: 0.1,
tooltip: "Increases her @@.will;Willpower@@ and @@.pers;Perseverance@@ by 25%.",
float: 0.25
}>>
<<set setup.naive = {
name: "Naive",
type: "Mental",
exp_mod: -0.1,
tooltip: "She has a 20% chance to fail any @@.spell;Spellcheck@@.",
percent: 20
}>>
<<set setup.fantasizer = {
name: "Fantasizer",
type: "Mental",
exp_mod: -0.1,
statuses: [setup.perverted],
tooltip: "She's always Perverted and gains Aroused stacks equal to 8% of her @@.lust;maximum Lust@@ whenever she enters combat with a Creature.",
float: 0.08,
}>> NOT USED
<<set setup.zoophobia = {
name: "Zoophobia",
type: "Mental",
exp_mod: -0.1,
creatures: ["Beast"],
tooltip: "She deals 50% less damage to Beasts. After a Beast attacks her, she has a 20% chance to Abandon the Dungeon.",
float: 0.5,
percent: 20
}>>
<<set setup.teraphobia = {
name: "Teraphobia",
type: "Mental",
exp_mod: -0.1,
creatures: ["Monster"],
tooltip: "She deals 50% less damage to Monsters. After a Monster attacks her, she has a 20% chance to Abandon the Dungeon.",
float: 0.5,
percent: 20
}>>
<<set setup.entomophobia = {
name: "Entomophobia",
type: "Mental",
exp_mod: -0.1,
creatures: ["Insect"],
tooltip: "She deals 50% less damage to Insects. After a Insect attacks her, she has a 20% chance to Abandon the Dungeon.",
float: 0.5,
percent: 20
}>>
<<set setup.absentminded = {
name: "Absent Minded",
type: "Mental",
exp_mod: -0.1,
tooltip: "She has a 33% chance to lead the party to the previous floor.",
cd: 0,
int: 2,
percent: 33
}>>
<<set setup.wild = {
name: "Wild",
type: "Mental",
exp_mod: 0,
creatures: ["Beast", "Monster", "Insect"],
other_creatures: ["Humanoid"],
float: 0.15,
other_float: 0.3,
amount: 0,
tooltip: "She gains 15% more @@.lust;Lust@@ from Beasts, Insects, and Monsters but 30% less from Humanoids."
}>> NOT USED
<<set setup.reserved = {
name: "Reserved",
type: "Mental",
exp_mod: 0,
creatures: ["Humanoid"],
other_creatures: ["Beast", "Monster", "Insect"],
float: 0.3,
other_float: 0.15,
amount: 0,
tooltip: "She gains 30% more @@.lust;Lust@@ from Humanoids but 15% less from Beasts, Insects, and Monsters."
}>> NOT USED
<<set setup.dirtyminded = {
name: "Dirty Minded",
type: "Mental",
exp_mod: 0,
statuses: ["Perverted"],
other_statuses: [setup.horny, setup.wet],
tooltip: "While Perverted, she becomes Horny and Wet."
}>>
<<set setup.self_conscious = {
name: "Self-Conscious",
type: "Mental",
exp_mod: 0,
tooltip: "Decreases her @@.aware;Awareness@@ and @@.reas;Reason@@ by 25% while her @@.lust;Lust@@ is 50% or greater.",
float: 0.25,
lust_percent: 0.5
}>>
<<set setup.impatient = {
name: "Impatient",
effect_name: "Impatient Status",
type: "Mental",
exp_mod: -0.1,
tooltip: "Decreases her @@.aware;Awareness@@ and @@.reas;Reason@@ by 10% between floors.",
effect_tooltip: "Decreases her @@.aware;Awareness@@ and @@.reas;Reason@@ by 10% per stack.",
float: 0.1,
max_stacks: 10
}>>
<<set setup.courageous = {
name: "Courageous",
type: "Mental",
exp_mod: 0.1,
tooltip: "She will not Abandon the Dungeon."
}>>
<<set setup.traits_mental_list to [setup.absentminded, setup.courageous, setup.dirtyminded, setup.entomophobia, setup.impatient, setup.naive, setup.resolute, setup.self_conscious, setup.sharp, setup.teraphobia, setup.wise, setup.zoophobia]>>
*MENTAL TRAIT SET - END*
*SPECIAL TRAIT SET - START*
<<set setup.virgin = {
name: "Virgin",
type: "Special",
fetishes: ["Pussy"],
tooltip: "Her EXP is doubled while a Virgin. Attacks with the Pussy Fetish remove this Trait.",
mult: 2,
sexual_trait_list: [setup.composure, setup.prude, setup.submissive],
physical_trait_list: [setup.flat, setup.robust, setup.fertile],
mental_trait_list: [setup.zoophobia, setup.naive, setup.self_conscious],
exp_mod: 0
}>>
Available classes: ALL
<<set setup.slut = {
name: "Slut",
type: "Special",
tooltip: "She has twice as many Kinks and no Turn-Offs, but her maximum @@.lust;Lust@@ is doubled.",
mult: 2,
sexual_trait_list: [setup.nasty, setup.masochist, setup.edger],
physical_trait_list: [setup.petite, setup.squirter, setup.thicc],
mental_trait_list: [setup.resolute, setup.dirtyminded, setup.impatient],
exp_mod: 0
}>>
Available classes: ALL
<<set setup.wealthy = {
name: "Wealthy",
type: "Special",
tooltip: "She always has a @@.gold;Treasure@@ and carries more @@.gold;Gold@@.",
low_mult: 1.5,
high_mult: 1.75,
treasure_mult: 2,
sexual_trait_list: [setup.intense, setup.prude, setup.submissive],
physical_trait_list: [setup.fragile, setup.flat, setup.thicc],
mental_trait_list: [setup.impatient, setup.self_conscious, setup.wise],
exp_mod: 0
}>>
Available classes: ALL
<<set setup.famous = {
name: "Famous",
type: "Special",
tooltip: "All @@.rep;Reputation@@ gained or lost from her are doubled.",
mult: 2,
sexual_trait_list: [setup.feisty, setup.kinky, setup.edger],
physical_trait_list: [setup.fit, setup.voluptuous, setup.petite],
mental_trait_list: [setup.wise, setup.absentminded, setup.sharp],
exp_mod: 0
}>>
Available classes: ALL
<<set setup.holy = {
name: "Holy",
type: "Special",
status: setup.blessed,
tooltip: "Blesses to all party members as they enter the Dungeon, reducing @@.spell;Spellchecks@@ against them.",
sexual_trait_list: [setup.prude, setup.submissive, setup.composure],
physical_trait_list: [setup.fertile, setup.voluptuous, setup.fragile],
mental_trait_list: [setup.resolute, setup.teraphobia, setup.wise],
exp_mod: 0.2
}>>
Available classes: Priestess
<<set setup.priestess.unique_trait to setup.holy>>
<<set setup.selfless_hero = {
name: "Selfless Hero",
type: "Special",
tooltip: "She reduces all damage by 20% for each other Raider in the party. If she is alone, she increases her @@.vig;Vigor@@ by 100% instead.",
float: 0.2,
vig_float: 1,
sexual_trait_list: [setup.square, setup.masochist, setup.intense],
physical_trait_list: [setup.muscular, setup.robust, setup.clumsy],
mental_trait_list: [setup.courageous, setup.resolute, setup.naive],
exp_mod: 0.2
}>>
Available classes: Knight
<<set setup.knight.unique_trait to setup.selfless_hero>>
<<set setup.dragonborn = {
name: "Dragonborn",
type: "Special",
tooltip: "Increases all her stats by 20%.",
float: 0.2,
sexual_trait_list: [setup.kinky, setup.feisty, setup.intense],
physical_trait_list: [setup.fit, setup.voluptuous, setup.robust],
mental_trait_list: [setup.courageous, setup.dirtyminded, setup.sharp],
exp_mod: 0.2
}>>
Available classes: Warrior
<<set setup.warrior.unique_trait to setup.dragonborn>>
<<set setup.ascended = {
name: "Ascended",
type: "Special",
tooltip: "She Awakens when she has 40% or less @@.health;Health@@ remaining. After Awakening, double her @@.will;Willpower@@ and @@.pers;Perseverance@@.",
health_limit: 0.4,
mult: 2,
sexual_trait_list: [setup.masochist, setup.edger, setup.intense],
physical_trait_list: [setup.flat, setup.fragile, setup.clumsy],
mental_trait_list: [setup.wise, setup.entomophobia, setup.resolute],
exp_mod: 0.2
}>>
Available class: Sorcerer
<<set setup.sorcerer.unique_trait to setup.ascended>>
<<set setup.lone_wolf = {
name: "Lone Wolf",
type: "Special",
tooltip: "Her Critical Attacks deal 50% more damage. If she is alone, her @@.aware;Awareness@@ and @@.reas;Reason@@ are increased by 50%.",
crit_float: 0.5,
float: 0.5,
sexual_trait_list: [setup.composure, setup.lustful, setup.kinky],
physical_trait_list: [setup.fertile, setup.fit, setup.muscular],
mental_trait_list: [setup.sharp, setup.courageous, setup.dirtyminded],
exp_mod: 0.2
}>>
Available classes: Thief
<<set setup.thief.unique_trait to setup.lone_wolf>>
<<set setup.trophy_collector = {
name: "Trophy Collector",
type: "Special",
tooltip: "She gains a Trophy stack whenever her party defeats a new Creature and deals 50% more damage for each Trophy stack she has.",
float: 0.5,
sexual_trait_list: [setup.intense, setup.lustful, setup.feisty],
physical_trait_list: [setup.muscular, setup.dry, setup.fit],
mental_trait_list: [setup.impatient, setup.sharp, setup.naive],
exp_mod: 0.2
}>>
Available classes: Hunter
<<set setup.hunter.unique_trait to setup.trophy_collector>>
<<set setup.tainted = {
name: "Tainted",
type: "Special",
tooltip: "Increases her maximum @@.lust;Lust@@ by 20%. While her @@.lust;Lust@@ is 40% or higher, she is Twisted.",
float: 0.2,
percent: 0.4,
status: setup.twisted,
sexual_trait_list: [setup.feisty, setup.edger, setup.masochist],
physical_trait_list: [setup.dry, setup.fragile, setup.squirter],
mental_trait_list: [setup.resolute, setup.dirtyminded, setup.absentminded],
exp_mod: 0.2
}>>
Available classes: Witch
<<set setup.witch.unique_trait to setup.tainted>>
<<set setup.survivalist = {
name: "Survivalist",
type: "Special",
tooltip: "Her potion's effects are increased by 50% and their durations by 1. She concocts a new Potion every 2 floors.",
max_cd: 2,
cur_cd: 2,
float: 0.5,
int: 1,
potion: "",
sexual_trait_list: [setup.gokkun, setup.nasty, setup.composure],
physical_trait_list: [setup.flat, setup.robust, setup.fit],
mental_trait_list: [setup.wise, setup.sharp, setup.zoophobia],
exp_mod: 0.2
}>>
Available classes: Alchemist
<<set setup.alchemist.unique_trait to setup.survivalist>>
<<set setup.flow_weaver = {
name: "Flow Weaver",
type: "Special",
tooltip: "Whenever she performs a Dance, she gains 1 Flow that increases her damage and reduces all damage taken.",
sexual_trait_list: [setup.kinky, setup.submissive, setup.feisty],
physical_trait_list: [setup.fragile, setup.petite, setup.voluptuous],
mental_trait_list: [setup.self_conscious, setup.resolute, setup.teraphobia],
exp_mod: 0.2
}>>
Available classes: Dancer
<<set setup.dancer.unique_trait to setup.flow_weaver>>
<<set setup.relentless = {
name: "Relentless",
type: "Special",
tooltip: "After she takes @@.phy;Physical@@ or @@.mag;Magical@@ damage during combat, she gains a stack of Unstoppable that increases her @@.vig;Vigor@@ increases by 20%.",
effect_name: "Unstoppable",
effect_tooltip: "Increases @@.vig;Vigor@@ by 20% per Unstoppable stack.",
float: 0.2,
sexual_trait_list: [setup.masochist, setup.feisty, setup.lustful],
physical_trait_list: [setup.muscular, setup.fit, setup.squirter],
mental_trait_list: [setup.impatient, setup.resolute, setup.absentminded],
exp_mod: 0.2
}>>
Available classes: Brawler
<<set setup.brawler.unique_trait to setup.relentless>>
SPECIAL TRAIT FOR DESCENDANTS
<<set setup.descendant = {
name: "Descendant",
type: "Special",
tooltip: "She takes 50% reduced @@.phy;Physical@@ damage.",
float: 0.5,
sexual_trait_list: [setup.feisty, setup.prude, setup.composure],
physical_trait_list: [setup.fit, setup.dry, setup.muscular],
mental_trait_list: [setup.impatient, setup.resolute, setup.courageous],
exp_mod: 0
}>>
SPECIAL TRAIT FOR MALLORY QUEST 1
<<set setup.newblood = {
name: "New Blood",
type: "Special",
tooltip: "A new Raider in the Adventure's Guild. Mallory has asked you to Capture them.",
sexual_trait_list: [setup.submissive, setup.feisty, setup.kinky, setup.intense],
physical_trait_list: [setup.clumsy, setup.robust, setup.petite, setup.fragile],
mental_trait_list: [setup.naive, setup.impatient, setup.courageous, setup.absentminded],
exp_mod: 0
}>>
<<set setup.traits_special_list to [setup.virgin, setup.slut, setup.wealthy, setup.famous, setup.holy, setup.selfless_hero, setup.dragonborn, setup.ascended, setup.lone_wolf, setup.trophy_collector, setup.tainted, setup.survivalist, setup.flow_weaver, setup.relentless, setup.descendant, setup.newblood]>>
*UNIQUE TRAIT SET - END*
<<set setup.all_raider_traits to setup.traits_sexual_list.concat(setup.traits_physical_list.concat(setup.traits_mental_list.concat(setup.traits_special_list)))>>
* EXAMPLE RAIDER TUTORIAL - START *
<<set $example_raider to clone(setup.sorcerer)>>
<<set $example_raider.subclass to clone(setup.adept)>>
<<set $example_raider.name to "Ahri">>
<<set $example_raider.body_type to "busty">>
<<set $example_raider.max_hp to 50>>
<<set $example_raider.cur_hp to 50>>
<<set $example_raider.max_lust to 50>>
<<set $example_raider.vig to 6>>
<<set $example_raider.end to 15>>
<<set $example_raider.will to 28>>
<<set $example_raider.pers to 17>>
<<set $example_raider.toler to 22>>
<<set $example_raider.aware to 12>>
<<set $example_raider.reas to 18>>
<<set $example_raider.common_treasure to []>>
<<set $example_raider.uncommon_treasure to []>>
<<set $example_raider.rare_treasure to []>>
<<set $example_raider.gold to 69>>
<<set $example_raider.exp to 69>>
<<set $example_raider.traits to [setup.ascended, setup.feisty, setup.robust, setup.courageous]>>
<<set $example_raider.trait_names to ["Ascended", "Feisty", "Robust", "Courageous"]>>
<<set $example_raider.kinks to ["Big Cocks", "Pussy"]>>
<<set $example_raider.turnoffs to ["Breasts", "Getting Dirty"]>>
<<set $example_raider.grinded to true>>
<<set $example_raider.pic to "[img[images/mistress/example_raider.jpg]]">>
<<set $example_raider.pic_default to "[img[images/mistress/example_raider.jpg]]">>
<<set _report to {
name: $example_raider.name,
class: $example_raider.class,
subclass: $example_raider.subclass.name,
pic: $example_raider.pic_default,
result: "",
result_pic: "",
log: []
}>>
<<set $example_raider.report to _report>>
* EXAMPLE RAIDER TUTORIAL - END *
-SLAVE VARIABLES-
*SLAVE NOTES - START*
Slaves are gained by capturing girls and enslaving them instead of releasing them.
They take up one living space.
After enslaving a captured girl, your threat level will greatly rise and be locked for a certain number of days.
You can release the captured girl to unlock your threat if the raiders become to hard.
You cannot sell the girl who locked your threat level, you will only be able to release her.
There is even a chance during this time if raiders clear your dungeon that you will be forced to free the girl, lowering your reputation greatly.
Slaves can be used for various tasks such as:
Giving exp to creatures.
Giving exp to you.
Earning extra gold.
Increase your dungeon rep through advertising.
MORE
Slaves have 5 stats:
Love: Increases by spending time with you. Increases the amount of exp you gain from her and the amount of activities you can do together.
Obedience: Increases slowly over time or quickly through training. Higher obedience means the more likely she will be successful with her tasks.
Libido: Increases over time by doing sexual tasks or training. Increases her skill in sexual activities, earning more gold from prostitution and exp to you and your creatures.
Strength: Increases over time by performing physical tasks or training. Increases her strength in physical combat and labor intensive tasks.
Intelligence: Increases over time by performing mental tasks or training. Increases her strength in magic combat tasks that involve thinking.
The Traits they gain are based on certain conditions, each slave has 3 traits, 2 positive and 1 negative.
Slaves gain more stats over time has they complete tasks or through training.
The higher the stat is, the more tasks or training is required before it increases.
STAT CALCULATION: (SlaveStat + SlaveStatConstant) * SlaveStatMod
SKILL CALCULATION: (SlaveSkill + SlaveSkillConstant) * SlaveSkillMod
<<set setup.slave_stat_constant to 9>> amount added to slave stat during next stat exp calc
<<set setup.slave_stat_mod to 1.2>> amount modded to slave stat during next stat exp calc
<<set setup.slave_skill_constant to 9>> amount added to the slave skill during next skill exp calc
<<set setup.slave_skill_mod to 1.15>> amount modded to slave skill during next skill exp calc
As slaves gain more stats, they can be sold for a lot of gold.
Slaves can only be sold after they reach a certain level of Obedience.
The amount of gold someone is willing to offer for a slave depends on their needs. People will value certain stats more while valuing other stats less.
Slaves pluck a folder picture pack after becoming captured, this way no other new slave can use the same picture pack.
Once a slave is sold, released, or something else that removes the slave from the player, return that folder name to the correct list.
*SLAVE NOTES - END*
*SLAVE DATA SET - START*
<<set setup.slave = {
name: "",
room_type: "Slave",
grinded: false,
body_type: "",
index: "",
rating: "",
value: 0,
base_upkeep: 0,
upkeep: 0,
exp: 0,
raider_class: "",
subclass: "",
love: 1,
love_limit: 25,
love_tracker: 0,
love_tracker_limit: 0,
obedience: 1,
obedience_limit: 25,
obedience_tracker: 0,
obedience_tracker_limit: 0,
libido: 1,
libido_limit: 25,
libido_tracker: 0,
libido_tracker_limit: 0,
strength: 1,
strength_limit: 25,
strength_tracker: 0,
strength_tracker_limit: 0,
intelligence: 1,
intelligence_limit: 25,
intelligence_tracker: 0,
intelligence_tracker_limit: 0,
handjob: 1,
handjob_tracker: 0,
handjob_tracker_limit: 0,
handjob_limit: 25,
blowjob: 1,
blowjob_tracker: 0,
blowjob_tracker_limit: 0,
blowjob_limit: 25,
footjob: 1,
footjob_tracker: 0,
footjob_tracker_limit: 0,
footjob_limit: 25,
titjob: 1,
titjob_tracker: 0,
titjob_tracker_limit: 0,
titjob_limit: 25,
missionary: 1,
missionary_tracker: 0,
missionary_tracker_limit: 0,
missionary_limit: 25,
doggy: 1,
doggy_tracker: 0,
doggy_tracker_limit: 0,
doggy_limit: 25,
cowgirl: 1,
cowgirl_tracker: 0,
cowgirl_tracker_limit: 0,
cowgirl_limit: 25,
anal: 1,
anal_tracker: 0,
anal_tracker_limit: 0,
anal_limit: 25,
traits: [],
trait_names: [],
last_sex_type: "",
job: "",
side_job: "",
quest: "",
quest_cd: 0,
class: "",
class_cd: 0,
disobedient: false,
disobedient_cd: 0,
injured: false,
injured_cd: 0,
training_count: 0,
discipline_count: 0,
cur_stress: 0,
max_stress: 100,
enslave_bool: false,
scolded_bool: false,
scolded_count: 0,
dayoff_bool: false,
dayoff_count: 0,
adoration_bool: false,
connection_bool: false,
blessings: [],
personality: "",
report: "",
total_days: 0,
total_injured: 0,
total_daysoff: 0,
total_jobs: 0,
total_quests: 0,
total_classes: 0,
total_trainings: 0,
total_disciplinings: 0,
total_gold: 0,
total_treasures: 0,
total_exp: 0,
total_reputation: 0,
slave_pack: "",
pic: "",
body_pic: ""
}>>
<<set _love = {
tooltip: "@@.love;Love@@ is a how much affection a Slave has to you. Slaves with more @@.love;Love@@ have a lower Upkeep cost and recover more @@.stress;Stress@@ at the end of the day.",
icon: "[img[images/icons/love_icon.png]]"
}>>
<<set _obedience = {
tooltip: "@@.obedience;Obedience@@ is how well a Slave is at following directions. Slaves with more @@.obedience;Obedience@@ are more likely to pass @@.obedience;Obedience@@ Checks, which effects their performance.",
icon: "[img[images/icons/obedience_icon.png]]"
}>>
<<set _libido = {
tooltip: "@@.libido;Libido@@ is how much sexual power a Slave has. Slaves with more @@.libido;Libido@@ perform better during tasks that require @@.libido;Libido@@ and are more likely to find a Client.",
icon: "[img[images/icons/libido_icon.png]]"
}>>
<<set _strength = {
tooltip: "@@.strength;Strength@@ is how much physical power a Slave has. Slaves with more @@.strength;Strength@@ perform better during tasks that require @@.strength;Strength@@ and are less likely to get Injured during an Incident.",
icon: "[img[images/icons/strength_icon.png]]"
}>>
<<set _intelligence = {
tooltip: "@@.intelligence;Intelligence@@ is how much mental power a Slave has. Slaves with more @@.intelligence;Intelligence@@ perform better during tasks that require @@.intelligence;Intelligence@@ and are more likely to avoid an Incident.",
icon: "[img[images/icons/intelligence_icon.png]]"
}>>
<<set _stress = {
tooltip: "@@.stress;Stress@@ is how much anxiety a Slave has from working. Slaves with less @@.stress;Stress@@ perform better while working. If a Slave reaches @@.stress;100 Stress@@, they become Disobedient.",
icon: "[img[images/icons/stress_icon.png]]"
}>>
<<set _disobedient = {
tooltip: "She is Disobedient and refuses to work. Reduce her @@.stress;Stress@@ to @@.stress;0@@ to become Obedient.",
icon: "[img[images/icons/disobedient_icon.png]]"
}>>
<<set _injured = {
tooltip: "She is Injured and cannot work until she has recovered.",
icon: "[img[images/icons/injured_icon.png]]"
}>>
<<set _scolded = {
tooltip: "Scolded Slaves cannot fail @@.obedience;Obedience@@ checks, but gain 25% more @@.stress;Stress@@ and 50% less @@.love;Love@@ EXP for each consecutive day Scolded.",
icon: "[img[images/icons/scolded_icon.png]]"
}>>
<<set _dayoff = {
tooltip: "Slaves given the Day Off recover 50% of their @@.stress;Stress@@ and gain 25% more @@.love;Love@@ EXP, but cannot perform any tasks.",
icon: "[img[images/icons/dayoff_icon.png]]"
}>>
<<set _libidinous = {
tooltip: "@@.lust-energy;Lust Energy@@ collected:",
icon: "[img[images/icons/libidinous_icon.png]]"
}>>
<<set setup.slave_stats = {
love: _love,
obedience: _obedience,
libido: _libido,
strength: _strength,
intelligence: _intelligence,
stress: _stress
}>>
<<set setup.slave_statuses ={
disobedient: _disobedient,
injured: _injured,
scolded: _scolded,
dayoff: _dayoff,
libidinous: _libidinous
}>>
<<set setup.slave_stats_list to ["love", "obedience", "libido", "strength", "intelligence"]>>
<<set setup.slave_upkeep_stats to ["obedience", "libido", "strength", "intelligence"]>>
<<set setup.slave_sex_types to ["blowjob", "handjob", "titjob", "footjob", "missionary", "doggy", "cowgirl", "anal"]>>
<<set setup.breaks_virginity to ["cowgirl", "doggy", "group", "missionary"]>>
<<set setup.rape_sex to ["blowjob", "titjob", "footjob", "missionary", "doggy", "anal"]>>
*SLAVE DATA SET - END*
*SLAVE UPKEEP VAR - START*
<<set setup.min_slave_base_upkeep to 15>>
<<set setup.max_slave_base_upkeep to 20>>
<<set setup.min_slave_upkeep to 10>>
<<set setup.slave_stats_upkeep_mod to 1.05>> mult stat by this amount and add to upkeep
<<set setup.slave_skills_upkeep_mod to 1.025>>
<<set setup.slave_upkeep_love_mod to 0.05>> reduces the amount of a slaves upkeep by this amount per point of love stat
<<set setup.slave_upkeep_base_love_mod to 1.45>> base amount that is multiplied to a slaves upkeep cost, reduces by love stat
<<set setup.slave_upkeep_min_mod to 0.01>> min amount love can reduce upkeep modifier
*SLAVE UPKEEP VAR - END*
*SLAVE LOVE REQUIREMENTS - START*
<<set setup.slaveNameReq to 5>> Player can change name after slave has this much love
<<set setup.slavePicReq to 10>> Player can change pic after slave has this much love
*SLAVE LOVE REQUIREMENTS - END*
* SLAVE STRESS VAR - START *
<<set setup.min_start_stress to 16>> min and max starting stress for slave market slaves
<<set setup.max_start_stress to 24>>
* SLAVE STRESS VAR - END *
* SLAVE OBEDIENCE CHECK VAR - START *
<<set setup.obedienceCheckOutcome to [0.5, 1]>> holds outcome for obedience check results, 0 is fail and pass is 1
* SLAVE OBEDIENCE CHECK VAR - END *
*SLAVE TRAIT SET - START*
POSITIVE TRAITS
* Common - White *
<<set setup.waifu = {
name: "Waifu",
value: 20,
color: "white",
float: 0.25,
tooltip: "She gains 25% more @@.love;Love@@ and @@.obedience;Obedience@@ EXP."
}>>
<<set setup.passionate = {
name: "Passionate",
value: 20,
color: "white",
float: 0.25,
tooltip: "She gains 25% more @@.love;Love@@ and @@.libido;Libido@@ EXP."
}>>
<<set setup.protective = {
name: "Protective",
value: 20,
color: "white",
float: 0.25,
tooltip: "She gains 25% more @@.love;Love@@ and @@.strength;Strength@@ EXP."
}>>
<<set setup.compassionate = {
name: "Compassionate",
value: 20,
color: "white",
float: 0.25,
tooltip: "She gains 25% more @@.love;Love@@ and @@.intelligence;Intelligence@@ EXP."
}>>
<<set setup.mistress = {
name: "Mistress",
value: 20,
color: "white",
float: 0.25,
tooltip: "She gains 25% more @@.obedience;Obedience@@ and @@.libido;Libido@@ EXP."
}>>
<<set setup.driven = {
name: "Driven",
value: 20,
color: "white",
float: 0.25,
tooltip: "She gains 25% more @@.obedience;Obedience@@ and @@.strength;Strength@@ EXP."
}>>
<<set setup.smart = {
name: "Smart",
value: 20,
color: "white",
float: 0.25,
tooltip: "She gains 25% more @@.obedience;Obedience@@ and @@.intelligence;Intelligence@@ EXP."
}>>
<<set setup.dominate = {
name: "Dominate",
value: 20,
color: "white",
float: 0.25,
tooltip: "She gains 25% more @@.libido;Libido@@ and @@.strength;Strength@@ EXP."
}>>
<<set setup.provocative = {
name: "Provocative ",
value: 20,
color: "white",
float: 0.25,
tooltip: "She gains 25% more @@.libido;Libido@@ and @@.intelligence;Intelligence@@ EXP."
}>>
<<set setup.influential = {
name: "Influential",
value: 20,
color: "white",
float: 0.25,
tooltip: "She gains 25% more @@.strength;Strength@@ and @@.intelligence;Intelligence@@ EXP."
}>>
<<set setup.loyal = {
name: "Loyal",
value: 20,
color: "white",
float: 0.5,
love_req: 10,
tooltip: "If her @@.love;Love@@ Stat is @@.love;10@@ or higher, she gains 50% more @@.obedience;Obedience@@ and @@.libido;Libido@@ EXP."
}>>
<<set setup.guardian = {
name: "Guardian",
value: 20,
color: "white",
float: 0.5,
love_req: 10,
tooltip: "If her @@.love;Love@@ Stat is @@.love;10@@ or higher, she gains 50% more @@.obedience;Obedience@@ and @@.strength;Strength@@ EXP."
}>>
<<set setup.intellectual = {
name: "Intellectual",
value: 20,
color: "white",
float: 0.5,
love_req: 10,
tooltip: "If her @@.love;Love@@ Stat is 10 or higher, she gains 50% more @@.obedience;Obedience@@ and @@.intelligence;Intelligence@@ EXP."
}>>
<<set setup.devoted = {
name: "Devoted",
value: 20,
color: "white",
float: 0.5,
love_req: 10,
tooltip: "If her @@.love;Love@@ Stat is @@.love;10@@ or higher, she gains 50% more @@.libido;Libido@@ and @@.strength;Strength@@ EXP."
}>>
<<set setup.faithful = {
name: "Faithful",
value: 20,
color: "white",
float: 0.5,
love_req: 10,
tooltip: "If her @@.love;Love@@ Stat is @@.love;10@@ or higher, she gains 50% more @@.libido;Libido@@ and @@.intelligence;Intelligence@@ EXP."
}>>
<<set setup.determined = {
name: "Determined",
value: 20,
color: "white",
float: 0.5,
love_req: 10,
tooltip: "If her @@.love;Love@@ Stat is @@.love;10@@ or higher, she gains 50% more @@.strength;Strength@@ and @@.intelligence;Intelligence@@ EXP."
}>>
<<set setup.caring = {
name: "Caring",
value: 20,
color: "white",
float: 0.2,
tooltip: "Increases the amount of EXP she gives during Service Jobs by 20%."
}>>
<<set setup.sexy = {
name: "Sexy",
value: 20,
color: "white",
float: 0.2,
tooltip: "Increases the amount of @@.gold;Gold@@ she earns from Prostitution Jobs by 20%."
}>>
<<set setup.diligent = {
name: "Diligent",
value: 20,
color: "white",
float: 0.2,
tooltip: "Increases the amount of @@.gold;Gold@@ she earns from Quests by 20%."
}>>
<<set setup.respected = {
name: "Respected",
value: 20,
color: "white",
float: 0.2,
tooltip: "Increases the amount of @@.reputation;Reputation@@ she earns from Quests by 20%."
}>>
<<set setup.gentle = {
name: "Gentle",
value: 20,
color: "white",
float: 0.2,
tooltip: "Increases the Creature's effects during her Caretaking Jobs by 20%."
}>>
<<set setup.crafty = {
name: "Crafty",
value: 20,
color: "white",
float: 0.2,
tooltip: "Increases the Trap's effects during her Maintenance Jobs by 20%."
}>>
<<set setup.talented = {
name: "Talented",
value: 20,
color: "white",
float: 0.25,
tooltip: "Increases all her Sex Skills growth by 25%."
}>>
<<set setup.breezy = {
name: "Breezy",
value: 20,
color: "white",
float: 0.25,
tooltip: "Decreases the amount of @@.stress;Stress@@ she gains by 25%."
}>>
<<set setup.sneaky = {
name: "Sneaky",
value: 20,
color: "white",
percent: 10,
tooltip: "During her Days Off, she has a 10% chance to steal a @@.gold;Treasure@@.",
}>>
<<set setup.collected = {
name: "Collected",
value: 20,
color: "white",
int: 40,
float: 0.25,
tooltip: "While her @@.stress;Stress@@ is 40 or lower, increase her @@.obedience;Obedience@@ checks by 25%."
}>>
<<set setup.stoic = {
name: "Stoic",
value: 20,
color: "white",
int: 60,
float: 0.5,
tooltip: "While her @@.stress;Stress@@ is 60 or higher, increase her @@.obedience;Obedience@@ checks by 50%."
}>>
<<set setup.hardy = {
name: "Hardy",
value: 20,
color: "white",
int: 1,
tooltip: "She always recovers from Injuries after one day."
}>>
<<set setup.restrained = {
name: "Restrained",
value: 20,
color: "white",
float: 0.25,
tooltip: "While Disobedient, increase the amount of @@.stress;Stress@@ she recovers by 25%."
}>>
<<set setup.spiritual = {
name: "Spiritual",
value: 20,
color: "white",
float: 0.5,
tooltip: "Days Off increase the amount of @@.stress;Stress@@ she recovers by 50%."
}>>
* Raider Only - Green *
<<set setup.adoring = {
name: "Adoring",
value: 200,
color: "limegreen",
float: 0.5,
int: 5,
tooltip: "She gains 50% more @@.love;Love@@ EXP and her maximum @@.love;Love@@ is increased by @@.love;5@@."
}>>
<<set setup.vigorous = {
name: "Vigorous",
value: 200,
color: "limegreen",
float: 0.5,
int: 5,
tooltip: "She gains 50% more @@.strength;Strength@@ EXP and her maximum @@.strength;Strength@@ is increased by @@.strength;5@@."
}>>
<<set setup.brilliant = {
name: "Brilliant",
value: 200,
color: "limegreen",
float: 0.5,
int: 5,
tooltip: "She gains 50% more @@.intelligence;Intelligence@@ EXP and her maximum @@.intelligence;Intelligence@@ is increased by @@.intelligence;5@@."
}>>
<<set setup.gifted = {
name: "Gifted",
value: 200,
color: "limegreen",
float: 0.25,
tooltip: "Increases all her Stat growth by 25%."
}>>
<<set setup.sturdy = {
name: "Sturdy",
value: 200,
color: "limegreen",
percent: 60,
tooltip: "She has a 60% chance to avoid becoming Injured during Incidents."
}>>
<<set setup.lucky = {
name: "Lucky",
value: 200,
color: "limegreen",
float: 0.5,
tooltip: "She is 50% more lucky!"
}>>
<<set setup.prized = {
name: "Prized",
value: 200,
color: "limegreen",
min_rep: 4,
max_rep: 9,
rep_div: 20,
tooltip: "She earns a small amount of @@.reputation;Reputation@@ at the end of each day."
}>>
<<set setup.attentive = {
name: "Attentive",
value: 200,
color: "limegreen",
mult: 2,
tooltip: "She gains twice as much @@.strength;Strength@@ and @@.intelligence;Intelligence@@ EXP during Caretaking and Maintenance Jobs."
}>>
<<set setup.intimidating = {
name: "Intimidating",
value: 200,
color: "limegreen",
float: 0.5,
tooltip: "She is 50% less likely to have an Incident during Prostitution Jobs."
}>>
<<set setup.fond = {
name: "Fond",
value: 200,
color: "limegreen",
love_req: 10,
float: 0.5,
tooltip: "Decreases her Upkeep cost by 50% if her @@.love;Love@@ Stat is @@.love;10@@ or higher."
}>>
* Market Only - Blue *
<<set setup.behaved = {
name: "Behaved",
value: 200,
color: "royalblue",
float: 0.5,
int: 5,
tooltip: "She gains 50% more @@.obedience;Obedience@@ EXP and her maximum @@.obedience;Obedience@@ is increased by @@.obedience;5@@."
}>>
<<set setup.sensual = {
name: "Sensual",
value: 200,
color: "royalblue",
float: 0.5,
int: 5,
tooltip: "She gains 50% more @@.libido;Libido@@ EXP and her maximum @@.libido;Libido@@ is increased by @@.libido;5@@."
}>>
<<set setup.motivated = {
name: "Motivated",
value: 200,
color: "royalblue",
float: 0.25,
tooltip: "She earns 25% more EXP from Classes."
}>>
<<set setup.proficient = {
name: "Proficient",
value: 200,
color: "royalblue",
float: 0.25,
tooltip: "She earns 25% more Sex Skill EXP from Training."
}>>
<<set setup.simplistic = {
name: "Simplistic",
value: 200,
color: "royalblue",
float: 0.25,
tooltip: "Decreases her Upkeep cost by 25%."
}>>
<<set setup.supportive = {
name: "Supportive",
value: 200,
color: "royalblue",
int: 2,
tooltip: "Her Service Jobs also increases your @@.mana;Mana@@ by @@.mana;2@@ that night."
}>>
<<set setup.flirtatious = {
name: "Flirtatious",
value: 200,
color: "royalblue",
libido_mod: 1.25,
base_rep: 3,
tooltip: "Her Prostitution Jobs also earns a small amount of @@.reputation;Reputation@@ based on her @@.libido;Libido@@ Stat."
}>>
<<set setup.assiduous = {
name: "Assiduous",
value: 200,
color: "royalblue",
love_req: 10,
float: 0.5,
tooltip: "If her @@.love;Love@@ Stat is @@.love;10@@ or higher, She gains 50% more Sex Skill EXP."
}>>
<<set setup.carefree = {
name: "Carefree",
value: 200,
color: "royalblue",
float: 0.5,
tooltip: "Increases the amount of @@.stress;Stress@@ she recovers by 50%."
}>>
<<set setup.subordinate = {
name: "Subordinate",
value: 200,
color: "royalblue",
float: 1,
tooltip: "She gains twice as much @@.love;Love@@ and @@.obedience;Obedience@@ EXP from Disciplining and Training."
}>>
* Rare - Gold *
GAINED FROM VIRGIN RAIDER TRAIT OR FOUND IN MARKET RARELY
<<set setup.virginity = {
name: "Virgin",
value: 400,
color: "gold",
mult: 2,
tooltip: "Doubles the amount of @@.gold;Gold@@ she is worth. After losing her Virginity, replace this with a unique Trait based on her Stats and how her Virginity was taken."
}>>
RARE UNIQUE TRAIT GAINED IF PLAYER TAKES VIRGINITY IF LOVE IS 15 OR MORE
<<set setup.lover = {
name: "Lover",
value: 800,
color: "gold",
love_req: 15,
float: 0.5,
mult: 2,
tooltip: "She gains 50% more Stat and Sex Skill EXP and she gives twice as much EXP during Service Jobs."
}>>
RARE UNIQUE TRAIT GAINED IF PLAYER TAKES VIRGINITY IF LOVE IS BETWEEN 5 AND 14
<<set setup.clingy = {
name: "Clingy",
value: 800,
color: "gold",
love_req: 5,
exp_float: 0.5,
love_float: 0.05,
tooltip: "She gains 5% more @@.love;Love@@ EXP by 5% for each point in her @@.love;Love@@ Stat. She gives 50% more EXP during Service Jobs, but can only be assigned Service Jobs."
}>>
RARE UNIQUE TRAIT GAINED IF VIRGINITY WAS LOST WHLE PROSTITUTING AND LIBIDO IS 10 OR GREATER
<<set setup.slutty = {
name: "Slutty",
value: 800,
color: "gold",
libido_req: 10,
mult: 2,
client_float: 0.5,
stress_float: 0.25,
gold_float: 0.2,
tooltip: "During Prostitution Jobs, she is twice as likely to find groups, increases chance of finding Clients by 50%, and gains 25% less @@.stress;Stress@@. She can only be assigned Prostitution Jobs and earns 20% less @@.gold;Gold@@ from them."
}>>
NEGATIVE UNIQUE TRAIT GAINED IF VIRGINITY WAS LOST WHILE PROSTITUTING AND NO OTHER CONDITIONS WERE MET
<<set setup.traumatized = {
name: "Traumatized",
value: 1,
color: "red",
tooltip: "Her @@.libido;Libido@@ Stat cannot increase and she cannot be assigned Prostitution Jobs."
}>>
NEGATIVE UNIQUE TRAIT GAINED IF PLAYER TAKES VIRGINITY IF LOVE IS LESS THAN 5
<<set setup.loathing = {
name: "Loathing",
value: 1,
color: "red",
tooltip: "Her @@.love;Love@@ Stat cannot increase and she cannot be assigned Service Jobs."
}>>
<<set setup.beautiful = {
name: "Beautiful",
value: 800,
color: "gold",
float: 0.5,
tooltip: "She earns 50% more @@.gold;Gold@@ and @@.reputation;Reputation@@ from Quests."
}>>
<<set setup.exotic = {
name: "Exotic",
value: 400,
color: "gold",
mult: 3,
float: 1,
tooltip: "Triples the amount of @@.gold;Gold@@ she is worth and she gains twice as much Sex Skill EXP."
}>>
<<set setup.seductress = {
name: "Seductress",
value: 800,
color: "gold",
float: 0.5,
tooltip: "Always find a Client and earns 50% more @@.gold;Gold@@ while Prostituting."
}>>
<<set setup.eloquent = {
name: "Eloquent",
value: 800,
color: "gold",
float: 0.25,
exp_float: 0.5,
tooltip: "She earns 25% better grades in Classes and gains 50% more EXP from them."
}>>
<<set setup.motherly = {
name: "Motherly",
value: 800,
color: "gold",
energy_int: 1,
injury_int: 1,
tooltip: "She can be assigned the Motherly Service Job."
}>>
<<set setup.libidinous = {
name: "Libidinous",
value: 800,
color: "gold",
stack: 0,
max_stack: 100,
tooltip: "She gains @@.lust-energy;Lust Energy@@ during her Prostitution Jobs and converts @@.lust-energy;100 Lust Energy@@ into @@.le;1 Lust Essence@@."
}>>
<<set setup.enchantress = {
name: "Enchantress",
value: 800,
color: "gold",
float: 0.5,
effect_id: "Enchantress's Hindrance",
tooltip: "Her Caretaking and Maintenance Jobs have additional effects. Creatures gain a shield that prevents the first damage it would take and Traps reduce each Raider's @@.aware;Awareness@@ and @@.reas;Reason@@ by 50% ."
}>>
NEGATIVE TRAITS
<<set setup.bitter = {
name: "Bitter",
value: 1,
color: "red",
float: 0.5,
int: 5,
tooltip: "Decreases her @@.love;Love@@ growth by 50% and her maximum @@.love;Love@@ Stat by @@.love;5@@."
}>>
<<set setup.rebel = {
name: "Rebel",
value: 1,
color: "red",
float: 0.5,
int: 5,
tooltip: "Decreases her @@.obedience;Obedience@@ growth by 50% and her maximum @@.obedience;Obedience@@ Stat by @@.obedience;5@@."
}>>
<<set setup.shy = {
name: "Shy",
value: 1,
color: "red",
float: 0.5,
int: 5,
tooltip: "Decreases her @@.libido;Libido@@ growth by 50% and her maximum @@.libido;Libido@@ Stat by @@.libido;5@@."
}>>
<<set setup.feeble = {
name: "Feeble",
value: 1,
color: "red",
float: 0.5,
int: 5,
tooltip: "Decreases her @@.strength;Strength@@ growth by 50% and her maximum @@.strength;Strength@@ Stat by @@.strength;5@@."
}>>
<<set setup.airhead = {
name: "Air Head",
value: 1,
color: "red",
float: 0.5,
int: 5,
tooltip: "Decreases her @@.intelligence;Intelligence@@ growth by 50% and her maximum @@.intelligence;Intelligence@@ Stat by @@.intelligence;5@@."
}>>
<<set setup.spoiled = {
name: "Spoiled",
value: 1,
color: "red",
float: 0.5,
tooltip: "Increases her Upkeep Cost by 50%."
}>>
<<set setup.soft = {
name: "Soft",
value: 1,
color: "red",
float: 0.5,
tooltip: "She is 50% more likely to become Injured during Incidents."
}>>
<<set setup.rude = {
name: "Rude",
value: 1,
color: "red",
float: 0.5,
tooltip: "Decreases the amount of EXP she gives during Service Jobs by 50%."
}>>
<<set setup.insecure = {
name: "Insecure",
value: 1,
color: "red",
float: 0.5,
tooltip: "Decreases her chances of finding Clients during Prostitution Jobs by 50%."
}>>
<<set setup.vulnerable = {
name: "Vulnerable",
value: 1,
color: "red",
mult: 2,
tooltip: "She is twice as likely to have an Incident during Prostitution Jobs."
}>>
<<set setup.indecent = {
name: "Indecent",
value: 1,
color: "red",
float: 0.5,
tooltip: "Decreases the amount of @@.gold;Gold@@ and @@.reputation;Reputation@@ she earns from Quests by 50%."
}>>
<<set setup.lazy = {
name: "Lazy",
value: 1,
color: "red",
float: 0.5,
tooltip: "Decreases all her Stat growth from Classes by 50%."
}>>
<<set setup.troublesome = {
name: "Troublesome",
value: 1,
color: "red",
float: 0.5,
tooltip: "Decreases the amount of @@.stress;Stress@@ she recovers from being Disciplined by 50%."
}>>
<<set setup.incompetent = {
name: "Incompetent",
value: 1,
color: "red",
float: 0.5,
tooltip: "Decreases all her Sex Skill growth by 50%."
}>>
<<set setup.highstrung = {
name: "High-Strung",
value: 1,
color: "red",
float: 0.25,
mult: 2,
tooltip: "She recovers 25% less @@.stress;Stress@@, increased to 50% while Disobedient."
}>>
<<set setup.anxious = {
name: "Anxious",
value: 1,
color: "red",
mult: 2,
tooltip: "Doubles the amount of @@.stress;Stress@@ she gains during Quests."
}>>
<<set setup.nervous = {
name: "Nervous",
value: 1,
color: "red",
mult: 2,
tooltip: "Doubles the amount of @@.stress;Stress@@ she gains during Training."
}>>
<<set setup.antsy = {
name: "Antsy",
value: 1,
color: "red",
mult: 2,
tooltip: "Doubles the amount of @@.stress;Stress@@ she gains during Classes."
}>>
<<set setup.scared = {
name: "Scared",
value: 1,
color: "red",
mult: 2,
tooltip: "Doubles the amount of @@.stress;Stress@@ she gains during Caretaking Jobs."
}>>
<<set setup.klutzy = {
name: "Klutzy",
value: 1,
color: "red",
mult: 2,
tooltip: "Doubles the amount of @@.stress;Stress@@ she gains during Maintenance Jobs."
}>>
<<set setup.disruptive = {
name: "Disruptive",
value: 1,
color: "red",
float: 0.5,
tooltip: "While Disobedient, she reduces the amount of @@.stress;Stress@@ your other Slaves recover from sleeping by 50%."
}>>
<<set setup.unlucky = {
name: "Unlucky",
value: 1,
color: "red",
float: 0.5,
tooltip: "She is 50% more unlucky."
}>>
<<set setup.emotional = {
name: "Emotional",
value: 1,
color: "red",
int: 50,
float: 0.5,
tooltip: "While her @@.stress;Stress@@ is 50 or higher, decrease her @@.obedience;Obedience@@ checks by 50%."
}>>
*SLAVE TRAIT SET - END*
*SLAVE TRAIT LIST - START*
<<set setup.pos_slave_trait_array to [setup.waifu, setup.passionate, setup.protective, setup.compassionate, setup.mistress, setup.driven, setup.smart, setup.dominate, setup.provocative, setup.influential, setup.loyal, setup.guardian, setup.intellectual, setup.devoted, setup.faithful, setup.determined, setup.caring, setup.sexy, setup.diligent, setup.respected, setup.gentle, setup.crafty, setup.talented, setup.breezy, setup.sneaky, setup.collected, setup.hardy, setup.restrained, setup.stoic, setup.spiritual]>>
<<set setup.rare_slave_trait_rate to 0.025>> sets the % chance a slave has a rare trait
<<set setup.rare_slave_trait_bonus to 2>> multiplies rare trait rate by this amount if raider has a rare trait
<<set setup.rare_slave_trait_array to [setup.beautiful, setup.exotic, setup.seductress, setup.eloquent, setup.motherly, setup.libidinous, setup.enchantress]>>
<<set setup.raid_slave_trait_rate to 0.1>> set the % chance a slave has a raid exclusive trait after a raid
<<set setup.raid_slave_trait_bonus to 2>> multiplies raid trait rate by this amount if raider has a rare trait
<<set setup.raid_slave_trait_array to [setup.gifted, setup.sturdy, setup.brilliant, setup.lucky, setup.attentive, setup.vigorous, setup.prized, setup.fond, setup.intimidating, setup.adoring]>>
<<set setup.market_slave_trait_rate to 0.15>> set the % chance a slave has market exclusive trait in the slave market
<<set setup.market_virgin_rate to 0.05>> set the % chance a slave will have the virgin trait in the slave market
<<set setup.market_slave_trait_array to [setup.behaved, setup.motivated, setup.simplistic, setup.sensual, setup.flirtatious, setup.subordinate, setup.proficient, setup.carefree, setup.assiduous, setup.supportive]>>
<<set setup.neg_slave_trait_array to [setup.bitter, setup.rebel, setup.shy, setup.feeble, setup.airhead, setup.spoiled, setup.soft, setup.rude, setup.insecure, setup.indecent, setup.lazy, setup.scared, setup.klutzy, setup.troublesome, setup.vulnerable, setup.incompetent, setup.anxious, setup.disruptive, setup.nervous, setup.antsy, setup.unlucky, setup.emotional]>>
*SLAVE TRAIT LIST - END*
*SLAVE IMAGE PACKS - START*
lists of folder names that contain images and gifs used for the slaves.
organized by porn type so player can control what they see.
split into busty and petite body types.
pic folder holds a body and face picture
other folders named after sex positions and contain gifs with numbers as names
*SLAVE IMAGE PACKS - END*
* EXAMPLE SLAVE TUTORIAL - START *
<<set $example_slave to clone(setup.slave)>>
<<set $example_slave.name to "Ahri">>
<<set $example_slave.upkeep to 69>>
<<set $example_slave.love to 10>>
<<set $example_slave.obedience to 2>>
<<set $example_slave.libido to 25>>
<<set $example_slave.strength to 20>>
<<set $example_slave.intelligence to 20>>
<<set $example_slave.cur_stress to 50>>
<<set $example_slave.handjob_skill to 10>>
<<set $example_slave.blowjob_skill to 10>>
<<set $example_slave.titjob_skill to 10>>
<<set $example_slave.footjob_skill to 10>>
<<set $example_slave.missionary_skill to 10>>
<<set $example_slave.cowgirl_skill to 10>>
<<set $example_slave.doggy_skill to 10>>
<<set $example_slave.anal_skill to 10>>
<<set $example_slave.traits to [setup.seductress, setup.flirtatious, setup.indecent]>>
<<set $example_slave.total_days to 1>>
<<set $example_slave.body_pic to "[img[images/mistress/example_slave.jpg]]">>
* EXAMPLE SLAVE TUTORIAL - END *
*SLAVE JOBS - START*
NOTES
There are 5 types of tasks, service, prostitution, escort, work, and special.
Service tasks the slave to a creature or the player to service them and give them EXP
Servicing the player requires a certain amount of love while servicing a creature requires a certain amount of obedience
Libido is the main stat used for these tasks and determine how much EXP is gained
Strength and Intelligence are unused
Repeatable task
Cannot fail or get injured
Prostitution tasks the slave to go into town and find a client to hire her for sexual services
Requires a certain amount of Obedience to perform
Libido is used for the success rate of the task
Can fail to find a client
Can get injured
Repeatable task
Escort tasks the slave to spend time with a client to earn money and if all goes well, earn even more gold for sexual services
Requires a certain amount of Obedience to perform
Clients have different stat requirements for escort tasks
If failed escort portion, will not get to service client for extra gold
Extra energy adds to the gold earned for sexual services
Can get injured
Not repeatable, after assigned, the task is removed from the list of tasks
Work tasks send the slave to assist others with various jobs
Requires a certain amount of Obedience to perform
Different jobs use different stats to determine the success of the slave
Extra Energy beyond what was required for long tasks can increase the rewards earned
Can fail earning little or no rewards
Can get injured
Not repeatable, after assigned, the task is removed from the list of tasks
Special tasks are given by unique characters in the game and offer special rewards
They can be prostitution, work, or explore tasks
Once available, they will be available until they are completed
The unique rewards can be anything from new spells, price discounts, ect
Special tasks are repeatable until they are fully completed and the player has earned the unique reward, after that the task is removed and cannot be done again
---PLAYER SERVICES---
days: amount of days until completion, if 0 the task is done immediately
req: the amount of the stat required to perform this task
min, max_exp: the range of the base exp earned
exp_per: amount of exp earned per point of the stat
growth: how much the slaves stats growth is earned
<<set setup.service_best_mod to 1.5>>
<<set setup.service_worst_mod to 0.5>>
type: what type of job this is
sex_type: which types of sexual images will be picked from during this job
difficulty: gives an idea of how difficult a job is and how much the rewards are
positions: Number of Slaves that can work this job at the same time
slaves: holds number of slaves that are working this job
stats_used: displays stats icon of each stat used for job
base_min_exp: smallest amount of EXP earned to start with, before other stats added
base_max_exp: largest amount of EXP earned to start with, before other stats added
STAT_mod: multiple the STAT by this and add it to EXP earned
max_exp_gained: EXP gained from base amount and stat bonuses cannot go past this amount
min_obedience: lowest amount of obedience to get normal rewards
max_obedience: highest amount of obedience to get normal rewards
range_obedience: + or - the range of the obedience required to get normal rewards, if below the range it reduces the rewards but if above the range, increase the rewards
disobedient_low/high: range for base amount of disobedience added to the slave
STAT_exp: amount of the STAT EXP is gained
description: the job description that the player can read before assigning
<<set _service_job_1 = {
name: "Personal Maid",
passage: "Service Job Passage",
type: "Service",
job_type: "Main",
difficulty: "Simple",
slave_index: "",
service_sex: "",
stats_used: ["Love", "Libido"],
unlock_req : {
love: 1,
libido: 1,
strength: 1,
intelligence: 1
},
base_min_exp: 14,
base_max_exp: 16,
love_mod: 2.25,
libido_mod: 2.25,
sexskill_mod: 4.5,
stat_cap: 7,
base_obedience_check: 40,
min_stress: 20,
max_stress: 24,
love_exp: 8,
obedience_exp: 5,
libido_exp: 5,
sexskill_exp: 5,
description: "Assign a Slave to be your maid. This is a great way to build her Love while she keeps your room tidy and get some much needed relief, earning you EXP from her services.",
fail_text: " wasn't pleased about wearing a maid outfit and cleaning your quarters. You call her to you and ask for her services. She is reluctant as she gave in to your request.",
pass_text: " was finishing cleaning around your desk as you entered your Quarters. She notices you shortly after you enter and greets you softly. You sit in your chair and call her to you, ready for her service. She slowly approaches you without saying anything, ready to serve her master."
}>>
<<set _service_job_2 = {
name: "Masseuse",
passage: "Service Job Passage",
type: "Service",
job_type: "Main",
difficulty: "Simple",
slave_index: "",
service_sex: "",
stats_used: ["Love", "Libido"],
unlock_req : {
love: 5,
libido: 1,
strength: 1,
intelligence: 1
},
base_min_exp: 21,
base_max_exp: 23,
love_mod: 2.75,
libido_mod: 2.75,
sexskill_mod: 5.5,
stat_cap: 14,
base_obedience_check: 30,
min_stress: 24,
max_stress: 28,
love_exp: 12,
obedience_exp: 8,
libido_exp: 8,
sexskill_exp: 8,
description: "MASSEUSE DESCRIPTION PLACEHOLDER.",
fail_text: " MASSEUSE FAILED PLACEHOLDER",
pass_text: " MASSEUSE PASSED PLACEHOLDER"
}>>
PROSTITUTION JOBS STATS USES:
Love: nothing
Obedience: obedience check, which affects all other outcomes
Libido: finding a client and a smaller portion of increasing gold earned
Strength: reduces chance of being injured
Intelligence: reduces chance of being in a bad situation AKA being raped
Sex Skill: larger portion of increasing gold earned
<<set _prostitution_job_1 = {
name: "Slum Prostitute",
passage: "Prostitution Job Passage",
type: "Prostitution",
job_type: "Main", /* Main or Side Job, default is main job */
slave_index: "",
sex_list: [],
stats_used: ["Libido"],
unlock_req : {
love: 1,
libido: 1,
strength: 1,
intelligence: 1
}, /* stats required for job to appear for slave */
location: "the Slums", /* Used for text */
buddy_system_bool: false,
base_min_gold: 80,
base_max_gold: 90,
libido_mod: 6,
sexskill_mod: 14, /* mult by stat to increase gold earned */
stat_cap: 7, /* Max stat that can be used during job */
min_skill: 2,
max_skill: 4, /* Min and max sex skill required */
range_skill: 1,/* ranged of chosen sex skill required to pass, needs to be beyond this range to be considered above sex skill */
base_obedience_check: 40, /* higher base check = easier to pass */
incident_rate: 100, /* rate used to avoid a rapist, higher = harder to pass 30*/
injury_rate: 100, /* rate used to avoid getting injured, higher = harder to pass 30*/
min_injury: 1,
max_injury: 3,
client_rate: 80, /* rate of finding a client */
client_mod: 3, /* modifier for libido, increases client rate */
client_pref: 5, /* number of sex preferences clients have */
rape_rate: 30, /* chance that client is rapist, triggering incident event */
group_rate: 5, /* chance that group event occurs */
group_mod: 3, /* mult by libido to reduce stamina drained during group events */
min_stress: 32,
max_stress: 38,
obedience_exp: 3,
libido_exp: 8,
strength_exp: 3,
intelligence_exp: 3,
sexskill_exp: 8,
description: "Assign a Slave to be a prostitute in the slums of the village. While the slums have a high rape rate, it is easy to find clients looking for a good time with little expectations.",
fail_text: "FAILED TEXT PLACEHOLDER",
pass_text: "PASSED TEXT PLACEHOLDER"
}>>
<<set _prostitution_job_2 = {
name: "Market Prostitute",
passage: "Prostitution Job Passage",
type: "Prostitution",
job_type: "Main",
difficulty: "Easy",
slave_index: "",
sex_list: [],
stats_used: ["Libido"],
unlock_req : {
love: 1,
libido: 5,
strength: 1,
intelligence: 1
},
location: "the Market Plaza",
buddy_system_bool: false,
base_min_gold: 180,
base_max_gold: 200,
libido_mod: 4.5,
sexskill_mod: 10,
stat_cap: 50,
base_obedience_check: 40,
min_skill: 4,
max_skill: 6,
range_skill: 1,
injury_rate: 30,
strength_mod: 3,
min_injury: 1,
max_injury: 3,
client_rate: 70,
intelligence_mod: 0.75,
client_pref: 5,
group_rate: 4,
rape_rate: 30,
min_rape_check: 3,
max_rape_check: 6,
min_stress: 32,
max_stress: 38,
obedience_exp: 3,
libido_exp: 8,
strength_exp: 3,
intelligence_exp: 3,
sexskill_exp: 8,
description: "Assign a Slave to be a prostitute in the town's market district. While the market district isn't the best place to find customers, it's safer and the customers offer a little more.",
fail_text: "FAILED TEXT PLACEHOLDER",
pass_text: "PASSED TEXT PLACEHOLDER"
}>>
<<set _caretaker_job_1 = {
name: "Basic Needs",
passage: "Caretaker Job Passage",
type: "Caretaker",
job_type: "Main",
difficulty: "Easy",
slave_index: "",
creature_index: "",
stats_used: ["Strength"],
unlock_req : {
love: 1,
libido: 1,
strength: 1,
intelligence: 1
},
hp_mod: 2,
atk_mod: 1,
exp_mod: 2.5,
stat_cap: 7,
base_obedience_check: 40,
incident_rate: 25,
injury_rate: 25,
min_injury: 1,
max_injury: 3,
min_stress: 19,
max_stress: 21,
obedience_exp: 3,
strength_exp: 8,
description: "Assign a Slave to be the caretaker of one of your Creature, slightly increasing their @@.health;Health@@, Attack Stats, and the amount of EXP they gain.",
fail_text: " walked into the Creatures room and halfheartedly fed it and tended to their wounds before quickly leaving.",
pass_text: " entered the room the Creatures was being kept in and happily took care of it, spending extra time to make sure it was ready to go for the Raid tonight."
}>>
<<set _maintenance_job_1 = {
name: "Basic Inspection",
passage: "Maintenance Job Passage",
type: "Maintenance",
job_type: "Main",
difficulty: "Easy",
slave_index: "",
trap_index: "",
stats_used: ["Intelligence"],
unlock_req : {
love: 1,
libido: 1,
strength: 1,
intelligence: 1
},
check_mod: 2.5,
triggers_mod: 0.25,
stat_cap: 7,
base_obedience_check: 40,
incident_rate: 25,
injury_rate: 25,
min_injury: 1,
max_injury: 3,
min_stress: 19,
max_stress: 21,
obedience_exp: 3,
intelligence_exp: 8,
description: "Assign a Slave to perform maintenance checks for one of your Trap rooms, greatly increasing its Trapcheck or Spellcheck, but wears off after a certain number of triggers.",
fail_text: " entered the Trap room and quickly looked over it before lounging around until the Raid was about to start.",
pass_text: " entered the room where the Trap was setup and carefully examined it, making sure it was in perfect condition for tonight."
}>>
SPECIAL JOBS
<<set setup.motherly_service_job = {
name: "Motherly Care",
passage: "Service Job Passage",
type: "Service",
job_type: "Main",
difficulty: "Special",
slave_index: "",
service_sex: "",
stats_used: ["Love", "Libido"],
unlock_req : {
love: 3,
libido: 3,
strength: 0,
intelligence: 0
},
base_min_exp: 4,
base_max_exp: 6,
love_mod: 3,
libido_mod: 1.5,
sexskill_mod: 2.25,
stat_cap: 30,
base_obedience_check: 20,
min_stress: 12,
max_stress: 16,
love_exp: 6,
obedience_exp: 2,
libido_exp: 2,
sexskill_exp: 2,
description: "The Slave assigned this Job not only take care of you, but your other Slaves as well. She gives you a small amount of EXP and you gain 1 additional @@.energy;Energy@@ at the start of the next day. At the end of the night, she helps your other Slaves recover their @@.stress;Stress@@ and provides aid to an Injured Slave. She gains a portion of the @@.stress;Stress@@ recovered by your other Slaves.",
fail_text: " MOTHERLY PLACEHOLDER.",
pass_text: " MOTHERLY PLACEHOLDER."
}>>
<<set setup.morning_gratitude_service_job = {
name: "Morning Gratitude",
passage: "Service Job Passage",
type: "Service",
job_type: "Main",
difficulty: "Special",
slave_index: "",
service_sex: "",
stats_used: ["Love", "Libido"],
unlock_req : {
love: 1,
libido: 1,
strength: 1,
intelligence: 1
},
base_min_exp: 28,
base_max_exp: 32,
love_mod: 12.6,
libido_mod: 6.3,
sexskill_mod: 6.3,
stat_cap: 200,
base_obedience_check: 55,
min_stress: 5,
max_stress: 10,
love_exp: 20,
obedience_exp: 6,
libido_exp: 15,
sexskill_exp: 15,
description: " MORNING GRATITUDE DESCRIPTION PLACEHOLDER",
fail_text: " FAILED PLACEHOLDER.",
pass_text: " PASSED PLACEHOLDER."
}>>
<<set setup.adoration_service_job = {
name: "Cock Worship",
passage: "Service Job Passage",
type: "Service",
job_type: "Main",
difficulty: "Difficult",
slave_index: "",
service_sex: "",
stats_used: ["Love", "Libido"],
unlock_req : {
love: 10,
libido: 1,
strength: 1,
intelligence: 1
},
base_min_exp: 45,
base_max_exp: 50,
love_mod: 5,
love_cap: 150,
libido_mod: 5,
libido_cap: 50,
sexskill_mod: 10,
sexskill_cap: 50,
base_obedience_check: -10,
min_stress: 28,
max_stress: 35,
love_exp: 16,
obedience_exp: 8,
libido_exp: 8,
sexskill_exp: 8,
description: "COCK WORSHIP DESCRIPTION PLACEHOLDER.",
fail_text: "FAILED PLACEHOLDER.",
pass_text: "PASSED PLACEHOLDER."
}>>
* SLAVE JOBS - END *
* SLAVE JOB LISTS - START *
<<set setup.serviceJobs to [_service_job_1, _service_job_2]>>
<<set setup.prostitutionJobs to [_prostitution_job_1, _prostitution_job_2]>>
<<set setup.caretakerJobs to [_caretaker_job_1]>>
<<set setup.maintenanceJobs to [_maintenance_job_1]>>
* SLAVE JOB LISTS - END *
* SLAVE QUESTS - START *
Slave Quests are missions that can be taken from the adventurers guild and assigned to one of the player's slaves. Quests can be assigned to any slave, but rewards are earned based on how well they do. Less than 60% is failed, only half the gold is earned, between 60% and 90% is passed, gold and rep are earned, and over 90% is completed, earning 20% more gold and rep and the treasure. Quests can take between 1 to 3 days to complete and once completed, the player will earn Gold and Reputation based on how well the Slave did.
Trivial Quests: stats between 1 - 4
Easy Quests: stats between 5 - 10
Standard Quests: stats between 11 - 18
Challenging Quests: stats between 19 - 24
Demanding Quests: stats between 25 and up
* Simple Quests *
<<set _trivialQuest0 = {
name: "Escort Me",
slave_index: "",
type: "Basic",
rank: 1,
difficulty: "Trivial",
gold: 0,
min_gold: 50,
max_gold: 55,
reputation: 0,
min_rep: 13,
max_rep: 15,
rare_rate: 0,
uncommon_rate: 0.025,
treasure: "",
min_libido: 1,
max_libido: 2,
libido_req: 0,
min_str: 0,
max_str: 0,
str_req: 0,
min_intel: 0,
max_intel: 0,
intel_req: 0,
total_stats: 0,
stat_cap: 5,
base_obedience_check: 35,
duration: 1,
stress_gained: 0,
min_stress: 20,
max_stress: 25,
obedience_exp: 2,
libido_exp: 4,
strength_exp: 0,
intelligence_exp: 0,
description: "DESCRIPTION PLACEHOLDER"
}>>
<<set _trivialQuest1 = {
name: "Yard Work",
slave_index: "",
type: "Basic",
rank: 1,
difficulty: "Trivial",
gold: 0,
min_gold: 50,
max_gold: 55,
reputation: 0,
min_rep: 13,
max_rep: 15,
rare_rate: 0,
uncommon_rate: 0.025,
treasure: "",
min_libido: 0,
max_libido: 0,
libido_req: 0,
min_str: 1,
max_str: 2,
str_req: 0,
min_intel: 0,
max_intel: 0,
intel_req: 0,
total_stats: 0,
stat_cap: 5,
base_obedience_check: 35,
duration: 1,
stress_gained: 0,
min_stress: 20,
max_stress: 25,
obedience_exp: 2,
libido_exp: 0,
strength_exp: 4,
intelligence_exp: 0,
description: "DESCRIPTION PLACEHOLDER"
}>>
<<set _trivialQuest2 = {
name: "Alchemy Assistant",
slave_index: "",
type: "Basic",
rank: 1,
difficulty: "Trivial",
gold: 0,
min_gold: 50,
max_gold: 55,
reputation: 0,
min_rep: 13,
max_rep: 15,
rare_rate: 0,
uncommon_rate: 0.025,
treasure: "",
min_libido: 0,
max_libido: 0,
libido_req: 0,
min_str: 0,
max_str: 0,
str_req: 0,
min_intel: 1,
max_intel: 2,
intel_req: 0,
total_stats: 0,
stat_cap: 5,
base_obedience_check: 35,
duration: 1,
stress_gained: 0,
min_stress: 20,
max_stress: 25,
obedience_exp: 2,
libido_exp: 0,
strength_exp: 0,
intelligence_exp: 4,
description: "DESCRIPTION PLACEHOLDER"
}>>
<<set _trivialQuest3 = {
name: "LIB QUEST",
slave_index: "",
type: "Basic",
rank: 1,
difficulty: "Trivial",
gold: 0,
min_gold: 65,
max_gold: 70,
reputation: 0,
min_rep: 20,
max_rep: 22,
rare_rate: 0,
uncommon_rate: 0.025,
treasure: "",
min_libido: 2,
max_libido: 4,
libido_req: 0,
min_str: 0,
max_str: 0,
str_req: 0,
min_intel: 0,
max_intel: 0,
intel_req: 0,
total_stats: 0,
stat_cap: 5,
base_obedience_check: 30,
duration: 1,
stress_gained: 0,
min_stress: 28,
max_stress: 33,
obedience_exp: 2,
libido_exp: 5,
strength_exp: 0,
intelligence_exp: 0,
description: "DESCRIPTION PLACEHOLDER"
}>>
<<set _trivialQuest4 = {
name: "STR QUEST",
slave_index: "",
type: "Basic",
rank: 1,
difficulty: "Trivial",
gold: 0,
min_gold: 65,
max_gold: 70,
reputation: 0,
min_rep: 20,
max_rep: 22,
rare_rate: 0,
uncommon_rate: 0.025,
treasure: "",
min_libido: 0,
max_libido: 0,
libido_req: 0,
min_str: 2,
max_str: 4,
str_req: 0,
min_intel: 0,
max_intel: 0,
intel_req: 0,
total_stats: 0,
stat_cap: 5,
base_obedience_check: 30,
duration: 1,
stress_gained: 0,
min_stress: 28,
max_stress: 33,
obedience_exp: 2,
libido_exp: 0,
strength_exp: 5,
intelligence_exp: 0,
description: "DESCRIPTION PLACEHOLDER"
}>>
<<set _trivialQuest5 = {
name: "INT QUEST",
slave_index: "",
type: "Basic",
rank: 1,
difficulty: "Trivial",
gold: 0,
min_gold: 65,
max_gold: 70,
reputation: 0,
min_rep: 20,
max_rep: 22,
rare_rate: 0,
uncommon_rate: 0.025,
treasure: "",
min_libido: 0,
max_libido: 0,
libido_req: 0,
min_str: 0,
max_str: 0,
str_req: 0,
min_intel: 2,
max_intel: 4,
intel_req: 0,
total_stats: 0,
stat_cap: 5,
base_obedience_check: 30,
duration: 1,
stress_gained: 0,
min_stress: 28,
max_stress: 33,
obedience_exp: 2,
libido_exp: 0,
strength_exp: 0,
intelligence_exp: 5,
description: "DESCRIPTION PLACEHOLDER"
}>>
<<set _trivialQuest6 = {
name: "Waitress Needed",
slave_index: "",
type: "Basic",
rank: 1,
difficulty: "Trivial",
gold: 0,
min_gold: 100,
max_gold: 110,
reputation: 0,
min_rep: 34,
max_rep: 38,
rare_rate: 0,
uncommon_rate: 0.025,
treasure: "",
min_libido: 3,
max_libido: 4,
libido_req: 0,
min_str: 1,
max_str: 2,
str_req: 0,
min_intel: 0,
max_intel: 0,
intel_req: 0,
total_stats: 0,
stat_cap: 5,
base_obedience_check: 25,
duration: 2,
stress_gained: 0,
min_stress: 40,
max_stress: 45,
obedience_exp: 3,
libido_exp: 9,
strength_exp: 6,
intelligence_exp: 0,
description: "DESCRIPTION PLACEHOLDER"
}>>
<<set _trivialQuest7 = {
name: "Urgent Delivery",
slave_index: "",
type: "Basic",
rank: 1,
difficulty: "Trivial",
gold: 0,
min_gold: 100,
max_gold: 110,
reputation: 0,
min_rep: 34,
max_rep: 38,
rare_rate: 0,
uncommon_rate: 0.025,
treasure: "",
min_libido: 0,
max_libido: 0,
libido_req: 0,
min_str: 3,
max_str: 4,
str_req: 0,
min_intel: 1,
max_intel: 2,
intel_req: 0,
total_stats: 0,
stat_cap: 5,
base_obedience_check: 25,
duration: 2,
stress_gained: 0,
min_stress: 40,
max_stress: 45,
obedience_exp: 3,
libido_exp: 0,
strength_exp: 9,
intelligence_exp: 6,
description: "DESCRIPTION PLACEHOLDER"
}>>
<<set _trivialQuest8 = {
name: "Clinical Trial",
slave_index: "",
type: "Basic",
difficulty: "Trivial",
gold: 0,
min_gold: 100,
max_gold: 110,
reputation: 0,
min_rep: 34,
max_rep: 38,
rare_rate: 0,
uncommon_rate: 0.025,
treasure: "",
min_libido: 1,
max_libido: 2,
libido_req: 0,
min_str: 0,
max_str: 0,
str_req: 0,
min_intel: 3,
max_intel: 4,
intel_req: 0,
total_stats: 0,
stat_cap: 5,
base_obedience_check: 25,
duration: 2,
stress_gained: 0,
min_stress: 40,
max_stress: 45,
obedience_exp: 3,
libido_exp: 6,
strength_exp: 0,
intelligence_exp: 9,
description: "DESCRIPTION PLACEHOLDER"
}>>
<<set _trivialQuest9 = {
name: "Show Biz",
slave_index: "",
type: "Basic",
difficulty: "Trivial",
gold: 0,
min_gold: 85,
max_gold: 90,
reputation: 0,
min_rep: 26,
max_rep: 28,
rare_rate: 0,
uncommon_rate: 0.025,
treasure: "",
min_libido: 1,
max_libido: 3,
libido_req: 0,
min_str: 1,
max_str: 3,
str_req: 0,
min_intel: 1,
max_intel: 3,
intel_req: 0,
total_stats: 0,
stat_cap: 5,
base_obedience_check: 25,
duration: 1,
stress_gained: 0,
min_stress: 35,
max_stress: 40,
obedience_exp: 2,
libido_exp: 5,
strength_exp: 5,
intelligence_exp: 5,
description: "DESCRIPTION PLACEHOLDER"
}>>
<<set _trivialQuest10 = {
name: "LIB STR INT QUEST",
slave_index: "",
type: "Basic",
difficulty: "Trivial",
gold: 0,
min_gold: 125,
max_gold: 135,
reputation: 0,
min_rep: 46,
max_rep: 48,
rare_rate: 0,
uncommon_rate: 0.025,
treasure: "",
min_libido: 2,
max_libido: 4,
libido_req: 0,
min_str: 2,
max_str: 4,
str_req: 0,
min_intel: 2,
max_intel: 4,
intel_req: 0,
total_stats: 0,
stat_cap: 5,
base_obedience_check: 25,
duration: 2,
stress_gained: 0,
min_stress: 41,
max_stress: 46,
obedience_exp: 3,
libido_exp: 8,
strength_exp: 8,
intelligence_exp: 8,
description: "DESCRIPTION PLACEHOLDER"
}>>
* Easy Quests *
<<set _easyQuest0 = {
name: "Sewer Nest",
slave_index: "",
type: "Basic",
difficulty: "Easy",
gold: 0,
min_gold: 180,
max_gold: 190,
reputation: 0,
min_rep: 56,
max_rep: 60,
rare_rate: 0.01,
uncommon_rate: 0.25,
treasure: "",
min_libido: 0,
max_libido: 0,
libido_req: 0,
min_str: 5,
max_str: 7,
str_req: 0,
min_intel: 0,
max_intel: 0,
intel_req: 0,
total_stats: 0,
stat_cap: 5,
base_obedience_check: 20,
duration: 1,
stress_gained: 0,
min_stress: 38,
max_stress: 42,
obedience_exp: 5,
libido_exp: 0,
strength_exp: 12,
intelligence_exp: 0,
description: "DESCRIPTION PLACEHOLDER"
}>>
<<set _easyQuest1 = {
name: "LIB QUEST",
slave_index: "",
type: "Basic",
difficulty: "Easy",
gold: 0,
min_gold: 180,
max_gold: 190,
reputation: 0,
min_rep: 56,
max_rep: 60,
rare_rate: 0.01,
uncommon_rate: 0.25,
treasure: "",
min_libido: 5,
max_libido: 7,
libido_req: 0,
min_str: 0,
max_str: 0,
str_req: 0,
min_intel: 0,
max_intel: 0,
intel_req: 0,
total_stats: 0,
stat_cap: 5,
base_obedience_check: 20,
duration: 1,
stress_gained: 0,
min_stress: 38,
max_stress: 42,
obedience_exp: 5,
libido_exp: 12,
strength_exp: 0,
intelligence_exp: 0,
description: "DESCRIPTION PLACEHOLDER"
}>>
<<set _easyQuest2 = {
name: "INT QUEST",
slave_index: "",
type: "Basic",
difficulty: "Easy",
gold: 0,
min_gold: 180,
max_gold: 190,
reputation: 0,
min_rep: 56,
max_rep: 60,
rare_rate: 0.01,
uncommon_rate: 0.25,
treasure: "",
min_libido: 0,
max_libido: 0,
libido_req: 0,
min_str: 0,
max_str: 0,
str_req: 0,
min_intel: 5,
max_intel: 7,
intel_req: 0,
total_stats: 0,
stat_cap: 5,
base_obedience_check: 20,
duration: 1,
stress_gained: 0,
min_stress: 38,
max_stress: 42,
obedience_exp: 5,
libido_exp: 0,
strength_exp: 0,
intelligence_exp: 12,
description: "DESCRIPTION PLACEHOLDER"
}>>
<<set _easyQuest3 = {
name: "LIB STR INT QUEST",
slave_index: "",
type: "Basic",
difficulty: "Easy",
gold: 0,
min_gold: 260,
max_gold: 280,
reputation: 0,
min_rep: 80,
max_rep: 85,
rare_rate: 0.01,
uncommon_rate: 0.25,
treasure: "",
min_libido: 5,
max_libido: 8,
libido_req: 0,
min_str: 5,
max_str: 8,
str_req: 0,
min_intel: 5,
max_intel: 8,
intel_req: 0,
total_stats: 0,
stat_cap: 5,
base_obedience_check: 20,
duration: 2,
stress_gained: 0,
min_stress: 38,
max_stress: 42,
obedience_exp: 7,
libido_exp: 16,
strength_exp: 16,
intelligence_exp: 16,
description: "DESCRIPTION PLACEHOLDER"
}>>
* SPECIAL QUESTS *
<<set setup.saraQuest0 = {
name: "Open Trade Route",
passage: "Basic Quest Passage",
slave_index: "",
type: "Special",
difficulty: "Trivial",
gold: 0,
min_gold: 44,
max_gold: 48,
reputation: 0,
min_rep: 6,
max_rep: 10,
rare_rate: 0,
uncommon_rate: 0,
min_libido: 3,
max_libido: 4,
libido_req: 0,
min_str: 3,
max_str: 4,
str_req: 0,
min_intel: 3,
max_intel: 4,
intel_req: 0,
total_stats: 0,
stat_cap: 5,
base_obedience_check: 40,
duration: 1,
min_stress: 22,
max_stress: 27,
stress_gained: 0,
obedience_exp: 2,
libido_exp: 4,
strength_exp: 4,
intelligence_exp: 4,
description: "DESCRIPTION PLACEHOLDER"
}>>
- QUEST LISTS -
<<set setup.trivialQuestList to [_trivialQuest0, _trivialQuest1, _trivialQuest2, _trivialQuest3, _trivialQuest4, _trivialQuest5, _trivialQuest6, _trivialQuest7, _trivialQuest8, _trivialQuest9, _trivialQuest10]>>
<<set setup.easyQuestList to [_easyQuest0, _easyQuest1, _easyQuest2, _easyQuest3]>>
<<set setup.standardQuestList to []>>
<<set setup.challengingQuestList to []>>
<<set setup.demandingQuestList to []>>
Quest Board Variables
<<set setup.guild_quest_timer to 4>>
* SLAVE QUESTS - END *
* SLAVE CLASSES - START *
Slave Classes are tasks that can be assigned to a Slave to increase one or more stats EXP. They can last between 1 to 3 days and have a range of Levels. Class Levels determine the highest a stat can be increased, example: beginner class can only increase a stat up to 7, intermediate to 15, and expert anything above that. Classes also cost gold and the outcome is determined by their obedience stat. Slaves that do poorly earn very little EXP while slaves that do well earn more EXP then from any Job or Quest
Introduction : can raise stats up to 5, then all EXP gained is divided by 4
Beginner: can raise stats up to 10, then all EXP gained is divided by 4
Intermediate: can raise stats up to 15, then all EXP gained is divided by 4
Expert: can raise stats up to 20, then all EXP gained is divided by 4
Master: can raise stats up to their max
<<set _introductionClass0 = {
name: "Ways to Please",
slave_index: "",
type: "Basic",
level: "Introduction",
rank: 1,
gold: 0,
base_gold: 40,
duration: 0,
min_duration: 1,
max_duration: 3,
base_obedience_check: 40,
stress: 0,
min_stress: 20,
max_stress: 25,
min_obedience: 0,
max_obedience: 0,
obedience_req: 0,
min_libido: 1,
max_libido: 3,
libido_req: 0,
min_str: 0,
max_str: 0,
str_req: 0,
min_intel: 0,
max_intel: 0,
intel_req: 0,
total_stats: 0,
stat_cap: 5,
obedience_exp: 0,
libido_exp: 15,
strength_exp: 0,
intelligence_exp: 0,
description: "DESCRIPTION PLACEHOLDER"
}>>
<<set _introductionClass1 = {
name: "Aerobics for Dummies",
slave_index: "",
type: "Basic",
level: "Introduction",
rank: 1,
gold: 0,
base_gold: 40,
duration: 0,
min_duration: 1,
max_duration: 3,
base_obedience_check: 40,
stress: 0,
min_stress: 20,
max_stress: 25,
min_obedience: 0,
max_obedience: 0,
obedience_req: 0,
min_libido: 0,
max_libido: 0,
libido_req: 0,
min_str: 1,
max_str: 3,
str_req: 0,
min_intel: 0,
max_intel: 0,
intel_req: 0,
total_stats: 0,
stat_cap: 5,
obedience_exp: 0,
libido_exp: 0,
strength_exp: 15,
intelligence_exp: 0,
description: "DESCRIPTION PLACEHOLDER"
}>>
<<set _introductionClass2 = {
name: "Think Like a Slave",
slave_index: "",
type: "Basic",
level: "Introduction",
rank: 1,
gold: 0,
base_gold: 40,
duration: 0,
min_duration: 1,
max_duration: 3,
base_obedience_check: 40,
stress: 0,
min_stress: 20,
max_stress: 25,
min_obedience: 0,
max_obedience: 0,
obedience_req: 0,
min_libido: 0,
max_libido: 0,
libido_req: 0,
min_str: 0,
max_str: 0,
str_req: 0,
min_intel: 1,
max_intel: 3,
intel_req: 0,
total_stats: 0,
stat_cap: 5,
obedience_exp: 0,
libido_exp: 0,
strength_exp: 0,
intelligence_exp: 15,
description: "DESCRIPTION PLACEHOLDER"
}>>
<<set _introductionClass3 = {
name: "Embracing Commands",
slave_index: "",
type: "Basic",
level: "Introduction",
rank: 1,
gold: 0,
base_gold: 40,
duration: 0,
min_duration: 1,
max_duration: 3,
base_obedience_check: 40,
stress: 0,
min_stress: 20,
max_stress: 25,
min_obedience: 1,
max_obedience: 3,
obedience_req: 0,
min_libido: 0,
max_libido: 0,
libido_req: 0,
min_str: 0,
max_str: 0,
str_req: 0,
min_intel: 0,
max_intel: 0,
intel_req: 0,
total_stats: 0,
stat_cap: 5,
obedience_exp: 15,
libido_exp: 0,
strength_exp: 0,
intelligence_exp: 0,
description: "DESCRIPTION PLACEHOLDER"
}>>
<<set _introductionClass4 = {
name: "Learning to say Yes",
slave_index: "",
type: "Basic",
level: "Introduction",
rank: 1,
gold: 0,
base_gold: 60,
duration: 0,
min_duration: 1,
max_duration: 3,
base_obedience_check: 35,
stress: 0,
min_stress: 23,
max_stress: 28,
min_obedience: 3,
max_obedience: 5,
obedience_req: 0,
min_libido: 0,
max_libido: 0,
libido_req: 0,
min_str: 0,
max_str: 0,
str_req: 0,
min_intel: 0,
max_intel: 0,
intel_req: 0,
total_stats: 0,
stat_cap: 5,
obedience_exp: 20,
libido_exp: 0,
strength_exp: 0,
intelligence_exp: 0,
description: "DESCRIPTION PLACEHOLDER"
}>>
<<set _introductionClass5 = {
name: "Bedroom Dominance",
slave_index: "",
type: "Basic",
level: "Introduction",
rank: 1,
gold: 0,
base_gold: 60,
duration: 0,
min_duration: 1,
max_duration: 3,
base_obedience_check: 35,
stress: 0,
min_stress: 23,
max_stress: 28,
min_obedience: 0,
max_obedience: 0,
obedience_req: 0,
min_libido: 3,
max_libido: 5,
libido_req: 0,
min_str: 0,
max_str: 0,
str_req: 0,
min_intel: 0,
max_intel: 0,
intel_req: 0,
total_stats: 0,
stat_cap: 5,
obedience_exp: 0,
libido_exp: 20,
strength_exp: 0,
intelligence_exp: 0,
description: "DESCRIPTION PLACEHOLDER"
}>>
<<set _introductionClass6 = {
name: "Self Defense",
slave_index: "",
type: "Basic",
level: "Introduction",
rank: 1,
gold: 0,
base_gold: 60,
duration: 0,
min_duration: 1,
max_duration: 3,
base_obedience_check: 35,
stress: 0,
min_stress: 23,
max_stress: 28,
min_obedience: 0,
max_obedience: 0,
obedience_req: 0,
min_libido: 0,
max_libido: 0,
libido_req: 0,
min_str: 3,
max_str: 5,
str_req: 0,
min_intel: 0,
max_intel: 0,
intel_req: 0,
total_stats: 0,
stat_cap: 5,
obedience_exp: 0,
libido_exp: 0,
strength_exp: 20,
intelligence_exp: 0,
description: "DESCRIPTION PLACEHOLDER"
}>>
<<set _introductionClass7 = {
name: "ELEGANCE!",
slave_index: "",
type: "Basic",
level: "Introduction",
rank: 1,
gold: 0,
base_gold: 60,
duration: 0,
min_duration: 1,
max_duration: 3,
base_obedience_check: 35,
stress: 0,
min_stress: 23,
max_stress: 28,
min_obedience: 0,
max_obedience: 0,
obedience_req: 0,
min_libido: 0,
max_libido: 0,
libido_req: 0,
min_str: 0,
max_str: 0,
str_req: 0,
min_intel: 3,
max_intel: 5,
intel_req: 0,
total_stats: 0,
stat_cap: 5,
obedience_exp: 0,
libido_exp: 0,
strength_exp: 0,
intelligence_exp: 20,
description: "DESCRIPTION PLACEHOLDER"
}>>
<<set _introductionClass8 = {
name: "ALL CLASS",
slave_index: "",
type: "Basic",
level: "Introduction",
rank: 1,
gold: 0,
base_gold: 60,
duration: 0,
min_duration: 1,
max_duration: 3,
base_obedience_check: 35,
stress: 0,
min_stress: 23,
max_stress: 28,
min_obedience: 1,
max_obedience: 3,
obedience_req: 0,
min_libido: 1,
max_libido: 3,
libido_req: 0,
min_str: 1,
max_str: 3,
str_req: 0,
min_intel: 1,
max_intel: 3,
intel_req: 0,
total_stats: 0,
stat_cap: 5,
obedience_exp: 8,
libido_exp: 8,
strength_exp: 8,
intelligence_exp: 8,
description: "DESCRIPTION PLACEHOLDER"
}>>
BEGINNER CLASSES
<<set _beginnerClass0 = {
name: "Bringing the Fire",
slave_index: "",
type: "Basic",
level: "Beginner",
rank: 1,
gold: 0,
base_gold: 100,
duration: 0,
min_duration: 1,
max_duration: 3,
base_obedience_check: 20,
stress: 0,
min_stress: 30,
max_stress: 35,
min_obedience: 0,
max_obedience: 0,
obedience_req: 0,
min_libido: 6,
max_libido: 8,
libido_req: 0,
min_str: 0,
max_str: 0,
str_req: 0,
min_intel: 0,
max_intel: 0,
intel_req: 0,
total_stats: 0,
stat_cap: 10,
obedience_exp: 0,
libido_exp: 35,
strength_exp: 0,
intelligence_exp: 0,
description: "DESCRIPTION PLACEHOLDER"
}>>
<<set _beginnerClass1 = {
name: "OBI CLASS",
slave_index: "",
type: "Basic",
level: "Beginner",
rank: 1,
gold: 0,
base_gold: 100,
duration: 0,
min_duration: 1,
max_duration: 3,
base_obedience_check: 20,
stress: 0,
min_stress: 30,
max_stress: 35,
min_obedience: 6,
max_obedience: 8,
obedience_req: 0,
min_libido: 0,
max_libido: 0,
libido_req: 0,
min_str: 0,
max_str: 0,
str_req: 0,
min_intel: 0,
max_intel: 0,
intel_req: 0,
total_stats: 0,
stat_cap: 10,
obedience_exp: 35,
libido_exp: 0,
strength_exp: 0,
intelligence_exp: 0,
description: "DESCRIPTION PLACEHOLDER"
}>>
<<set _beginnerClass2 = {
name: "STR CLASS",
slave_index: "",
type: "Basic",
level: "Beginner",
rank: 1,
gold: 0,
base_gold: 100,
duration: 0,
min_duration: 1,
max_duration: 3,
base_obedience_check: 20,
stress: 0,
min_stress: 30,
max_stress: 35,
min_obedience: 0,
max_obedience: 0,
obedience_req: 0,
min_libido: 0,
max_libido: 0,
libido_req: 0,
min_str: 6,
max_str: 8,
str_req: 0,
min_intel: 0,
max_intel: 0,
intel_req: 0,
total_stats: 0,
stat_cap: 10,
obedience_exp: 0,
libido_exp: 0,
strength_exp: 35,
intelligence_exp: 0,
description: "DESCRIPTION PLACEHOLDER"
}>>
<<set _beginnerClass3 = {
name: "INT CLASS",
slave_index: "",
type: "Basic",
level: "Beginner",
rank: 1,
gold: 0,
base_gold: 100,
duration: 0,
min_duration: 1,
max_duration: 3,
base_obedience_check: 20,
stress: 0,
min_stress: 30,
max_stress: 35,
min_obedience: 0,
max_obedience: 0,
obedience_req: 0,
min_libido: 0,
max_libido: 0,
libido_req: 0,
min_str: 0,
max_str: 0,
str_req: 0,
min_intel: 6,
max_intel: 8,
intel_req: 0,
total_stats: 0,
stat_cap: 10,
obedience_exp: 0,
libido_exp: 0,
strength_exp: 0,
intelligence_exp: 35,
description: "DESCRIPTION PLACEHOLDER"
}>>
* SLAVE CLASSES - END *
* SLAVE CLASS LIST - START *
<<set setup.introductionClassList to [_introductionClass0, _introductionClass1, _introductionClass2, _introductionClass3, _introductionClass4, _introductionClass5, _introductionClass6, _introductionClass7, _introductionClass8]>>
<<set setup.beginnerClassList to [_beginnerClass0, _beginnerClass1, _beginnerClass2, _beginnerClass3]>>
<<set setup.expertClassList to []>>
* SLAVE CLASS LIST - END *
-CREATURE VARIABLES-
*NOTES - START*
*NOTES - END*
*CREATURE VARIBALES*
<<set setup.creature_nextlevel_constant to 23>> this amount reduces the required exp in the early levels to level up
----------CREATURE NEXT LEVEL EXP EQUATION----------
((CreatureLevel * CreatureLevel) + CreatureLevelConstant) * CreatureGrowthRate (smaller growth rate means gain levels faster)
UPGRADE MODIFIERS
<<set setup.creature_upkeep_mod to 1.5>> increases a creatures upkeep cost by this amount after upgrading
<<set setup.creature_growthrate_mod to 0.5>> increase a creatures growth rate by this amount after upgrading
<<set _report to {
raiders: 0,
captures: 0,
abandons: 0,
exp_gained: 0,
levels_gained: 0,
trap_attempts: 0,
trap_successes: 0,
spell_attempts: 0,
spell_successes: 0
}>>
*CREATURE DATA SETS - START*
* Rank 1 Creatures *
-SLIME-
* SLIME PICS *
<<set _slime_pics to {
slender: ["[img[images/creatures/slime/basic_slime/slender/0.jpg]]", "[img[images/creatures/slime/basic_slime/slender/1.jpg]]", "[img[images/creatures/slime/basic_slime/slender/2.jpg]]", "[img[images/creatures/slime/basic_slime/slender/3.jpg]]", "[img[images/creatures/slime/basic_slime/slender/4.jpg]]"],
average: ["[img[images/creatures/slime/basic_slime/average/0.jpg]]", "[img[images/creatures/slime/basic_slime/average/1.jpg]]", "[img[images/creatures/slime/basic_slime/average/2.jpg]]", "[img[images/creatures/slime/basic_slime/average/3.jpg]]", "[img[images/creatures/slime/basic_slime/average/4.jpg]]"],
busty: ["[img[images/creatures/slime/basic_slime/busty/0.jpg]]", "[img[images/creatures/slime/basic_slime/busty/1.jpg]]", "[img[images/creatures/slime/basic_slime/busty/2.jpg]]", "[img[images/creatures/slime/basic_slime/busty/3.jpg]]", "[img[images/creatures/slime/basic_slime/busty/4.jpg]]"]
}>>
<<set _big_slime_pics to {
slender: _slime_pics.slender.concat("[img[images/creatures/slime/big_slime/slender/0.jpg]]", "[img[images/creatures/slime/big_slime/slender/1.jpg]]", "[img[images/creatures/slime/big_slime/slender/2.jpg]]"),
average: _slime_pics.average.concat("[img[images/creatures/slime/big_slime/average/0.jpg]]", "[img[images/creatures/slime/big_slime/average/1.jpg]]", "[img[images/creatures/slime/big_slime/average/2.jpg]]"),
busty: _slime_pics.busty.concat("[img[images/creatures/slime/big_slime/busty/0.jpg]]", "[img[images/creatures/slime/big_slime/busty/1.jpg]]", "[img[images/creatures/slime/big_slime/busty/2.jpg]]")
}>>
<<set _toxic_slime_pics to {
slender: _slime_pics.slender.concat("[img[images/creatures/slime/toxic_slime/slender/0.jpg]]", "[img[images/creatures/slime/toxic_slime/slender/1.jpg]]", "[img[images/creatures/slime/toxic_slime/slender/2.jpg]]"),
average: _slime_pics.average.concat("[img[images/creatures/slime/toxic_slime/average/0.jpg]]", "[img[images/creatures/slime/toxic_slime/average/1.jpg]]", "[img[images/creatures/slime/toxic_slime/average/2.jpg]]"),
busty: _slime_pics.busty.concat("[img[images/creatures/slime/toxic_slime/busty/0.jpg]]", "[img[images/creatures/slime/toxic_slime/busty/1.jpg]]", "[img[images/creatures/slime/toxic_slime/busty/2.jpg]]")
}>>
<<set _horny_slime_pics to {
slender: _slime_pics.slender.concat("[img[images/creatures/slime/horny_slime/slender/0.jpg]]", "[img[images/creatures/slime/horny_slime/slender/1.jpg]]", "[img[images/creatures/slime/horny_slime/slender/2.jpg]]"),
average: _slime_pics.average.concat("[img[images/creatures/slime/horny_slime/average/0.jpg]]", "[img[images/creatures/slime/horny_slime/average/1.jpg]]", "[img[images/creatures/slime/horny_slime/average/2.jpg]]"),
busty: _slime_pics.busty.concat("[img[images/creatures/slime/horny_slime/busty/0.jpg]]", "[img[images/creatures/slime/horny_slime/busty/1.jpg]]", "[img[images/creatures/slime/horny_slime/busty/2.jpg]]")
}>>
* SLIME UPGRADES *
<<set _big_slime = {
name: "Giant Slime",
prefix: "it",
creature_types: ["Monster"],
trap_types: [],
attack_type: "Physical",
hp: 60,
atk: 0,
pres: 0,
mres: 0,
sex: 0,
rate: 0,
targets: 3,
fetishes: ["Getting Dirty", "Pussy"],
pic: "[img[images/creatures/slime/big_slime/profile.jpg]]",
raider_pics: _big_slime_pics,
capture_entry: "She was Captured by the Giant Slime after getting her pussy stretched and pounded while trapped inside it.",
defeat_entry: "Engulfed in it's body, she could not escape the Giant Slime and was Captured.",
info: "Giant Slimes gain @@.health;60 Health@@. They attack all Raiders in the party, dealing reduced damage, and inflict more <<hovertip '<<print setup.sticky.tooltip>>'>>Sticky<</hovertip>>.",
description: "It attacks the all Raiders in the party, dealing @@.phy;Physical@@ damage (@@.phy;75% Physical Attack@@) and @@.sex;Sexual@@ damage (@@.sex;75% Sexual Attack@@) and inflicting 4-6 <<hovertip '<<print setup.sticky.tooltip>>'>>Sticky<</hovertip>> to each of them."
}>>
<<set _toxic_slime = {
name: "Toxic Slime",
prefix: "it",
creature_types: ["Monster"],
trap_types: [],
attack_type: "Physical",
hp: 40,
atk: 0,
pres: 20,
mres: 20,
sex: 0,
rate: 0,
targets: 1,
fetishes: ["Getting Dirty", "Pussy"],
pic: "[img[images/creatures/slime/toxic_slime/profile.jpg]]",
raider_pics: _toxic_slime_pics,
capture_entry: "She experienced ultimate pleasure from the Toxic Slime's aphrodisiac-filled ooze and was Captured.",
defeat_entry: "Her clothing was melted away from her body, making her defenseless as the Toxic Slime Captured her.",
info: "Toxic Slimes gain @@.health;40 Health@@, @@.pres;20 Physical Resistance@@, and @@.mres;20 Magical Resistance@@. Their attacks inflicts <<hovertip '<<print setup.poisoned.tooltip>>'>>Poison<</hovertip>> and the Raider becomes <<hovertip '<<print setup.stripped.tooltip>>'>>Stripped<</hovertip>> after the attack.",
description: "It attacks the first Raider in the party, dealing @@.phy;Physical@@ damage (@@.phy;100% Physical Attack@@) and @@.sex;Sexual@@ damage (@@.sex;100% Sexual Attack@@) and inflicting them with 2-4 <<hovertip '<<print setup.sticky.tooltip>>'>>Sticky<</hovertip>> and 3 + @@.phy;25% Physical Attack@@ <<hovertip '<<print setup.poisoned.tooltip>>'>>Poison<</hovertip>>. The Raider becomes <<hovertip '<<print setup.stripped.tooltip>>'>>Stripped<</hovertip>> after the attack."
}>>
<<set _horny_slime = {
name: "Horny Slime",
prefix: "it",
creature_types: ["Monster"],
trap_types: [],
attack_type: "Physical",
hp: 40,
atk: 0,
pres: 0,
mres: 0,
sex: 20,
rate: 0,
targets: 1,
fetishes: ["Ass", "Getting Dirty", "Oral", "Pussy"],
pic: "[img[images/creatures/slime/horny_slime/profile.jpg]]",
raider_pics: _horny_slime_pics,
capture_entry: "She was Captured by the Horny Slime after getting all her holes filled and climaxing multiple times before passing out.",
defeat_entry: "The Horny Slime's relentless aggression proved too much and was eventually Captured.",
info: "Horny Slimes gain @@.health;40 Health@@, @@.sex;20 Sexual Attack@@, and the Ass and Oral Fetishes. They attack the Raider twice, dealing reduced damage.",
description: "It attacks the first Raider in the party twice, dealing @@.phy;Physical@@ damage (@@.phy;80% Physical Attack@@) and @@.sex;Sexual@@ damage (@@.sex;80% Sexual Attack@@) and inflicting them with 2-4 <<hovertip '<<print setup.sticky.tooltip>>'>>Sticky<</hovertip>> each attack."
}>>
* BASE SLIME *
<<set setup.slime = {
name: "Slime",
base_name: "Slime",
passage: "Slime Room",
built: true,
prefix: "it",
rank: 1,
in_use: false,
upgrade_list: [_big_slime, _toxic_slime, _horny_slime],
room_type: "Creature",
creature_types: ["Monster"],
trap_types: [],
attack_type: "Physical",
can_capture: true,
summoned: false,
index: 0,
cost: 5,
base_upkeep: 18,
upkeep: 0,
level: 1,
exp: 0,
growth: "Average",
growth_rate: 1.5,
next_level_exp: 0,
upgraded: false,
upgrade_level: 8,
min_injury: 2,
max_injury: 3,
max_hp: 58,
cur_hp: 58,
hp_per_lvl: 9,
cur_max_hp: 0,
atk: 23,
atk_per_lvl: 3.5,
cur_atk: 0,
pres: 45,
pres_per_lvl: 7,
cur_pres: 0,
mres: 18,
mres_per_lvl: 2.5,
cur_mres: 0,
sex: 32,
sex_per_lvl: 5,
cur_sex: 0,
rate: 100,
fetishes: ["Getting Dirty", "Pussy"],
targets: 1,
min_sticky_stacks: 2,
max_sticky_stacks: 4,
big_min_stacks: 4,
big_max_stacks: 6,
big_float: 0.75,
toxic_poisoned: 3,
toxic_float: 0.25,
horny_float: 0.8,
effects: [],
effect_names: [],
report: _report,
total_dmgdealt: 0,
total_sexdealt: 0,
total_dmgtaken: 0,
total_raiders: 0,
total_captures: 0,
total_deaths: 0,
raid_levels_gained: 0,
keeper_levels: 0,
keeper_exp: 0,
keeper_days: 0,
pic: "[img[images/creatures/slime/basic_slime/profile.jpg]]",
raider_pics: _slime_pics,
capture_entry: "The Slime Captured her by sticking to her crotch and playing with her pussy until she climaxed and collapsed.",
defeat_entry: "She was Captured by the Slime after being unable to free herself from it's sticky grasp.",
description: "It attacks the first Raider in the party, dealing @@.physical;Physical@@ damage (@@.phy;100% Physical Attack@@) and @@.sex;Sexual@@ damage (@@.sex;100% Sexual Attack@@) and inflicting them with 2-4 <<hovertip '<<print setup.sticky.tooltip>>'>>Sticky<</hovertip>>."
}>>
-WIZARD-
* WIZARD PICS *
<<set _wizard_pics to {
slender: ["[img[images/creatures/wizard/basic_wizard/slender/0.jpg]]", "[img[images/creatures/wizard/basic_wizard/slender/1.jpg]]", "[img[images/creatures/wizard/basic_wizard/slender/2.jpg]]"],
average: ["[img[images/creatures/wizard/basic_wizard/average/0.jpg]]", "[img[images/creatures/wizard/basic_wizard/average/1.jpg]]", "[img[images/creatures/wizard/basic_wizard/average/2.jpg]]"],
busty: ["[img[images/creatures/wizard/basic_wizard/busty/0.jpg]]", "[img[images/creatures/wizard/basic_wizard/busty/1.jpg]]", "[img[images/creatures/wizard/basic_wizard/busty/2.jpg]]"],
brainwashed : {
slender: ["[img[images/creatures/wizard/basic_wizard/brainwashed/slender/0.jpg]]", "[img[images/creatures/wizard/basic_wizard/brainwashed/slender/1.jpg]]"],
average: ["[img[images/creatures/wizard/basic_wizard/brainwashed/average/0.jpg]]", "[img[images/creatures/wizard/basic_wizard/brainwashed/average/1.jpg]]"],
busty: ["[img[images/creatures/wizard/basic_wizard/brainwashed/busty/0.jpg]]", "[img[images/creatures/wizard/basic_wizard/brainwashed/busty/1.jpg]]"],
}
}>>
<<set _control_pics to {
slender: _wizard_pics.slender.concat("[img[images/creatures/wizard/control_wizard/slender/0.jpg]]"),
average: _wizard_pics.average.concat("[img[images/creatures/wizard/control_wizard/average/0.jpg]]"),
busty: _wizard_pics.slender.concat("[img[images/creatures/wizard/control_wizard/busty/0.jpg]]"),
brainwashed : {
slender: _wizard_pics.brainwashed.slender.concat("[img[images/creatures/wizard/control_wizard/brainwashed/slender/0.jpg]]"),
average: _wizard_pics.brainwashed.slender.concat("[img[images/creatures/wizard/control_wizard/brainwashed/average/0.jpg]]"),
busty: _wizard_pics.brainwashed.slender.concat("[img[images/creatures/wizard/control_wizard/brainwashed/busty/0.jpg]]")
}
}>>
<<set _overlord_pics to {
slender: _wizard_pics.slender.concat("[img[images/creatures/wizard/wizard_overlord/slender/0.jpg]]"),
average: _wizard_pics.average.concat("[img[images/creatures/wizard/wizard_overlord/average/0.jpg]]"),
busty: _wizard_pics.slender.concat("[img[images/creatures/wizard/wizard_overlord/busty/0.jpg]]"),
brainwashed : {
slender: _wizard_pics.brainwashed.slender.concat("[img[images/creatures/wizard/wizard_overlord/brainwashed/slender/0.jpg]]"),
average: _wizard_pics.brainwashed.slender.concat("[img[images/creatures/wizard/wizard_overlord/brainwashed/average/0.jpg]]"),
busty: _wizard_pics.brainwashed.slender.concat("[img[images/creatures/wizard/wizard_overlord/brainwashed/busty/0.jpg]]")
}
}>>
<<set _summoner_pics to {
slender: _wizard_pics.slender.concat("[img[images/creatures/wizard/summoner_wizard/slender/0.jpg]]"),
average: _wizard_pics.average.concat("[img[images/creatures/wizard/summoner_wizard/average/0.jpg]]"),
busty: _wizard_pics.slender.concat("[img[images/creatures/wizard/summoner_wizard/busty/0.jpg]]"),
magicHands : {
slender: ["[img[images/creatures/wizard/summoner_wizard/magic_hands/slender/0.jpg]]", "[img[images/creatures/wizard/summoner_wizard/magic_hands/slender/1.jpg]]"],
average: ["[img[images/creatures/wizard/summoner_wizard/magic_hands/average/0.jpg]]", "[img[images/creatures/wizard/summoner_wizard/magic_hands/average/1.jpg]]"],
busty: ["[img[images/creatures/wizard/summoner_wizard/magic_hands/busty/0.jpg]]", "[img[images/creatures/wizard/summoner_wizard/magic_hands/busty/1.jpg]]"],
}
}>>
* WIZARD UPGRADES *
<<set _control_wizard = {
name: "Control Wizard",
prefix: "he",
creature_types: ["Humanoid"],
trap_types: [],
attack_type: "Magical",
hp: 40,
atk: 20,
pres: 0,
mres: 0,
sex: 0,
rate: 0,
targets: 1,
fetishes: ["Oral"],
pic: "[img[images/creatures/wizard/control_wizard/profile.jpg]]",
raider_pics: _control_pics,
capture_entry: "She was too turn on by the Control Wizard, offering herself to him and becoming Captured.",
defeat_entry: "The Control Wizard's magic was too strong for her to overcome, becoming Captured.",
info: "Control Wizards gain @@.health;40 Health@@ and @@.mag;20 Magical Attack@@. Their Trance Spell causes the Raider to become <<hovertip '<<print setup.submissive.tooltip>>'>>Submissive<</hovertip>> and <<hovertip '<<print setup.absentminded.tooltip>>'>>Absentminded<</hovertip>>.",
description: "At the start of combat, he casts a Trance Spell against the Raider with the highest attack stat. If she fails the Spellcheck (60 + @@.mag;25% Magical Attack@@), she will be put in a trance, becoming <<hovertip '<<print setup.submissive.tooltip>>'>>Submissive<</hovertip>>, <<hovertip '<<print setup.absentminded.tooltip>>'>>Absentminded<</hovertip>>, and <<hovertip '<<print setup.brainwashed.tooltip>>'>>Brainwashed<</hovertip>>, and cannot attack. Then, he attacks the first Raider in the party, dealing @@.mag;Magical@@ (@@.mag;100% Magical Attack@@) and @@.sex;Sexual@@ (@@.sex;100% Sexual Attack@@) damage. His @@.sex;Sexual@@ damage is increased by 50% if the Raider is <<hovertip '<<print setup.brainwashed.tooltip>>'>>Brainwashed<</hovertip>>."
}>>
<<set _wizard_overlord = {
name: "Wizard Overlord",
prefix: "he",
creature_types: ["Humanoid"],
trap_types: [],
attack_type: "Magical",
hp: 0,
atk: 60,
pres: 0,
mres: 0,
sex: 0,
rate: 0,
targets: 1,
fetishes: ["Oral"],
pic: "[img[images/creatures/wizard/wizard_overlord/profile.jpg]]",
raider_pics: _overlord_pics,
capture_entry: "The influence of the Wizard Overlord was too much to overcome and was Captured as she allowed him to violate her mouth.",
defeat_entry: "The Wizard Overlord's magic was far beyond what she was prepared to deal with, brushing her aside easily and Capturing her.",
info: "Wizard Overlords gain @@.mag;60 Magical Attack@@. Their Trance Spell targets all Raider and they become <<hovertip '<<print setup.perverted.tooltip>>'>>Perverted<</hovertip>>.",
description: "At the start of combat, he casts a Trance Spell against all Raiders. Each Raider that fails Spellcheck (60 + @@.mag;25% Magical Attack@@) will be put in a trance, becoming <<hovertip '<<print setup.brainwashed.tooltip>>'>>Brainwashed<</hovertip>> and <<hovertip '<<print setup.perverted.tooltip>>'>>Perverted<</hovertip>> and are unable to attack. Then, he attacks the first Raider in the party, dealing @@.mag;Magical@@ (@@.mag;100% Magical Attack@@) and @@.sex;Sexual@@ (@@.sex;100% Sexual Attack@@) damage. His @@.sex;Sexual@@ damage is increased by 50% if the Raider is <<hovertip '<<print setup.brainwashed.tooltip>>'>>Brainwashed<</hovertip>>."
}>>
<<set _summoner_wizard = {
name: "Summoner Wizard",
prefix: "he",
creature_types: ["Humanoid"],
trap_types: [],
attack_type: "Magical",
hp: 20,
atk: 20,
pres: 0,
mres: 0,
sex: 20,
rate: 0,
targets: 1,
fetishes: ["Oral"],
pic: "[img[images/creatures/wizard/summoner_wizard/profile.jpg]]",
raider_pics: _summoner_pics,
capture_entry: "The Summoner Wizard was able to easily forcer himself on her, making quick work inside her mouth and Capturing her.",
defeat_entry: "She could not mount a meaningful resistance against the Summoner Wizard, eventually being forced to submit and becoming Captured.",
info: "Summoner Wizards gain @@.health;20 Health@@, @@.mag;20 Magical Attack@@, and @@.sex;20 Sexual Attack@@. Instead of casting a Trance Spell, they summon Magic Hands that deal damage to the Raider with the highest attack and prevent her from attacking. If they both attack the same Raider, each deals increased @@.sex;Sexual@@ damage.",
description: "At the start of combat, he summons Magic Hands with the Bondage and Masturbation Fetishes to attack the Raider with the highest attack stat. They deal @@.sex;Sexual@@ (@@.mag;50% Magical Attack@@) damage to the Raider and prevents her from attacking. Then, he attacks the first Raider in the party, dealing @@.mag;Magical@@ (@@.mag;100% Magical Attack@@) and @@.sex;Sexual@@ (@@.sex;100% Sexual Attack@@) damage. If he attacks the same Raider as his Magic Hands, their @@.sex;Sexual@@ damage is increased by 50%."
}>>
* BASE WIZARD *
<<set setup.wizard = {
name: "Wizard",
base_name: "Wizard",
passage: "Wizard Room",
built: true,
prefix: "he",
rank: 1,
in_use: false,
upgrade_list: [_control_wizard, _wizard_overlord, _summoner_wizard],
room_type: "Creature",
creature_types: ["Humanoid"],
trap_types: [],
attack_type: "Magical",
can_capture: true,
summoned: false,
index: 0,
cost: 5,
base_upkeep: 22,
upkeep: 0,
level: 1,
exp: 0,
growth: "Slow",
growth_rate: 1.75,
next_level_exp: 0,
upgraded: false,
upgrade_level: 10,
min_injury: 2,
max_injury: 3,
max_hp: 64,
cur_hp: 64,
hp_per_lvl: 10.25,
cur_max_hp: 0,
atk: 35,
atk_per_lvl: 6,
cur_atk: 0,
pres: 19,
pres_per_lvl: 2.5,
cur_pres: 0,
mres: 28,
mres_per_lvl: 4.5,
cur_mres: 0,
sex: 25,
sex_per_lvl: 4,
cur_sex: 0,
rate: 70,
rate_atk_bonus: 0.4,
fetishes: ["Oral"],
targets: 1,
sex_bonus: 0.5,
control_percent: 25,
control_float: 0.1,
summoner_fetishes: ["Bondage", "Masturbation"],
summoner_float: 0.5,
summoner_bonus: "Gangbang",
effects: [],
effect_names: [],
report: _report,
total_dmgdealt: 0,
total_sexdealt: 0,
total_dmgtaken: 0,
total_raiders: 0,
total_captures: 0,
total_deaths: 0,
raid_levels_gained: 0,
keeper_levels: 0,
keeper_exp: 0,
keeper_days: 0,
pic: "[img[images/creatures/wizard/basic_wizard/profile.jpg]]",
raider_pics: _wizard_pics,
capture_entry: "She found herself deep in a trance and rubbed her pussy until she climaxed, robbing her of the rest of her strength and was Captured.",
defeat_entry: "She was Captured after falling to the Wizard's magic attacks.",
description: "At the start of combat, he casts a Trance Spell against the Raider with the highest attack stat. If she fails the Spellcheck (60 + @@.mag;25% Magical Attack@@), she will be put in a trance, becoming <<hovertip '<<print setup.brainwashed.tooltip>>'>>Brainwashed<</hovertip>> and unable to attack. Then, he attacks the first Raider in the party, dealing @@.mag;Magical@@ (@@.mag;100% Magical Attack@@) and @@.sex;Sexual@@ (@@.sex;100% Sexual Attack@@) damage. All his damage is increased by 25% if the Raider is <<hovertip '<<print setup.brainwashed.tooltip>>'>>Brainwashed<</hovertip>>."
}>>
-SPIDER-
* SPIDER PICS *
<<set _spider_pics to {
slender: ["[img[images/creatures/spider/basic_spider/slender/0.jpg]]", "[img[images/creatures/spider/basic_spider/slender/1.jpg]]", "[img[images/creatures/spider/basic_spider/slender/2.jpg]]", "[img[images/creatures/spider/basic_spider/slender/3.jpg]]", "[img[images/creatures/spider/basic_spider/slender/4.jpg]]"],
average: ["[img[images/creatures/spider/basic_spider/average/0.jpg]]", "[img[images/creatures/spider/basic_spider/average/1.jpg]]", "[img[images/creatures/spider/basic_spider/average/2.jpg]]", "[img[images/creatures/spider/basic_spider/average/3.jpg]]", "[img[images/creatures/spider/basic_spider/average/4.jpg]]"],
busty: ["[img[images/creatures/spider/basic_spider/busty/0.jpg]]", "[img[images/creatures/spider/basic_spider/busty/1.jpg]]", "[img[images/creatures/spider/basic_spider/busty/2.jpg]]", "[img[images/creatures/spider/basic_spider/busty/3.jpg]]", "[img[images/creatures/spider/basic_spider/busty/4.jpg]]"]
}>>
<<set _queen_pics to {
slender: _spider_pics.slender.concat("[img[images/creatures/spider/spider_queen/slender/0.jpg]]", "[img[images/creatures/spider/spider_queen/slender/1.jpg]]"),
average: _spider_pics.slender.concat("[img[images/creatures/spider/spider_queen/average/0.jpg]]", "[img[images/creatures/spider/spider_queen/average/1.jpg]]"),
busty: _spider_pics.slender.concat("[img[images/creatures/spider/spider_queen/busty/0.jpg]]", "[img[images/creatures/spider/spider_queen/busty/1.jpg]]")
}>>
<<set _silk_pics to {
slender: _spider_pics.slender,
average: _spider_pics.slender,
busty: _spider_pics.slender,
trapped : {
slender: ["[img[images/creatures/spider/silk_weaver/slender/0.jpg]]", "[img[images/creatures/spider/silk_weaver/slender/1.jpg]]", "[img[images/creatures/spider/silk_weaver/slender/2.jpg]]"],
average: ["[img[images/creatures/spider/silk_weaver/average/0.jpg]]", "[img[images/creatures/spider/silk_weaver/average/1.jpg]]", "[img[images/creatures/spider/silk_weaver/average/2.jpg]]"],
busty: ["[img[images/creatures/spider/silk_weaver/busty/0.jpg]]", "[img[images/creatures/spider/silk_weaver/busty/1.jpg]]", "[img[images/creatures/spider/silk_weaver/busty/2.jpg]]"]
}
}>>
<<set _cocoon_pics to {
slender: _spider_pics.slender.concat("[img[images/creatures/spider/cocoon_spinner/slender/0.jpg]]", "[img[images/creatures/spider/cocoon_spinner/slender/1.jpg]]"),
average: _spider_pics.slender.concat("[img[images/creatures/spider/cocoon_spinner/average/0.jpg]]", "[img[images/creatures/spider/cocoon_spinner/average/1.jpg]]"),
busty: _spider_pics.slender.concat("[img[images/creatures/spider/cocoon_spinner/busty/0.jpg]]", "[img[images/creatures/spider/cocoon_spinner/busty/1.jpg]]")
}>>
* SPIDER UPGRADES *
<<set _spider_queen = {
name: "Spider Queen",
prefix: "she",
creature_types: ["Insect"],
trap_types: [],
attack_type: "Physical",
hp: 40,
atk: 20,
pres: 0,
mres: 0,
sex: 20,
rate: 0,
targets: 1,
fetishes: ["Aphrodisiac", "Ass"],
pic: "[img[images/creatures/spider/spider_queen/profile.jpg]]",
raider_pics: _queen_pics,
capture_entry: "She was Captured by the Spider Queen and used her anus as a hatchery for her offspring for the rest of the night.",
defeat_entry: "The Spider Queen's relentless attacks over it's territory ended her Raid and was Captured.",
info: "Spider Queens gain @@.health;40 Health@@, @@.phy;20 Physical Attack@@, @@.sex;20 Sexual Attack@@, and the Aphrodisiac Fetish. Their attack inflicts <<hovertip '<<print setup.poisoned.tooltip>>'>>Poisoned<</hovertip>> and <<hovertip '<<print setup.aroused.tooltip>>'>>Aroused<</hovertip>>.",
description: "The Spider Queen defends her nest from anything that dares to enter it. She attacks the first Raider in the party, dealing @@.phy;Physical@@ and @@.sex;Sexual@@ damage with a 75% chance to <<hovertip '<<print setup.pregnant.tooltip>>'>>Impregnate<</hovertip>> her anus for 1 to 2 floors. They also gain 3 + @@.phy;10% Physical Attack@@ <<hovertip '<<print setup.poisoned.tooltip>>'>>Poisoned<</hovertip>> and 3 + @@.sex;10% Sexual Attack@@ <<hovertip '<<print setup.aroused.tooltip>>'>>Aroused<</hovertip>>."
}>>
<<set _silk_weaver = {
name: "Silk Weaver",
prefix: "she",
creature_types: ["Insect"],
trap_types: ["Obstacle"],
attack_type: "Physical",
hp: 20,
atk: 40,
pres: 0,
mres: 0,
sex: 0,
rate: 0,
targets: 1,
fetishes: ["Ass"],
pic: "[img[images/creatures/spider/silk_weaver/profile.jpg]]",
raider_pics: _silk_pics,
capture_entry: "After getting her anus used while caught up in the Silk Weaver's web, she passed out from the pleasure and was Captured.",
defeat_entry: "Left helpless by the Silk Weaver's trap, she was easily defeated and Captured.",
info: "Silk Weavers gain @@.health;20 Health@@, @@.phy;40 Physical Attack@@ and an Obstacle @@.trap;Trapcheck@@. Raiders that fail deals less damage and take more damage this combat.",
description: "Silk Weavers lay in wait for their prey to walk into their silk webs before striking. Before combat, Raiders face her 60 + @@.phy;30% Physical Attack@@ Obstacle Trapcheck. Each Raider that fails gains 5 <<hovertip '<<print setup.sticky.tooltip>>'>>Sticky<</hovertip>> and deals 75% less damage this combat. After, she attacks the first Raider in the party, dealing @@.phy;Physical@@ and @@.sex;Sexual@@ damage with a 75% chance to <<hovertip '<<print setup.pregnant.tooltip>>'>>Impregnate<</hovertip>> her anus for 1 to 2 floors."
}>>
<<set _cocoon_spinner = {
name: "Cocoon Spinner",
prefix: "she",
creature_types: ["Insect"],
trap_types: [],
attack_type: "Physical",
hp: 60,
atk: 0,
pres: 0,
mres: 0,
sex: 0,
rate: 0,
targets: 1,
fetishes: ["Ass", "Bondage", "Getting Dirty"],
pic: "[img[images/creatures/spider/cocoon_spinner/profile.jpg]]",
raider_pics: _cocoon_pics,
capture_entry: "She was Captured because she was unable to escape her cocoon entrapment after getting her ass pleasured by the Cocoon Spinner.",
defeat_entry: "After being defeated by the Cocoon Spinner, she was wrapped in a cocoon casket and stored away.",
info: "Cocoon Spinners gain @@.health;60 Health@@ and the Bondage and Getting Dirty Fetishes. Their attack inflicts <<hovertip '<<- setup.sticky.tooltip>>'>>Sticky<</hovertip>> and prevents the Raider from attacking.",
description: "Cocoon Spinners capture their prey by wrapping them in her strong silk. She attacks the first Raider in the party, dealing @@.phy;Physical@@ and @@.sex;Sexual@@ damage with a 75% chance to <<hovertip '<<print setup.pregnant.tooltip>>'>>Impregnate<</hovertip>> her anus for 1 to 2 floors. The Raider also cannot attack."
}>>
* BASE SPIDER *
<<set setup.spider = {
name: "Spider",
prefix: "she",
base_name: "Spider",
passage: "Spider Room",
built: true,
rank: 1,
in_use: false,
upgrade_list: [_spider_queen, _silk_weaver, _cocoon_spinner],
room_type: "Creature",
creature_types: ["Insect"],
trap_types: [],
attack_type: "Physical",
can_capture: true,
summoned: false,
index: 0,
cost: 5,
base_upkeep: 15,
upkeep: 0,
level: 1,
exp: 0,
growth: "Fast",
growth_rate: 1.25,
next_level_exp: 0,
upgraded: false,
upgrade_level: 7,
min_injury: 2,
max_injury: 3,
max_hp: 68,
cur_hp: 68,
hp_per_lvl: 10.5,
cur_max_hp: 0,
atk: 32,
atk_per_lvl: 4.5,
cur_atk: 0,
pres: 25,
pres_per_lvl: 3.25,
cur_pres: 0,
mres: 22,
mres_per_lvl: 3,
cur_mres: 0,
sex: 30,
sex_per_lvl: 4,
cur_sex: 0,
rate: 75,
fetishes: ["Ass"],
targets: 1,
min_pregnant: 1,
max_pregnant: 2,
pregnant_target: "Anus",
queen_stacks: 3,
queen_float: 0.15,
trapcheck_int: 70,
trapcheck_float: 0.25,
silk_float: 0.5,
cocoon_stacks: 5,
effects: [],
effect_names: [],
report: _report,
total_dmgdealt: 0,
total_sexdealt: 0,
total_dmgtaken: 0,
total_raiders: 0,
total_captures: 0,
total_deaths: 0,
raid_levels_gained: 0,
keeper_levels: 0,
keeper_exp: 0,
keeper_days: 0,
pic: "[img[images/creatures/spider/basic_spider/profile.jpg]]",
raider_pics: _spider_pics,
capture_entry: "After being pulled into the Spider's web and getting her ass used as a nursery, she climaxed and was Captured.",
defeat_entry: "The Spider defeated and Captured her in its web, using her as an egg incubator for the rest of the night.",
description: "Spiders aggressively seek out fertile holes to lay their eggs. She attacks the first Raider in the party, dealing @@.phy;Physical@@ and @@.sex;Sexual@@ damage with a 75% chance to <<hovertip '<<print setup.pregnant.tooltip>>'>>Impregnate<</hovertip>> her anus for 1 to 2 floor."
}>>
- WOLF -
* WOLF PICS *
<<set _wolf_pics to {
slender: ["[img[images/creatures/wolf/basic_wolf/slender/0.jpg]]", "[img[images/creatures/wolf/basic_wolf/slender/1.jpg]]", "[img[images/creatures/wolf/basic_wolf/slender/2.jpg]]"],
average: ["[img[images/creatures/wolf/basic_wolf/average/0.jpg]]", "[img[images/creatures/wolf/basic_wolf/average/1.jpg]]", "[img[images/creatures/wolf/basic_wolf/average/2.jpg]]"],
busty: ["[img[images/creatures/wolf/basic_wolf/busty/0.jpg]]", "[img[images/creatures/wolf/basic_wolf/busty/1.jpg]]", "[img[images/creatures/wolf/basic_wolf/busty/2.jpg]]"],
}>>
<<set _werewolf_pics to {
slender: ["[img[images/creatures/wolf/werewolf/slender/0.jpg]]", "[img[images/creatures/wolf/werewolf/slender/1.jpg]]", "[img[images/creatures/wolf/werewolf/slender/2.jpg]]", "[img[images/creatures/wolf/werewolf/slender/3.jpg]]"],
average: ["[img[images/creatures/wolf/werewolf/average/0.jpg]]", "[img[images/creatures/wolf/werewolf/average/1.jpg]]", "[img[images/creatures/wolf/werewolf/average/2.jpg]]", "[img[images/creatures/wolf/werewolf/average/3.jpg]]"],
busty: ["[img[images/creatures/wolf/werewolf/busty/0.jpg]]", "[img[images/creatures/wolf/werewolf/busty/1.jpg]]", "[img[images/creatures/wolf/werewolf/busty/2.jpg]]", "[img[images/creatures/wolf/werewolf/busty/3.jpg]]"]
}>>
<<set _alpha_pics to {
slender: _wolf_pics.slender.concat("[img[images/creatures/wolf/alpha_wolf/slender/0.jpg]]"),
average: _wolf_pics.average.concat("[img[images/creatures/wolf/alpha_wolf/average/0.jpg]]"),
busty: _wolf_pics.busty.concat("[img[images/creatures/wolf/alpha_wolf/busty/0.jpg]]")
}>>
<<set _stalking_pics to {
slender: _wolf_pics.slender.concat("[img[images/creatures/wolf/stalking_wolf/slender/0.jpg]]"),
average: _wolf_pics.average.concat("[img[images/creatures/wolf/stalking_wolf/average/0.jpg]]"),
busty: _wolf_pics.busty.concat("[img[images/creatures/wolf/stalking_wolf/busty/0.jpg]]")
}>>
* WOLF UPGRADES *
<<set _werewolf = {
name: "Werewolf",
prefix: "he",
creature_types: ["Beast", "Humanoid"],
trap_types: [],
attack_type: "Physical",
hp: 40,
atk: 0,
pres: 20,
mres: 20,
sex: 20,
rate: 0,
targets: 1,
fetishes: ["Big Cocks", "Pussy"],
pic: "[img[images/creatures/wolf/werewolf/profile.jpg]]",
raider_pics: _werewolf_pics,
capture_entry: "Using her as a cock sleeve and pushing her pussy to her limit, she collapsed and was Captured by the Werewolf.",
defeat_entry: "The Werewolf's aggression and lust overcame her and she was defeated and Captured.",
info: "Werewolves gain @@.health;40 Health@@, @@.sex;20 Sexual Attack@@, @@.pres;20 Physical Resistance@@, @@.mres;20 Magical Resistance@@, the Humanoid Creature type, and the Big Cock Fetish. Their attacks deals more @@.sex;Sexual@@ damage, but less @@.phy;Physical@@ damage. They target the Raider with the most @@.lust;Lust@@ filled, and deal bonus @@.sex;Sexual@@ damage to Raiders with high percent of @@.lust;@@ filled.",
description: "He attacks the Raider with the highest @@.lust;Lust@@, dealing @@.phy;Physical@@ and @@.sex;Sexual@@ damage, dealing 50% more damage against Raiders with @@.lust;60% or more Lust@@."
}>>
<<set _stalking_wolf = {
name: "Stalking Wolf",
prefix: "he",
creature_types: ["Beast"],
trap_types: [],
attack_type: "Physical",
hp: 20,
atk: 40,
pres: 0,
mres: 0,
sex: 0,
rate: 0,
targets: 1,
fetishes: ["Pussy"],
pic: "[img[images/creatures/wolf/stalking_wolf/profile.jpg]]",
raider_pics: _stalking_pics,
capture_entry: "The Stalking Wolf's cunning and precision attack broke her pussy as she climaxed and was Captured.",
defeat_entry: "The Stalking Wolf's surprise attack broke her defense and left her defeated and Captured.",
info: "Stalking Wolves gain @@.health;20 Health@@ and @@.phy;40 Physical Attack@@. They deal even more @@.phy;Physical@@ damage to Raiders with low @@.health;Health@@ and if they Capture their target, she does not get to attack.",
description: "He attacks the Raider with the least @@.health;Health@@, dealing @@.phy;Physical@@ and @@.sex;Sexual@@ damage, dealing double damage against Raiders with @@.health;40% or less Health@@."
}>>
<<set _alpha_wolf = {
name: "Alpha Wolf",
prefix: "he",
creature_types: ["Beast"],
trap_types: [],
attack_type: "Physical",
hp: 60,
atk: 0,
pres: 0,
mres: 0,
sex: 0,
rate: 0,
targets: 1,
fetishes: ["Pussy"],
pic: "[img[images/creatures/wolf/alpha_wolf/profile.jpg]]",
raider_pics: _alpha_pics,
capture_entry: "She was Captured after being unable to shake the Alpha Wolf off her as he dominated her pussy, filling it with his cum until she lost consciousness from the pleasure.",
defeat_entry: "The sheer strength and size of the Alpha Wolf overpowered her, defeating and Capturing her without much resistance.",
info: "Alpha Wolves gain @@.health;60 Health@@. Before combat, they have a chance to inflict Raiders in the party with <<hovertip '<<- setup.zoophobia.tooltip>>'>>Zoophobia<</hovertip>>.",
description: "It attacks the Raider with the highest percent missing @@.health;Health@@, preventing them from attacking and dealing @@.phy;Physical@@ and @@.sex;Sexual@@ damage, dealing 50% more damage against Raiders with @@.health;40% or less Health@@. At the end of combat, recover 25% of it's @@.health;maximum Health@@ if it survived."
}>>
* BASE WOLF *
<<set setup.wolf = {
name: "Wolf",
base_name: "Wolf",
passage: "Wolf Room",
built: true,
prefix: "he",
rank: 1,
in_use: false,
upgrade_list: [_alpha_wolf, _stalking_wolf, _werewolf],
room_type: "Creature",
creature_types: ["Beast"],
trap_types: [],
attack_type: "Physical",
can_capture: true,
summoned: false,
index: 0,
cost: 5,
base_upkeep: 20,
upkeep: 0,
level: 1,
exp: 0,
growth: "Average",
growth_rate: 1.55,
next_level_exp: 0,
upgraded: false,
upgrade_level: 8,
min_injury: 2,
max_injury: 3,
max_hp: 74,
cur_hp: 74,
hp_per_lvl: 11.5,
cur_max_hp: 0,
atk: 30,
atk_per_lvl: 4.5,
cur_atk: 0,
pres: 23,
pres_per_lvl: 3.5,
cur_pres: 0,
mres: 22,
mres_per_lvl: 3,
cur_mres: 0,
sex: 27,
sex_per_lvl: 4,
cur_sex: 0,
fetishes: ["Pussy"],
targets: 1,
high_float: 1.25,
low_float: 0.75,
percent: 50,
execute_float: 1.75,
werewolf_float: 0,
stalking_float: 2,
alpha_percent: 50,
effects: [],
effect_names: [],
report: _report,
total_dmgdealt: 0,
total_sexdealt: 0,
total_dmgtaken: 0,
total_raiders: 0,
total_captures: 0,
total_deaths: 0,
raid_levels_gained: 0,
keeper_levels: 0,
keeper_exp: 0,
keeper_days: 0,
pic: "[img[images/creatures/wolf/basic_wolf/profile.jpg]]",
raider_pics: _wolf_pics,
capture_entry: "She was Captured after the Wolf filled her pussy, cum oozing down her trembling legs.",
defeat_entry: "The Wolf's cunning attack left her helpless and was Captured after mating with her.",
description: "He attacks the Raider with the lowest @@.health;Health@@, dealing @@.phy;Physical@@ and @@.sex;Sexual@@ damage. If the Raider has 50% or less Health before the attack, his Physical damage is increased by 30%."
}>>
* Rank 2 Creatures *
- Succubus -
* Pics *
<<set _succubus_pics to {
slender: ["[img[images/creatures/succubus/basic_succubus/slender/0.jpg]]", "[img[images/creatures/succubus/basic_succubus/slender/1.jpg]]", "[img[images/creatures/succubus/basic_succubus/slender/2.jpg]]", "[img[images/creatures/succubus/basic_succubus/slender/3.jpg]]"],
average: ["[img[images/creatures/succubus/basic_succubus/average/0.jpg]]", "[img[images/creatures/succubus/basic_succubus/average/1.jpg]]", "[img[images/creatures/succubus/basic_succubus/average/2.jpg]]", "[img[images/creatures/succubus/basic_succubus/average/3.jpg]]"],
busty: ["[img[images/creatures/succubus/basic_succubus/busty/0.jpg]]", "[img[images/creatures/succubus/basic_succubus/busty/1.jpg]]", "[img[images/creatures/succubus/basic_succubus/busty/2.jpg]]", "[img[images/creatures/succubus/basic_succubus/busty/3.jpg]]"]
}>>
<<set _futa_pics to {
slender: ["[img[images/creatures/succubus/futa_succubus/slender/0.jpg]]", "[img[images/creatures/succubus/futa_succubus/slender/1.jpg]]", "[img[images/creatures/succubus/futa_succubus/slender/2.jpg]]", "[img[images/creatures/succubus/futa_succubus/slender/3.jpg]]"],
average: ["[img[images/creatures/succubus/futa_succubus/average/0.jpg]]", "[img[images/creatures/succubus/futa_succubus/average/1.jpg]]", "[img[images/creatures/succubus/futa_succubus/average/2.jpg]]", "[img[images/creatures/succubus/futa_succubus/average/3.jpg]]"],
busty: ["[img[images/creatures/succubus/futa_succubus/busty/0.jpg]]", "[img[images/creatures/succubus/futa_succubus/busty/1.jpg]]", "[img[images/creatures/succubus/futa_succubus/busty/2.jpg]]", "[img[images/creatures/succubus/futa_succubus/busty/3.jpg]]"]
}>>
<<set _hexmage_pics to {
slender: _succubus_pics.slender.concat("[img[images/creatures/succubus/hexmage_succubus/slender/0.jpg]]", "[img[images/creatures/succubus/hexmage_succubus/slender/1.jpg]]"),
average: _succubus_pics.average.concat("[img[images/creatures/succubus/hexmage_succubus/average/0.jpg]]", "[img[images/creatures/succubus/hexmage_succubus/average/1.jpg]]"),
busty: _succubus_pics.busty.concat("[img[images/creatures/succubus/hexmage_succubus/busty/0.jpg]]", "[img[images/creatures/succubus/hexmage_succubus/busty/1.jpg]]")
}>>
<<set _mistress_pics to {
slender: _succubus_pics.slender.concat("[img[images/creatures/succubus/succubus_mistress/slender/0.jpg]]", "[img[images/creatures/succubus/succubus_mistress/slender/1.jpg]]"),
average: _succubus_pics.average.concat("[img[images/creatures/succubus/succubus_mistress/average/0.jpg]]", "[img[images/creatures/succubus/succubus_mistress/average/1.jpg]]"),
busty: _succubus_pics.busty.concat("[img[images/creatures/succubus/succubus_mistress/busty/0.jpg]]", "[img[images/creatures/succubus/succubus_mistress/busty/1.jpg]]")
}>>
* Upgrades *
<<set _futa_succubus to {
name: "Futa Succubus",
prefix: "she",
creature_types: ["Humanoid"],
trap_types: [],
attack_type: "Physical",
hp: 40,
atk: 0,
pres: 0,
mres: 0,
sex: 20,
rate: 0,
targets: 1,
fetishes: ["Ass", "Big Cocks", "Lesbian"],
pic: "[img[images/creatures/succubus/futa_succubus/profile.jpg]]",
raider_pics: _futa_pics,
capture_entry: "The Futa Succubus dominated her by using her cock, forcing her to submit and becoming Captured.",
defeat_entry: "She was Captured by the Futa Succubus after being unable to match her lewd strength.",
info: "Futa Succubi gain @@.health;40 Health@@, @@.sex;20 Sexual Attack@@, and the Ass and Big Cock Fetishes, but loses the Cunnilingus Fetish. Her attacks inflict <<hovertip '<<print setup.sticky.tooltip>>'>>Sticky<</hovertip>>.",
description: "Futa Succubus' power can be seen by measuring the girth of their cock. She increases all her stats by 20% for each Raider who is <<hovertip '<<print setup.horny.tooltip>>'>>Horny<</hovertip>>, <<hovertip '<<print setup.wet.tooltip>>'>>Wet<</hovertip>>, <<hovertip '<<print setup.perverted.tooltip>>'>>Perverted<</hovertip>>, or <<hovertip '<<print setup.edging.tooltip>>'>>Edging<</hovertip>>. She attacks the first Raider in the party with her whip and futa dick, dealing @@.phy;Physical@@ and @@.sex;Sexual@@ damage."
}>>
<<set _succubus_mistress to {
name: "Succubus Mistress",
prefix: "she",
creature_types: ["Humanoid"],
trap_types: [],
attack_type: "Physical",
hp: 60,
atk: 0,
pres: 0,
mres: 0,
sex: 0,
rate: 0,
targets: 1,
fetishes: ["Bondage", "Cunnilingus", "Lesbian"],
pic: "[img[images/creatures/succubus/succubus_mistress/profile.jpg]]",
raider_pics: _mistress_pics,
capture_entry: "She was Captured by the Succubus Mistress as she was made into her sex slave.",
defeat_entry: "The Succubus Mistress easily Captured her using her whip to defeat her from far before dominating her in shackles.",
info: "Succubus Mistresses gain @@.health;60 Health@@, the Bondage Fetish. They increase their stats more for each Raider who is <<hovertip '<<print setup.horny.tooltip>>'>>Horny<</hovertip>>, <<hovertip '<<print setup.wet.tooltip>>'>>Wet<</hovertip>>, <<hovertip '<<print setup.perverted.tooltip>>'>>Perverted<</hovertip>>, or <<hovertip '<<print setup.edging.tooltip>>'>>Edging<</hovertip>>.",
description: "Mistress Succubus are fully aware of their victim's desires and use it against them. She increases all her stats by 30% for each Raider who is <<hovertip '<<print setup.horny.tooltip>>'>>Horny<</hovertip>>, <<hovertip '<<print setup.wet.tooltip>>'>>Wet<</hovertip>>, <<hovertip '<<print setup.perverted.tooltip>>'>>Perverted<</hovertip>>, or <<hovertip '<<print setup.edging.tooltip>>'>>Edging<</hovertip>>. She attacks the first Raider in the party by dominating them with her whip and turning pain into pleasure, dealing @@.phy;Physical@@ and @@.sex;Sexual@@ damage."
}>>
<<set _hexmage_succubus to {
name: "Hexmage Succubus",
prefix: "she",
creature_types: ["Humanoid"],
trap_types: [],
attack_type: "Magical",
hp: 20,
atk: 20,
pres: 0,
mres: 20,
sex: 0,
rate: 69,
targets: 1,
fetishes: ["Cunnilingus", "Lesbian"],
pic: "[img[images/creatures/succubus/hexmage_succubus/profile.jpg]]",
raider_pics: _hexmage_pics,
capture_entry: "The pleasure felt from getting her pussy eaten out by the Hexmage Succubus along with the magical spell that enhanced her sensitivity was too much to resist and was Captured.",
defeat_entry: "She was Captured after being unable to fight against the Hexmage Succubus' curses and dark magic.",
info: "Hexmage Succubi deal @@.mag;Magical@@ damage instead of @@.phy;Physical@@ and gain @@.health;20 Health@@, @@.mag;20 Magical Attack@@, and @@.mres;20 Magical Resistance@@. Their attacks have a @@.spell;Spellcheck@@ that inflicts their target with a <<hovertip '<<print setup.cursed.tooltip>>'>>Curse<</hovertip>>.",
description: "Hexmage Succubus use dark magic to turn their target's @@.lust;Lust@@ against them. She increases all her stats by 20% for each Raider who is <<hovertip '<<print setup.horny.tooltip>>'>>Horny<</hovertip>>, <<hovertip '<<print setup.wet.tooltip>>'>>Wet<</hovertip>>, <<hovertip '<<print setup.perverted.tooltip>>'>>Perverted<</hovertip>>, or <<hovertip '<<print setup.edging.tooltip>>'>>Edging<</hovertip>>. She attacks the first Raider in the party with lewd hex magic, dealing @@.mag;Magical@@ and @@.sex;Sexual@@ damage with a 70 + @@.mag;25% Magical Attack@@ Spellcheck that inflicts <<hovertip '<<print setup.cursed.tooltip>>'>>Cursed<</hovertip>>."
}>>
* Base *
<<set setup.succubus = {
name: "Succubus",
base_name: "Succubus",
passage: "Succubus Room",
built: true,
prefix: "she",
rank: 2,
in_use: false,
upgrade_list: [_futa_succubus, _succubus_mistress, _hexmage_succubus],
room_type: "Creature",
creature_types: ["Humanoid"],
trap_types: [],
attack_type: "Physical",
can_capture: true,
summoned: false,
index: 0,
cost: 5,
base_upkeep: 25,
upkeep: 0,
level: 1,
exp: 0,
growth: "Slow",
growth_rate: 1.8,
next_level_exp: 0,
upgraded: false,
upgrade_level: 10, /*12*/
min_injury: 2,
max_injury: 3,
max_hp: 66,
cur_hp: 66,
hp_per_lvl: 11,
cur_max_hp: 0,
atk: 27,
atk_per_lvl: 4.5,
cur_atk: 0,
pres: 22,
pres_per_lvl: 3.5,
cur_pres: 0,
mres: 25,
mres_per_lvl: 4,
cur_mres: 0,
sex: 32,
sex_per_lvl: 5,
cur_sex: 0,
fetishes: ["Cunnilingus", "Lesbian"],
targets: 1,
stat_float: 0.2,
futa_min: 2,
futa_max: 4,
mistress_float: 0.35,
atk_check_list: ["Horny", "Wet", "Perverted", "Edging"],
rate: 0,
hex_float: 0.3,
effects: [],
effect_names: [],
report: _report,
total_dmgdealt: 0,
total_sexdealt: 0,
total_dmgtaken: 0,
total_raiders: 0,
total_captures: 0,
total_deaths: 0,
raid_levels_gained: 0,
keeper_levels: 0,
keeper_exp: 0,
keeper_days: 0,
pic: "[img[images/creatures/succubus/basic_succubus/profile.jpg]]",
raider_pics: _succubus_pics,
capture_entry: "She was humiliated and Captured while getting her pussy pleasured by the Succubus' mouth.",
defeat_entry: "She was Captured after being defeated by the Succubus' lustful power and long range whip.",
description: "Succubus feed off their target's @@.lust;Lust@@, turning it into strength. She increases all her stats by 20% for each Raider who is <<hovertip '<<print setup.horny.tooltip>>'>>Horny<</hovertip>>, <<hovertip '<<print setup.wet.tooltip>>'>>Wet<</hovertip>>, <<hovertip '<<print setup.perverted.tooltip>>'>>Perverted<</hovertip>>, or <<hovertip '<<print setup.edging.tooltip>>'>>Edging<</hovertip>>. She attacks the first Raider in the party with her whip and mouth, dealing @@.phy;Physical@@ and @@.sex;Sexual@@ damage."
}>>
- Mimic Chest -
* Pics *
<<set _mimic_pics to {
slender: ["[img[images/creatures/mimic_chest/basic_chest/slender/0.jpg]]", "[img[images/creatures/mimic_chest/basic_chest/slender/1.jpg]]", "[img[images/creatures/mimic_chest/basic_chest/slender/2.jpg]]"],
average: ["[img[images/creatures/mimic_chest/basic_chest/average/0.jpg]]", "[img[images/creatures/mimic_chest/basic_chest/average/1.jpg]]", "[img[images/creatures/mimic_chest/basic_chest/average/2.jpg]]"],
busty: ["[img[images/creatures/mimic_chest/basic_chest/busty/0.jpg]]", "[img[images/creatures/mimic_chest/basic_chest/busty/1.jpg]]", "[img[images/creatures/mimic_chest/basic_chest/busty/2.jpg]]"]
}>>
<<set _greater_mimic_pics to {
slender: _mimic_pics.slender.concat("[img[images/creatures/mimic_chest/greater_chest/slender/0.jpg]]"),
average: _mimic_pics.average.concat("[img[images/creatures/mimic_chest/greater_chest/average/0.jpg]]"),
busty: _mimic_pics.busty.concat("[img[images/creatures/mimic_chest/greater_chest/busty/0.jpg]]"),
}>>
<<set _crested_mimic_pics to {
slender: _mimic_pics.slender.concat("[img[images/creatures/mimic_chest/crested_chest/slender/0.jpg]]"),
average: _mimic_pics.average.concat("[img[images/creatures/mimic_chest/crested_chest/average/0.jpg]]"),
busty: _mimic_pics.busty.concat("[img[images/creatures/mimic_chest/crested_chest/busty/0.jpg]]"),
}>>
<<set _captor_mimic_pics to {
slender: _mimic_pics.slender.concat("[img[images/creatures/mimic_chest/captor_chest/slender/0.jpg]]"),
average: _mimic_pics.average.concat("[img[images/creatures/mimic_chest/captor_chest/average/0.jpg]]"),
busty: _mimic_pics.busty.concat("[img[images/creatures/mimic_chest/captor_chest/busty/0.jpg]]"),
}>>
* Upgrades *
<<set _greater_mimic_chest to {
name: "Greater Mimic Chest",
prefix: "it",
creature_types: ["Monster"],
trap_types: ["Captive"],
attack_type: "Physical",
hp: 60,
atk: 0,
pres: 20,
mres: 20,
sex: 0,
rate: 0,
targets: 1,
fetishes: ["Bondage", "Cunnilingus"],
pic: "[img[images/creatures/mimic_chest/greater_chest/profile.jpg]]",
raider_pics: _greater_mimic_pics,
capture_entry: "After getting caught and swallowed in the Greater Mimic Chest's mouth, she was Captured and pleasured until she passed out.",
defeat_entry: "The Greater Mimic Chest defeated her and gobbled her up for safe keeping.",
info: "Greater Mimic Chests gain @@.health;60 Health@@, @@.pres;20 Physical Resistance@@, and @@.mres;20 Magical Resistance@@. All Raiders face its Captive @@.trap;Trapcheck@@ instead and they attack each Raider who fails. If no Raiders fail, it attacks the closest Raider instead and deals reduced damage.",
description: "At the start of combat, each Raider faces a Captive Trapcheck (60 + @@.health;10% maximum Health@@). Any Raider who fails the Trapcheck is caught and cannot attack. Then, it attacks each Raider who failed the Trapcheck dealing @@.phy;Physical@@ damage (@@.phy;100% Physical Attack@@) and @@.sex;Sexual@@ damage (@@.sex;100% Sexual Attack@@). If no Raider failed the Trapcheck, it attacks the closest Raider dealing @@.phy;Physical@@ damage (@@.phy;75% Physical Attack@@) and @@.sex;Sexual@@ damage (@@.sex;75% Sexual Attack@@)."
}>>
<<set _crested_mimic_chest to {
name: "Crested Mimic Chest",
prefix: "it",
creature_types: ["Monster"],
trap_types: ["Captive"],
attack_type: "Physical",
hp: 40,
atk: 20,
pres: 0,
mres: 0,
sex: 20,
rate: 0,
targets: 1,
fetishes: ["Bondage", "Cunnilingus"],
pic: "[img[images/creatures/mimic_chest/crested_chest/profile.jpg]]",
raider_pics: _crested_mimic_pics,
capture_entry: "After getting pulled into the Crested Mimic Chest's jaws, she was Captured and pleasured until she lost her mind.",
defeat_entry: "She was defeated and Captured by the Crested Mimic Chest.",
info: "Crested Mimic Chests gain @@.health;40 Health@@, @@.phy;20 Physical Attack@@, and @@.sex;20 Sexual Attack@@. Their @@.trap;Captive Trapcheck@@ increases the deeper they are in the dungeon and Raiders who fail take more damage.",
description: "At the start of combat, the Raider with the lowest @@.aware;Awareness@@ faces a Captive Trapcheck (60 + @@.health;10% maximum Health@@ + 10 for each prior Floor). If she fails the Trapcheck, she is caught and cannot attack. Then, regardless of the trapcheck, it attacks the same Raider dealing @@.phy;Physical@@ damage (@@.phy;100% Physical Attack@@ + @@.phy;15% Physical Attack@@ for each prior Floor) and @@.sex;Sexual@@ damage (@@.sex;100% Sexual Attack@@ + @@.sex;15% Sexual Attack@@ for each prior Floor)."
}>>
<<set _captor_mimic_chest to {
name: "Captor Mimic Chest",
prefix: "it",
creature_types: ["Monster"],
trap_types: ["Captive"],
attack_type: "Physical",
hp: 20,
atk: 20,
pres: 20,
mres: 20,
sex: 20,
rate: 0,
targets: 1,
fetishes: ["Bondage", "Cunnilingus"],
pic: "[img[images/creatures/mimic_chest/captor_chest/profile.jpg]]",
raider_pics: _captor_mimic_pics,
capture_entry: "Unable to avoid to the Captor Mimic Chest's aggression, she was Captured by its tongue and pulled into its mouth, where it abused her.",
defeat_entry: "She was Captured by the Captor Mimic Chest, unable to fight against its aggressive attacks.",
info: "Captor Mimic Chests gain 20 in all stats, but its @@.trap;Trapcheck@@ is reduced by 75%. The first Raider in the party faces their Captive @@.trap;Trapcheck@@ and is instantly Captured if she fails, ending combat.",
description: "At the start of combat, the first Raider in the party faces a Captive Trapcheck (10 + @@.health;10% maximum Health@@). If she fails the Trapcheck, she is Captured and combat ends. If she passes the Trapcheck, it attacks her dealing @@.phy;Physical@@ damage (@@.phy;100% Physical Attack@@) and @@.sex;Sexual@@ damage (@@.sex;100% Sexual Attack@@). "
}>>
* Base *
<<set setup.mimic_chest = {
name: "Mimic Chest",
base_name: "Mimic Chest",
passage: "Mimic Chest Room",
built: true,
prefix: "it",
rank: 2,
in_use: false,
upgrade_list: [_greater_mimic_chest, _crested_mimic_chest, _captor_mimic_chest],
room_type: "Creature",
creature_types: ["Monster"],
trap_types: ["Captive"],
attack_type: "Physical",
can_capture: true,
summoned: false,
index: "",
cost: 5,
base_upkeep: 20,
upkeep: 0,
level: 1,
exp: 0,
growth: "Average",
growth_rate: 1.4,
next_level_exp: 0,
upgraded: false,
upgrade_level: 10,
min_injury: 2,
max_injury: 3,
max_hp: 65,
cur_hp: 65,
hp_per_lvl: 10,
cur_max_hp: 0,
atk: 25,
atk_per_lvl: 4,
cur_atk: 0,
pres: 35,
pres_per_lvl: 5,
cur_pres: 0,
mres: 25,
mres_per_lvl: 3.5,
cur_mres: 0,
sex: 25,
sex_per_lvl: 4,
cur_sex: 0,
fetishes: ["Bondage", "Cunnilingus"],
targets: 1,
rate: 60,
hp_float: 0.25,
greater_float: 0.75,
crested_int: 10,
crested_float: 0.5,
captor_float: 0.75,
effects: [],
effect_names: [],
report: _report,
total_dmgdealt: 0,
total_sexdealt: 0,
total_dmgtaken: 0,
total_raiders: 0,
total_captures: 0,
total_deaths: 0,
raid_levels_gained: 0,
keeper_levels: 0,
keeper_exp: 0,
keeper_days: 0,
pic: "[img[images/creatures/mimic_chest/basic_chest/profile.jpg]]",
raider_pics: _mimic_pics,
capture_entry: "She couldn't resist her pussy being pleasured by the Mimic Chest and was Captured after being pulled into its mouth.",
defeat_entry: "She fell to the Mimic Chest and was Captured in its mouth.",
description: "At the start of combat, the Raider with the lowest @@.aware;Awareness@@ faces a Captive Trapcheck (60 + @@.health;10% maximum Health@@). If she fails the Trapcheck, she is caught and cannot attack. Then, regardless of the trapcheck, it attacks the same Raider dealing @@.phy;Physical@@ damage (@@.phy;100% Physical Attack@@) and @@.sex;Sexual@@ damage (@@.sex;100% Sexual Attack@@)."
}>>
- Slugs -
* Pics *
<<set _slugs_pics to {
slender: ["[img[images/creatures/slugs/basic_slugs/slender/0.jpg]]", "[img[images/creatures/slugs/basic_slugs/slender/1.jpg]]", "[img[images/creatures/slugs/basic_slugs/slender/2.jpg]]", "[img[images/creatures/slugs/basic_slugs/slender/3.jpg]]"],
average: ["[img[images/creatures/slugs/basic_slugs/average/0.jpg]]", "[img[images/creatures/slugs/basic_slugs/average/1.jpg]]", "[img[images/creatures/slugs/basic_slugs/average/2.jpg]]", "[img[images/creatures/slugs/basic_slugs/average/3.jpg]]"],
busty: ["[img[images/creatures/slugs/basic_slugs/busty/0.jpg]]", "[img[images/creatures/slugs/basic_slugs/busty/1.jpg]]", "[img[images/creatures/slugs/basic_slugs/busty/2.jpg]]", "[img[images/creatures/slugs/basic_slugs/busty/3.jpg]]"]
}>>
<<set _giant_slug_pics to {
slender: _slugs_pics.slender.concat("[img[images/creatures/slugs/giant_slug/slender/0.jpg]]", "[img[images/creatures/slugs/giant_slug/slender/1.jpg]]"),
average: _slugs_pics.average.concat("[img[images/creatures/slugs/giant_slug/average/0.jpg]]", "[img[images/creatures/slugs/giant_slug/average/1.jpg]]"),
busty: _slugs_pics.busty.concat("[img[images/creatures/slugs/giant_slug/busty/0.jpg]]", "[img[images/creatures/slugs/giant_slug/busty/1.jpg]]")
}>>
<<set _leeching_slugs_pics to {
slender: _slugs_pics.slender.concat("[img[images/creatures/slugs/leeching_slugs/slender/0.jpg]]", "[img[images/creatures/slugs/leeching_slugs/slender/1.jpg]]"),
average: _slugs_pics.average.concat("[img[images/creatures/slugs/leeching_slugs/average/0.jpg]]", "[img[images/creatures/slugs/leeching_slugs/average/1.jpg]]"),
busty: _slugs_pics.busty.concat("[img[images/creatures/slugs/leeching_slugs/busty/0.jpg]]", "[img[images/creatures/slugs/leeching_slugs/busty/1.jpg]]")
}>>
<<set _pooling_slugs_pics to {
slender: _slugs_pics.slender.concat("[img[images/creatures/slugs/pooling_slugs/slender/0.jpg]]", "[img[images/creatures/slugs/pooling_slugs/slender/1.jpg]]", "[img[images/creatures/slugs/pooling_slugs/slender/2.jpg]]"),
average: _slugs_pics.average.concat("[img[images/creatures/slugs/pooling_slugs/average/0.jpg]]", "[img[images/creatures/slugs/pooling_slugs/average/1.jpg]]", "[img[images/creatures/slugs/pooling_slugs/average/2.jpg]]"),
busty: _slugs_pics.busty.concat("[img[images/creatures/slugs/pooling_slugs/busty/0.jpg]]", "[img[images/creatures/slugs/pooling_slugs/busty/1.jpg]]", "[img[images/creatures/slugs/pooling_slugs/busty/2.jpg]]")
}>>
* Upgrades *
<<set _giant_slug to {
name: "Giant Slug",
prefix: "they",
creature_types: ["Insect"],
trap_types: [],
attack_type: "Physical",
hp: 60,
atk: 0,
pres: 0,
mres: 0,
sex: 0,
rate: 0,
targets: 1,
fetishes: ["Breasts", "Getting Dirty"],
pic: "[img[images/creatures/slugs/giant_slug/profile.jpg]]",
raider_pics: _giant_slug_pics,
capture_entry: "She was helpless under the Giant Slug as it dissolved her clothing and exposed her to it's offspring and was Captured.",
defeat_entry: "She was unable to push the Giant Slug off her and was smothered to exhaustion and was Captured.",
info: "Giant Slugs gain @@.health;60 Health@@ and the Getting Dirty Fetish. They attack three times and the first attack is stronger and inflicts <<hovertip '<<print setup.sticky.tooltip>>'>>Sticky<</hovertip>> and <<hovertip '<<print setup.stripped.tooltip>>'>>Stripped<</hovertip>> instead.",
description: "Giant Slugs use their large body to smoother their target with slime that chews through any armor and clothing. Before their brood attacks, they smoother a Raider with their body and inflicts them with the <<hovertip '<<print setup.stripped.tooltip>>'>>Stripped<</hovertip>> Status. Then, their brood attacks twice, dealing @@.phy;Physical@@ and @@.sex;Sexual@@ damage with a 60% chance to <<hovertip '<<print setup.pregnant.tooltip>>'>>Impregnate<</hovertip>> the Raider's Breasts for 1 to 2 floors. Each attack applies 40% @@.phy;Physical@@ and @@.sex;Sexual@@ attack."
}>>
<<set _leeching_slugs to {
name: "Leeching Slugs",
prefix: "they",
creature_types: ["Insect"],
trap_types: [],
attack_type: "Physical",
hp: 40,
atk: 0,
pres: 20,
mres: 20,
sex: 0,
rate: 0,
targets: 1,
fetishes: ["Aphrodisiac", "Breasts"],
pic: "[img[images/creatures/slugs/leeching_slugs/profile.jpg]]",
raider_pics: _leeching_slugs_pics,
capture_entry: "She mind went fuzzy after getting her breasts milked by the Leeching Slugs and was eventually Captured.",
defeat_entry: "She grew weary as her beasts filled with milk, preventing her from defending herself and was Captured.",
info: "Leeching Slugs gain @@.health;40 Health@@, @@.pres;20 Physical Resistance@@, @@.mres;20 Magical Resistance@@, and the Aphrodisiac Fetish. Their attacks inflicts 2 <<hovertip '<<print setup.lactation.tooltip>>'>>Lactation<</hovertip>> and after they attack a Raider who is <<hovertip '<<print setup.lactation.tooltip>>'>>Lactating<</hovertip>>, their @@.health;maximum Health@@ increases temporarily and they restore @@.health;Health@@.",
description: "Leeching Slugs' saliva contains toxins that can cause breasts to begin lactating. They attack a Raider twice, dealing @@.phy;Physical@@ and @@.sex;Sexual@@ damage with a 60% chance to <<hovertip '<<print setup.pregnant.tooltip>>'>>Impregnate<</hovertip>> the Raider's Breasts for 1 to 2 floors and inflicts 2 <<hovertip '<<print setup.lactation.tooltip>>'>>Lactation<</hovertip>>. After each attack, if the Raider has the <<hovertip '<<print setup.lactation.tooltip>>'>>Lactation<</hovertip>> Status, the Leeching Slugs' @@.health;maximum Health is increased by 10@@ until the end of the night and they recover @@.health;15% of their maximum Health@@. Each attack applies 40% @@.phy;Physical@@ and @@.sex;Sexual@@ attack."
}>>
<<set _pooling_slugs to {
name: "Pooling Slugs",
prefix: "they",
creature_types: ["Insect"],
trap_types: ["Obstacle"],
attack_type: "Physical",
hp: 0,
atk: 0,
pres: 0,
mres: 0,
sex: 40,
rate: 15,
targets: 1,
fetishes: ["Breasts", "Getting Dirty"],
pic: "[img[images/creatures/slugs/pooling_slugs/profile.jpg]]",
raider_pics: _pooling_slugs_pics,
capture_entry: "After falling into a pit of Pooling Slugs, she was unable to escape the pleasure she felt under as they swarmed her breasts.",
defeat_entry: "After falling into a pit of Pooling Slugs, she ran out of energy trying to escape and sank deeper into their secretion.",
info: "Pooling Slugs gain @@.sex;40 Sexual Attack@@, the Getting Dirty Fetish, and their <<hovertip '<<print setup.pregnant.tooltip>>'>>Impregnation<</hovertip>> chance is increased to 75%. Instead of attacking, each Raider faces two @@.trap;Obstacle Trapchecks@@. Whenever a Raider fails a @@.trap;Trapcheck@@, they are attacked and inflicted with <<hovertip '<<print setup.sticky.tooltip>>'>>Sticky<</hovertip>>.",
description: "Pooling Slugs prefer to live in pits of their own slime and wait for careless victims to fall in. Instead of combat, each Raider faces two Obstacle Trapchecks (50 + @@.sex;50% Sexual Attack@@). Each time a Raider fails a Trapcheck, they fall into a pit of slime, gaining 2 <<hovertip '<<print setup.sticky.tooltip>>'>>Sticky<</hovertip>> and are attacked. Pooling Slugs deal @@.phy;Physical@@ and @@.sex;Sexual@@ damage with a 75% chance to <<hovertip '<<print setup.pregnant.tooltip>>'>>Impregnate<</hovertip>> the Raider's Breasts for 1 to 2 floors. Each attack applies 40% @@.phy;Physical@@ and @@.sex;Sexual@@ attack."
}>>
* Base *
<<set setup.slugs = {
name: "Slugs",
base_name: "Slugs",
passage: "Slugs Room",
built: true,
prefix: "they",
rank: 2,
in_use: false,
upgrade_list: [_giant_slug, _leeching_slugs, _pooling_slugs],
room_type: "Creature",
creature_types: ["Insect"],
trap_types: [],
attack_type: "Physical",
can_capture: true,
summoned: false,
index: "",
cost: 5,
base_upkeep: 14,
upkeep: 0,
level: 1,
exp: 0,
growth: "Fast",
growth_rate: 1.1,
next_level_exp: 0,
upgraded: false,
upgrade_level: 6,
min_injury: 2,
max_injury: 3,
max_hp: 76,
cur_hp: 76,
hp_per_lvl: 8,
cur_max_hp: 0,
atk: 21,
atk_per_lvl: 2.5,
cur_atk: 0,
pres: 29,
pres_per_lvl: 3.5,
cur_pres: 0,
mres: 22,
mres_per_lvl: 3,
cur_mres: 0,
sex: 31,
sex_per_lvl: 4.25,
cur_sex: 0,
fetishes: ["Breasts"],
targets: 1,
rate: 60,
min_pregnant: 1,
max_pregnant: 2,
pregnant_target: "Breasts",
dmg_float: 0.4,
giant_float: 0.7,
giant_min: 2,
giant_max: 3,
giant_status: setup.stripped,
leeching_status: setup.lactation,
lactation_stacks: 2,
leeching_float: 0.1,
leeching_health: 15,
trapcheck_rate: 60,
pooling_float: 0.25,
pooling_int: 2,
effects: [],
effect_names: [],
report: _report,
total_dmgdealt: 0,
total_sexdealt: 0,
total_dmgtaken: 0,
total_raiders: 0,
total_captures: 0,
total_deaths: 0,
raid_levels_gained: 0,
keeper_levels: 0,
keeper_exp: 0,
keeper_days: 0,
pic: "[img[images/creatures/slugs/basic_slugs/profile.jpg]]",
raider_pics: _slugs_pics,
capture_entry: "She collapsed as the Slugs swarmed over her Breasts and filled them with eggs.",
defeat_entry: "She was defeated by the sheer number of Slugs that were crawling all over her.",
description: "A swarm of slugs that use breasts as a nursery for their eggs. They attack a Raider twice, dealing @@.phy;Physical@@ and @@.sex;Sexual@@ damage with a 60% chance to <<hovertip '<<print setup.pregnant.tooltip>>'>>Impregnate<</hovertip>> the Raider's Breasts for 1 to 2 floors. Each attack applies 40% @@.phy;Physical@@ and @@.sex;Sexual@@ attack."
}>>
- Minotaur -
* Pics *
<<set _minotaur_pics to {
slender: ["[img[images/creatures/minotaur/basic_minotaur/slender/0.jpg]]", "[img[images/creatures/minotaur/basic_minotaur/slender/1.jpg]]", "[img[images/creatures/minotaur/basic_minotaur/slender/2.jpg]]", "[img[images/creatures/minotaur/basic_minotaur/slender/3.jpg]]"],
average: ["[img[images/creatures/minotaur/basic_minotaur/average/0.jpg]]", "[img[images/creatures/minotaur/basic_minotaur/average/1.jpg]]", "[img[images/creatures/minotaur/basic_minotaur/average/2.jpg]]", "[img[images/creatures/minotaur/basic_minotaur/average/3.jpg]]"],
busty: ["[img[images/creatures/minotaur/basic_minotaur/busty/0.jpg]]", "[img[images/creatures/minotaur/basic_minotaur/busty/1.jpg]]", "[img[images/creatures/minotaur/basic_minotaur/busty/2.jpg]]", "[img[images/creatures/minotaur/basic_minotaur/busty/3.jpg]]"]
}>>
<<set _charging_minotaur_pics to {
slender: _minotaur_pics.slender.concat("[img[images/creatures/minotaur/charging_minotaur/slender/0.jpg]]"),
average: _minotaur_pics.average.concat("[img[images/creatures/minotaur/charging_minotaur/average/0.jpg]]"),
busty: _minotaur_pics.busty.concat("[img[images/creatures/minotaur/charging_minotaur/busty/0.jpg]]")
}>>
<<set _undying_minotaur_pics to {
slender: _minotaur_pics.slender.concat("[img[images/creatures/minotaur/undying_minotaur/slender/0.jpg]]"),
average: _minotaur_pics.average.concat("[img[images/creatures/minotaur/undying_minotaur/average/0.jpg]]"),
busty: _minotaur_pics.busty.concat("[img[images/creatures/minotaur/undying_minotaur/busty/0.jpg]]")
}>>
<<set _insatiable_minotaur_pics to {
slender: _minotaur_pics.slender.concat("[img[images/creatures/minotaur/insatiable_minotaur/slender/0.jpg]]"),
average: _minotaur_pics.average.concat("[img[images/creatures/minotaur/insatiable_minotaur/average/0.jpg]]"),
busty: _minotaur_pics.busty.concat("[img[images/creatures/minotaur/insatiable_minotaur/busty/0.jpg]]")
}>>
* Upgrades *
<<set _charging_minotaur to {
name: "Charging Minotaur",
prefix: "he",
creature_types: ["Beast"],
trap_types: [],
attack_type: "Physical",
hp: 60,
atk: 0,
pres: 0,
mres: 0,
sex: 0,
rate: 0,
targets: 1,
fetishes: ["Big Cocks", "Pussy"],
pic: "[img[images/creatures/minotaur/charging_minotaur/profile.jpg]]",
raider_pics: _charging_minotaur_pics,
capture_entry: "She was plowed over, plowed again, and Captured.",
defeat_entry: "She was Captured and tossed aside by his brute strength.",
info: "Charging Minotaurs gain @@.health;60 Health@@. After they have enough Rage, their attack targets the last Raider in the party and they deal @@.phy;Physical@@ damage to other Raiders in their way.",
description: "Charging Minotaur are hot-tempered and quick to act on their aggression. He attacks the last Raider in the party, dealing @@.phy;Physical@@ and @@.sex;Sexual@@ damage. He tramples over any other Raiders in the way, dealing @@.phy;Physical@@ damage (@@.phy;50% Physical Attack@@) and gaining 1 Rage per Raider. After taking damage, he gains 1 Rage that lasts until the end of the night. Rage increases his @@.phy;Physical Attack@@ by 5 and reduces all damage taken by 25% if he has 5 or more Rage."
}>>
<<set _undying_minotaur to {
name: "Undying Minotaur",
prefix: "he",
creature_types: ["Beast"],
trap_types: [],
attack_type: "Physical",
hp: 40,
atk: 0,
pres: 20,
mres: 20,
sex: 0,
rate: 0,
targets: 1,
fetishes: ["Big Cocks", "Pussy"],
pic: "[img[images/creatures/minotaur/undying_minotaur/profile.jpg]]",
raider_pics: _undying_minotaur_pics,
capture_entry: "She struggled to break free of his grasp as he penetrated and Captured her.",
defeat_entry: "She was stopped in her tracks and Captured.",
info: "Undying Minotaurs gain @@.health;40 Health@@, @@.pres;20 Physical Resistance@@, and @@.mres; 20 Magical Resistance@@. Their max Rage is increased and they gain more Rage while at low @@.health;Health@@.",
description: "Undying Minotaur live to fight, quite literally. He attacks the first Raider in the party, dealing @@.phy;Physical@@ and @@.sex;Sexual@@ damage. After taking damage, he gains 1 Rage, increased to 2 if he is at or below @@.hp;50% Health@@, that lasts until the end of the night. Rage increases his @@.phy;Physical Attack@@ by 5 per stack and reduces all damage taken by 25% if he has 5 or more Rage. After combat, if he is at or below @@.hp;30% Health@@, he consumes all Rage and recovers @@.hp;10%@@ of his @@.hp;maximum Health@@ per Rage consumed."
}>>
<<set _insatiable_minotaur to {
name: "Insatiable Minotaur",
prefix: "he",
creature_types: ["Beast"],
trap_types: [],
attack_type: "Physical",
hp: 40,
atk: 0,
pres: 0,
mres: 0,
sex: 20,
rate: 0,
targets: 1,
fetishes: ["Big Cocks", "Pussy"],
pic: "[img[images/creatures/minotaur/insatiable_minotaur/profile.jpg]]",
raider_pics: _insatiable_minotaur_pics,
capture_entry: "She was Captured and used to try to sedate his urges.",
defeat_entry: "She was unable to stop his rampage and was Captured.",
info: "Insatiable Minotaurs gain @@.health;40 Health@@ and @@.sex;20 Sexual Attack@@. They can inflict <<hovertip '<<print setup.horny.tooltip>>'>>Horny<</hovertip>> after they have enough Rage before combat and Rage increases their @@.sex;Sexual Attack@@ instead of @@.phy;Physical Attack@@.",
description: "Insatiable Minotaur are sexually frusterated, but use that to their advantage. He attacks the first Raider in the party, dealing @@.phy;Physical@@ and @@.sex;Sexual@@ damage. After taking damage, he gains 1 Rage, 2 if the Raider is <<hovertip '<<print setup.horny.tooltip>>'>>Horny<</hovertip>>, <<hovertip '<<print setup.wet.tooltip>>'>>Wet<</hovertip>>, <<hovertip '<<print setup.perverted.tooltip>>'>>Perverted<</hovertip>>, or <<hovertip '<<print setup.edging.tooltip>>'>>Edging<</hovertip>>, that lasts until the end of the night. Rage increases his @@.phy;Physical Attack@@ by 5 per stack, @@.sex;Sexual Attack@@ by 10 per stack, and reduces all damage taken by 25% if he has 5 or more Rage."
}>>
* Base *
<<set setup.minotaur = {
name: "Minotaur",
base_name: "Minotaur",
passage: "Minotaur Room",
built: true,
prefix: "he",
rank: 2,
in_use: false,
upgrade_list: [_charging_minotaur, _undying_minotaur, _insatiable_minotaur],
room_type: "Creature",
creature_types: ["Beast"],
trap_types: [],
attack_type: "Physical",
can_capture: true,
summoned: false,
index: "",
cost: 5,
base_upkeep: 23,
upkeep: 0,
level: 1,
exp: 0,
growth: "Average",
growth_rate: 1.65,
next_level_exp: 0,
upgraded: false,
upgrade_level: 10, /*12*/
min_injury: 2,
max_injury: 3,
max_hp: 80,
cur_hp: 80,
hp_per_lvl: 13,
cur_max_hp: 0,
atk: 28,
atk_per_lvl: 4,
cur_atk: 0,
pres: 22,
pres_per_lvl: 3.25,
cur_pres: 0,
mres: 19,
mres_per_lvl: 3,
cur_mres: 0,
sex: 25,
sex_per_lvl: 4,
cur_sex: 0,
fetishes: ["Big Cocks", "Pussy"],
rage_atk: 0.025, /* physical damage increased per rage stack */
rage_mod: 0.0625, /* damage reduced per rage stack */
rage_max: 8, /* Max number of stacks of rage */
charging_int: 3, /* number of rage stacks needed to start charging */
charging_float: 0.6, /* percent of atk used for charging minotaur trampling raiders */
undying_max: 12, /* Max number of stacks of rage for undying */
undying_int: 2, /* amount of rage gained if at or below health threshold */
undying_percent: 50, /* percent health missing threshold */
insatiable_int: 3, /* number of rage stacks needed for effect */
insatiable_float: 0.05, /* sexual damage increased per rage stack */
targets: 1,
rate: 0,
effects: [],
effect_names: [],
report: _report,
total_dmgdealt: 0,
total_sexdealt: 0,
total_dmgtaken: 0,
total_raiders: 0,
total_captures: 0,
total_deaths: 0,
raid_levels_gained: 0,
keeper_levels: 0,
keeper_exp: 0,
keeper_days: 0,
pic: "[img[images/creatures/minotaur/basic_minotaur/profile.jpg]]",
raider_pics: _minotaur_pics,
capture_entry: "She was Captured and used as a cock sleeve.",
defeat_entry: "She was no match for his pure strength and was Captured.",
description: "A giant among humans, the Minotaur is a fierce opponent for anyone who approaches one. He attacks the first Raider in the party, dealing @@.phy;Physical@@ and @@.sex;Sexual@@ damage. After taking damage, he gains 1 Rage that lasts until the end of the night. Rage increases his @@.phy;Physical Attack@@ 5 per stack and reduces all damage taken by 25% if he has 5 or more Rage."
}>>
* Summon Creatures *
- Imp -
* Pics *
<<set _imp_pics to {
slender: ["[img[images/creatures/imp/slender/0.jpg]]", "[img[images/creatures/imp/slender/1.jpg]]", "[img[images/creatures/imp/slender/2.jpg]]"],
average: ["[img[images/creatures/imp/average/0.jpg]]", "[img[images/creatures/imp/average/1.jpg]]", "[img[images/creatures/imp/average/2.jpg]]"],
busty: ["[img[images/creatures/imp/busty/0.jpg]]", "[img[images/creatures/imp/busty/1.jpg]]", "[img[images/creatures/imp/busty/2.jpg]]"],
profile: ["[img[images/creatures/imp/profile/0.jpg]]", "[img[images/creatures/imp/profile/1.jpg]]", "[img[images/creatures/imp/profile/2.jpg]]"]
}>>
* Base *
<<set setup.imp = {
name: "Imps",
base_name: "Imps",
passage: "Summon Imps Passage",
prefix: "They",
order_num: 99,
upgrade_list: [],
room_type: "Creature",
creature_types: ["Humanoid"],
trap_types: [],
attack_type: "Physical",
can_capture: true,
summoned: false,
index: "",
cost: 0,
upkeep: 0,
level: 0,
max_hp: 43,
cur_hp: 43,
lvl_hp: 9,
cur_max_hp: 0,
atk: 33,
lvl_atk: 6,
cur_atk: 0,
pres: 13,
lvl_pres: 3,
cur_pres: 0,
mres: 13,
lvl_mres: 3,
cur_mres: 0,
sex: 33,
lvl_sex: 6,
cur_sex: 0,
fetishes: ["Gangbangs"],
targets: 1,
addition_fetishes: ["Ass", "Breasts", "Cunnilingus", "Oral", "Pussy"],
int: 2,
effects: [],
effect_names: [],
report: _report,
total_dmgdealt: 0,
total_sexdealt: 0,
total_dmgtaken: 0,
total_raiders: 0,
total_captures: 0,
total_deaths: 0,
raid_levels_gained: 0,
keeper_levels: 0,
keeper_exp: 0,
keeper_days: 0,
pic: "",
raider_pics: _imp_pics,
creature_pics: _imp_pics.profile,
capture_entry: "She was surrounded and gangbanged by Imps until she submitted to being Captured.",
defeat_entry: "She was overwhelmed by a gang of Imps and was Captured.",
description: "Imps attack in groups and gain 3 addition Fetishes after being summoned. They attack the targeted Raider, dealing @@.phy;Physical@@ and @@.sex;Sexual@@ damage."
}>>
- Octopus -
* Pics *
<<set _octopus_pics to {
slender: ["[img[images/creatures/octopus/slender/0.jpg]]", "[img[images/creatures/octopus/slender/1.jpg]]", "[img[images/creatures/octopus/slender/2.jpg]]", "[img[images/creatures/octopus/slender/3.jpg]]"],
average: ["[img[images/creatures/octopus/average/0.jpg]]", "[img[images/creatures/octopus/average/1.jpg]]", "[img[images/creatures/octopus/average/2.jpg]]", "[img[images/creatures/octopus/average/3.jpg]]"],
busty: ["[img[images/creatures/octopus/busty/0.jpg]]", "[img[images/creatures/octopus/busty/1.jpg]]", "[img[images/creatures/octopus/busty/2.jpg]]", "[img[images/creatures/octopus/busty/3.jpg]]"],
tenta_slender: ["[img[images/creatures/octopus/slender/4.jpg]]", "[img[images/creatures/octopus/slender/5.jpg]]", "[img[images/creatures/octopus/slender/6.jpg]]"],
tenta_average: ["[img[images/creatures/octopus/average/4.jpg]]", "[img[images/creatures/octopus/average/5.jpg]]", "[img[images/creatures/octopus/average/6.jpg]]"],
tenta_busty: ["[img[images/creatures/octopus/busty/4.jpg]]", "[img[images/creatures/octopus/busty/5.jpg]]", "[img[images/creatures/octopus/busty/6.jpg]]"],
profile: ["[img[images/creatures/octopus/profile/0.jpg]]", "[img[images/creatures/octopus/profile/1.jpg]]", "[img[images/creatures/octopus/profile/2.jpg]]"]
}>>
* Base *
<<set setup.octopus = {
name: "Giant Octopus",
base_name: "Giant Octopus",
passage: "Summon Octopus Passage",
prefix: "It",
order_num: 101,
upgrade_list: [],
room_type: "Creature",
creature_types: ["Monster"],
trap_types: [],
attack_type: "Physical",
can_capture: true,
summoned: false,
index: "",
cost: 0,
upkeep: 0,
level: 0,
max_hp: 62,
cur_hp: 62,
lvl_hp: 12,
cur_max_hp: 0,
atk: 16,
lvl_atk: 4,
cur_atk: 0,
pres: 19,
lvl_pres: 5,
cur_pres: 0,
mres: 18,
lvl_mres: 5,
cur_mres: 0,
sex: 20,
lvl_sex: 5,
cur_sex: 0,
fetishes: ["Breasts", "Oral", "Pussy"],
targets: 1,
tentacle_float: 0.5,
tentacle_fetishes: ["Breasts"],
effects: [],
effect_names: [],
report: _report,
total_dmgdealt: 0,
total_sexdealt: 0,
total_dmgtaken: 0,
total_raiders: 0,
total_captures: 0,
total_deaths: 0,
raid_levels_gained: 0,
keeper_levels: 0,
keeper_exp: 0,
keeper_days: 0,
pic: "",
raider_pics: _octopus_pics,
creature_pics: _octopus_pics.profile,
capture_entry: "After getting detained by the Giant Octopus and toyed with by all its tentacles and suckers, she submitted to the pleasure.",
defeat_entry: "She could not break free from the clutches of the Giant Octopus and was defeated.",
description: "Giant Octopuses grab and hold their target using their tentacles, making them easier to toy with. They attack the targeted Raider, dealing @@.phy;Physical@@ and @@.sex;Sexual@@ damage. Other Raiders in the party are attacked by its tentacles. Tentacles have 50% of the Octopus's @@.phy;Physical@@ and @@.sex;Sexual@@ Attack stats and only apply the Breasts Fetish."
}>>
- Honey Bee -
* Pics *
<<set _honeybee_pics to {
slender: ["[img[images/creatures/honeybee/slender/0.jpg]]", "[img[images/creatures/honeybee/slender/1.jpg]]", "[img[images/creatures/honeybee/slender/2.jpg]]", "[img[images/creatures/honeybee/slender/3.jpg]]", "[img[images/creatures/honeybee/slender/4.jpg]]"],
average: ["[img[images/creatures/honeybee/average/0.jpg]]", "[img[images/creatures/honeybee/average/1.jpg]]", "[img[images/creatures/honeybee/average/2.jpg]]", "[img[images/creatures/honeybee/average/3.jpg]]", "[img[images/creatures/honeybee/average/4.jpg]]"],
busty: ["[img[images/creatures/honeybee/busty/0.jpg]]", "[img[images/creatures/honeybee/busty/1.jpg]]", "[img[images/creatures/honeybee/busty/2.jpg]]", "[img[images/creatures/honeybee/busty/3.jpg]]", "[img[images/creatures/honeybee/busty/4.jpg]]"],
profile: ["[img[images/creatures/honeybee/profile/0.jpg]]", "[img[images/creatures/honeybee/profile/1.jpg]]", "[img[images/creatures/honeybee/profile/2.jpg]]", "[img[images/creatures/honeybee/profile/3.jpg]]", "[img[images/creatures/honeybee/profile/4.jpg]]"]
}>>
* Base *
<<set setup.honey_bee = {
name: "Honey Bee",
base_name: "Honey Bee",
passage: "Summon Honey Bee Passage",
prefix: "She",
order_num: 102,
upgrade_list: [],
room_type: "Creature",
creature_types: ["Insect"],
trap_types: [],
attack_type: "Physical",
can_capture: true,
summoned: false,
index: "",
cost: 0,
upkeep: 0,
level: 0,
max_hp: 50,
cur_hp: 50,
lvl_hp: 9,
cur_max_hp: 0,
atk: 21,
lvl_atk: 5,
cur_atk: 0,
pres: 18,
lvl_pres: 4,
cur_pres: 0,
mres: 18,
lvl_mres: 4,
cur_mres: 0,
sex: 29,
lvl_sex: 6,
cur_sex: 0,
fetishes: ["Aphrodisiac", "Getting Dirty", "Lesbian"],
targets: 1,
lust_float: 0.5,
status: setup.sticky,
sticky_stacks: 2,
additional_status: setup.horny,
effects: [],
effect_names: [],
report: _report,
total_dmgdealt: 0,
total_sexdealt: 0,
total_dmgtaken: 0,
total_raiders: 0,
total_captures: 0,
total_deaths: 0,
raid_levels_gained: 0,
keeper_levels: 0,
keeper_exp: 0,
keeper_days: 0,
pic: "",
raider_pics: _honeybee_pics,
creature_pics: _honeybee_pics.profile,
capture_entry: "After taking a honey bath, she decided that she wanted to stay with the Honey Bee and was Captured.",
defeat_entry: "The Honey Bee's sting was enough to finish her off as she sank into the pool of honey.",
description: "Honey Bees enjoy hot honey baths with unsuspecting partners. She attacks the targeted Raider, dealing @@.phy;Physical@@ and @@.sex;Sexual@@ damage and inflicting 2 <<hovertip '<<print setup.sticky.tooltip>>'>>Sticky<</hovertip>>. Then if the Raider's @@.lust;Lust@@ is 50% or greater, she gains 2 addition <<hovertip '<<print setup.sticky.tooltip>>'>>Sticky<</hovertip>> and becomes <<hovertip '<<print setup.horny.tooltip>>'>>Horny<</hovertip>>."
}>>
- Snake -
* Pics *
<<set _snake_pics to {
slender: ["[img[images/creatures/snake/slender/0.jpg]]", "[img[images/creatures/snake/slender/1.jpg]]", "[img[images/creatures/snake/slender/2.jpg]]"],
average: ["[img[images/creatures/snake/average/0.jpg]]", "[img[images/creatures/snake/average/1.jpg]]", "[img[images/creatures/snake/average/2.jpg]]"],
busty: ["[img[images/creatures/snake/busty/0.jpg]]", "[img[images/creatures/snake/busty/1.jpg]]", "[img[images/creatures/snake/busty/2.jpg]]"],
profile: ["[img[images/creatures/snake/profile/0.jpg]]", "[img[images/creatures/snake/profile/1.jpg]]", "[img[images/creatures/snake/profile/2.jpg]]"]
}>>
* Base *
<<set setup.snake = {
name: "Snake",
base_name: "Snake",
passage: "Summon Snake Passage",
prefix: "It",
order_num: 103,
upgrade_list: [],
room_type: "Creature",
creature_types: ["Beast"],
trap_types: [],
attack_type: "Physical",
can_capture: true,
summoned: false,
index: "",
cost: 0,
upkeep: 0,
level: 0,
max_hp: 53,
cur_hp: 53,
lvl_hp: 10,
cur_max_hp: 0,
atk: 28,
lvl_atk: 5,
cur_atk: 0,
pres: 20,
lvl_pres: 4,
cur_pres: 0,
mres: 20,
lvl_mres: 4,
cur_mres: 0,
sex: 17,
lvl_sex: 3,
cur_sex: 0,
fetishes: ["Aphrodisiac", "Bondage"],
targets: 1,
poisoned_float: 0.4,
aroused_float: 0.2,
cap: 25,
effects: [],
effect_names: [],
report: _report,
total_dmgdealt: 0,
total_sexdealt: 0,
total_dmgtaken: 0,
total_raiders: 0,
total_captures: 0,
total_deaths: 0,
raid_levels_gained: 0,
keeper_levels: 0,
keeper_exp: 0,
keeper_days: 0,
pic: "",
raider_pics: _snake_pics,
creature_pics: _snake_pics.profile,
capture_entry: "The venom from the Snake took effect and she became paralyzed from the pleasure.",
defeat_entry: "The venom from the Snake make her collapse and was unable to continue.",
description: ""
}>>
*CREATURE DATA SETS - END*
*CREATURE COMBAT VARIABLES - START*
*RANGE FOR CREATURES RESISTANCES*
<<set setup.min_res to 0.8>>
<<set setup.max_res to 1>> min and max range for resistance calculations
*COMBAT EXP VARIABLES*
<<set setup.exp_calc = {
capture_percent: 0.75,
abandon_percent: 0.3,
combat_percent: 0.2
}>>
Capture percent: The amount of percent EXP gained from a raider when captured
Combat percent: The amount of percent EXP gained from a raider after combat
*UPKEEP VARIABLES*
<<set setup.creature_upkeep_float to 0.075>> increases upkeep cost by this amount per level
<<set setup.trap_upkeep_float to 0.33>> increases upkeep cost by this amount per level
* MASTER CREATURE LISTS *
<<set setup.creature_list to [setup.slime, setup.wizard, setup.spider, setup.wolf, setup.succubus, setup.mimic_chest, setup.slugs, setup.minotaur]>>
<<set setup.summon_list to [setup.imp, setup.octopus, setup.honey_bee, setup.snake]>>
*CREATURE COMBAT VARIABLES - END*
-TRAP VARIABLES-
*TRAP DATA SETS - START*
Traps have 1 cur_hp to pass the dungeon room check
* Rank 1 Traps *
- DART TRAP -
* Pics *
<<set _dart_pics to {
slender: ["[img[images/traps/dart/slender/0.jpg]]", "[img[images/traps/dart/slender/1.jpg]]", "[img[images/traps/dart/slender/2.jpg]]", "[img[images/traps/dart/slender/3.jpg]]"],
average: ["[img[images/traps/dart/average/0.jpg]]", "[img[images/traps/dart/average/1.jpg]]", "[img[images/traps/dart/average/2.jpg]]", "[img[images/traps/dart/average/3.jpg]]"],
busty: ["[img[images/traps/dart/busty/0.jpg]]", "[img[images/traps/dart/busty/1.jpg]]", "[img[images/traps/dart/busty/2.jpg]]", "[img[images/traps/dart/busty/3.jpg]]"]
}>>
* MODES *
<<set _stimulant = {
name: "Stimulant",
fetishes: ["Aphrodisiac"],
pic: "[img[images/traps/dart/pic.jpg]]",
raider_pics: _dart_pics,
capture_entry: "",
defeat_entry: "",
info: "Darts deal weak @@.phy;Physical@@ damage and strong @@.sex;Sexual@@ damage and inflicts <<hovertip '<<print setup.aroused.tooltip>>'>>Aroused<</hovertip>>.",
description: "Each Raider in the party faces a Trapcheck as they enter the hallway. Each failed Trapcheck triggers the trap, shooting 2 waves of darts that deal @@.phy;Physical@@ and @@.sex;Sexual@@ damage and inflict <<hovertip '<<print setup.aroused.tooltip>>'>>Aroused<</hovertip>> per wave. This Trap cannot Capture Raiders."
}>>
<<set _toxic = {
name: "Toxic",
fetishes: ["Aphrodisiac"],
pic: "[img[images/traps/dart/pic.jpg]]",
raider_pics: _dart_pics,
capture_entry: "",
defeat_entry: "",
info: "Darts deal strong @@.phy;Physical@@ damage and weak @@.sex;Sexual@@ damage and inflicts <<hovertip '<<print setup.poisoned.tooltip>>'>>Poisoned<</hovertip>>.",
description: "Each Raider in the party faces a Trapcheck as they enter the hallway. Each failed Trapcheck triggers the trap, shooting 2 waves of darts that deal @@.phy;Physical@@ and @@.sex;Sexual@@ damage and inflict <<hovertip '<<print setup.poisoned.tooltip>>'>>Poisoned<</hovertip>> per wave. This Trap cannot Capture Raiders."
}>>
* BASE TRAP *
<<set setup.dart = {
name: "Dart Trap",
base_name: "Dart Trap",
passage: "Dart Room",
built: true,
rank: 1,
in_use: false,
mode: "Toxic",
mode_list: [_toxic, _stimulant],
raid_mode: true,
room_type: "Trap",
creature_types: [],
trap_types: ["Hidden"],
attack_type: "Physical",
index: 0,
check_type: "Trapcheck",
can_capture: false,
summoned: false,
min_injury: 2,
max_injury: 3,
cur_hp: 1,
max_hp: 1,
cost: 5,
base_upkeep: 16,
upkeep: 0,
level: 1,
atk: 26,
atk_per_level: 23,
cur_atk: 0,
sex: 26,
sex_per_level: 23,
cur_sex: 0,
check: 60,
check_per_level: 24,
cur_check: 0,
fetishes: ["Aphrodisiac"],
atk_count: 2,
high_float: 0.3,
stacks_float: 0.1,
low_float: 0.2,
effects: [],
effect_names: [],
report: _report,
total_dmgdealt: 0,
total_sexdealt: 0,
total_raiders: 0,
total_captures: 0,
total_statuses: 0,
total_attempts: 0,
total_triggers: 0,
pic: "[img[images/traps/dart/pic.jpg]]",
raider_pics: _dart_pics,
capture_entry: "",
defeat_entry: "",
description: "A narrow hallway with a hidden contraption that shoot aphrodisiac darts from the walls. Each Raider in the party faces a Trapcheck as they enter the hallway. After a Raider fails, the Dart Trap will trigger and each other Raider faces another Trapcheck, increased by 25%. Each Raider takes @@.phy;Physical@@ and @@.sex;Sexual@@ damage and has a 33% chance to become <<hovertip '<<print setup.horny.tooltip>>'>>Horny<</hovertip>> for each trigger. This Trap cannot Capture Raiders."
}>>
- CROTCH BRIDGE -
* Pics *
<<set _bridge_pics to {
slender: ["[img[images/traps/crotch_bridge/slender/0.jpg]]", "[img[images/traps/crotch_bridge/slender/1.jpg]]", "[img[images/traps/crotch_bridge/slender/2.jpg]]", "[img[images/traps/crotch_bridge/slender/3.jpg]]"],
average: ["[img[images/traps/crotch_bridge/average/0.jpg]]", "[img[images/traps/crotch_bridge/average/1.jpg]]", "[img[images/traps/crotch_bridge/average/2.jpg]]", "[img[images/traps/crotch_bridge/slender/3.jpg]]"],
busty: ["[img[images/traps/crotch_bridge/busty/0.jpg]]", "[img[images/traps/crotch_bridge/busty/1.jpg]]", "[img[images/traps/crotch_bridge/busty/2.jpg]]", "[img[images/traps/crotch_bridge/busty/3.jpg]]"]
}>>
* Base *
<<set setup.crotchbridge = {
name: "Crotch Bridge",
base_name: "Crotch Bridge",
passage: "Crotch Bridge Room",
built: true,
rank: 1,
in_use: false,
mode: "",
mode_list: [],
raid_mode: true,
room_type: "Trap",
creature_types: [],
trap_types: ["Obstacle"],
attack_type: "True",
index: 0,
check_type: "Trapcheck",
can_capture: true,
summoned: false,
min_injury: 2,
max_injury: 3,
cur_hp: 1,
max_hp: 1,
cost: 5,
base_upkeep: 15,
upkeep: 0,
level: 1,
atk: 0,
atk_per_level: 0,
cur_atk: 0,
sex: 32,
sex_per_level: 28,
cur_sex: 0,
check: 53,
check_per_level: 19,
cur_check: 0,
fetishes: ["Masturbation"],
sex_float: 0.25,
sex_mod: 0.3,
wet_float: 0.5,
num_of_trapchecks: 4,
effects: [],
effect_names: [],
report: _report,
total_dmgdealt: 0,
total_sexdealt: 0,
total_raiders: 0,
total_captures: 0,
total_statuses: 0,
total_attempts: 0,
total_triggers: 0,
pic: "[img[images/traps/crotch_bridge/pic.jpg]]",
raider_pics: _bridge_pics,
capture_entry: "After climaxing on the Crotch Bridge, she feel into the pit of tentacles, where she was Captured and used to breed new spawnings.",
defeat_entry: "",
description: "Each Raider faces @@.trap;4 Trapchecks@@ (@@.trap;<<- setup.crotchbridge.check + (setup.crotchbridge.check_per_level * ($dungeon_rank - 1))>>@@) crossing the bridge. Against Raiders who are <<hovertip '<<print setup.wet.tooltip>>'>>Wet<</hovertip>>, the Trapcheck is increased by 50%. Each time they fail a Trapcheck, they take @@.sexual;Sexual@@ damage using 40% of the trap's @@.sex;Sexual Attack@@ + 10% for each previously failed Trapcheck."
}>>
- MAGICAL RUNE TRAP -
* Pics *
<<set _fire_pics to {
slender: ["[img[images/traps/magic_rune/fire/0.jpg]]", "[img[images/traps/magic_rune/fire/1.jpg]]", "[img[images/traps/magic_rune/fire/2.jpg]]"],
average: ["[img[images/traps/magic_rune/fire/0.jpg]]", "[img[images/traps/magic_rune/fire/1.jpg]]", "[img[images/traps/magic_rune/fire/2.jpg]]"],
busty: ["[img[images/traps/magic_rune/fire/0.jpg]]", "[img[images/traps/magic_rune/fire/1.jpg]]", "[img[images/traps/magic_rune/fire/2.jpg]]"]
}>>
<<set _lust_pics to {
slender: ["[img[images/traps/magic_rune/lust/slender/0.jpg]]", "[img[images/traps/magic_rune/lust/slender/1.jpg]]", "[img[images/traps/magic_rune/lust/slender/2.jpg]]"],
average: ["[img[images/traps/magic_rune/lust/average/0.jpg]]", "[img[images/traps/magic_rune/lust/average/1.jpg]]", "[img[images/traps/magic_rune/lust/average/2.jpg]]"],
busty: ["[img[images/traps/magic_rune/lust/busty/0.jpg]]", "[img[images/traps/magic_rune/lust/busty/1.jpg]]", "[img[images/traps/magic_rune/lust/busty/2.jpg]]"]
}>>
<<set _lewd_pics to {
slender: ["[img[images/traps/magic_rune/lewd/slender/0.jpg]]", "[img[images/traps/magic_rune/lewd/slender/1.jpg]]", "[img[images/traps/magic_rune/lewd/slender/2.jpg]]"],
average: ["[img[images/traps/magic_rune/lewd/average/0.jpg]]", "[img[images/traps/magic_rune/lewd/average/1.jpg]]", "[img[images/traps/magic_rune/lewd/average/2.jpg]]"],
busty: ["[img[images/traps/magic_rune/lewd/busty/0.jpg]]", "[img[images/traps/magic_rune/lewd/busty/1.jpg]]", "[img[images/traps/magic_rune/lewd/busty/2.jpg]]"]
}>>
* Modes *
<<set _fire = {
name: "Fire Rune",
fetishes: [],
pic: "[img[images/traps/magic_rune/fire/profile.jpg]]",
raider_pics: _fire_pics,
capture_entry: "",
defeat_entry: "",
info: "Deals strong @@.mag;Magical@@ damage, weak @@.sex;Sexual@@ damage, and the Raider becomes <<hovertip '<<print setup.stripped.tooltip>>'>>Stripped<</hovertip>>.",
description: "A seemingly empty room with a magical rune etched on the floor. Raiders face a Trapcheck one at a time. The first Raider to fail triggers the rune, dealing @@.mag;Magical@@ and @@.sex;Sexual@@ damage to her. This Trap cannot Capture Raiders."
}>>
<<set _lust = {
name: "Lust Rune",
fetishes: [],
pic: "[img[images/traps/magic_rune/lust/profile.jpg]]",
raider_pics: _lust_pics,
capture_entry: "",
defeat_entry: "",
info: "Deals weak @@.mag;Magical@@ damage, strong @@.sex;Sexual@@ damage, and the Raider is inflicted with the <<hovertip '<<print setup.mark_of_lust.tooltip>>'>>Mark of Lust<</hovertip>>.",
description: "A seemingly empty room with a magical rune etched on the floor. Raiders face a Trapcheck one at a time. The first Raider to fail triggers the rune, inflicting her with the <<hovertip '<<print setup.mark_of_lust.tooltip>>'>>Mark of Lust<</hovertip>> Status. This Trap cannot Capture Raiders."
}>>
<<set _lewd = {
name: "Lewd Rune",
fetishes: [],
pic: "[img[images/traps/magic_rune/lewd/profile.jpg]]",
raider_pics: _lewd_pics,
capture_entry: "",
defeat_entry: "",
info: "Deals weak @@.mag;Magical@@ damage, weak @@.sex;Sexual@@ damage, and the Raider becomes <<hovertip '<<print setup.horny.tooltip>>'>>Horny<</hovertip>> and gains <<hovertip '<<print setup.futanari.tooltip>>'>>Futanari<</hovertip>>.",
description: "A seemingly empty room with a magical rune etched on the floor. Raiders face a Trapcheck one at a time. The first Raider to fail triggers the rune, inflicting her with the 5 <<hovertip '<<print setup.futanari.tooltip>>'>>Futanari<</hovertip>>. This Trap cannot Capture Raiders."
}>>
* Base *
<<set setup.magic_rune = {
name: "Magic Runes",
base_name: "Magic Runes",
passage: "Magic Rune Room",
built: true,
rank: 1,
in_use: false,
mode: "Fire Rune",
mode_list: [_fire, _lust, _lewd],
raid_mode: true,
room_type: "Trap",
creature_types: [],
trap_types: ["Arcane"],
attack_type: "Magical",
index: 0,
check_type: "Trapcheck",
can_capture: false,
summoned: false,
min_injury: 2,
max_injury: 4,
cur_hp: 1,
max_hp: 1,
cost: 5,
base_upkeep: 19,
upkeep: 0,
level: 1,
atk: 30,
atk_per_level: 26,
cur_atk: 0,
sex: 30,
sex_per_level: 26,
cur_sex: 0,
check: 84,
check_per_level: 31,
cur_check: 0,
high_float: 1.5,
low_float: 0.75,
futa_stacks: 5,
fetishes: [],
effects: [],
effect_names: [],
report: _report,
total_dmgdealt: 0,
total_sexdealt: 0,
total_raiders: 0,
total_captures: 0,
total_statuses: 0,
total_attempts: 0,
total_triggers: 0,
pic: "[img[images/traps/magic_rune/fire/profile.jpg]]",
raider_pics: _fire_pics,
capture_entry: "",
defeat_entry: "",
description: "A seemingly empty room with a magical rune etched on the floor. Raiders face a Trapcheck one at a time. The first Raider to fail triggers the rune, dealing @@.mag;Magical@@ and @@.sex;Sexual@@ damage to her. This Trap cannot Capture Raiders."
}>>
- LIVEWIRE TRAP -
* Pics *
<<set _shock_pics to {
slender: ["[img[images/traps/livewire/shock/slender/0.jpg]]", "[img[images/traps/livewire/shock/slender/1.jpg]]", "[img[images/traps/livewire/shock/slender/2.jpg]]", "[img[images/traps/livewire/shock/slender/3.jpg]]"],
average: ["[img[images/traps/livewire/shock/average/0.jpg]]", "[img[images/traps/livewire/shock/average/1.jpg]]", "[img[images/traps/livewire/shock/average/2.jpg]]", "[img[images/traps/livewire/shock/average/3.jpg]]"],
busty: ["[img[images/traps/livewire/shock/busty/0.jpg]]", "[img[images/traps/livewire/shock/busty/1.jpg]]", "[img[images/traps/livewire/shock/busty/2.jpg]]", "[img[images/traps/livewire/shock/busty/3.jpg]]"],
}>>
<<set _hypno_pics to {
slender: ["[img[images/traps/livewire/hypno/slender/0.jpg]]", "[img[images/traps/livewire/hypno/slender/1.jpg]]", "[img[images/traps/livewire/hypno/slender/2.jpg]]", "[img[images/traps/livewire/hypno/slender/3.jpg]]"],
average: ["[img[images/traps/livewire/hypno/average/0.jpg]]", "[img[images/traps/livewire/hypno/average/1.jpg]]", "[img[images/traps/livewire/hypno/average/2.jpg]]", "[img[images/traps/livewire/hypno/average/3.jpg]]"],
busty: ["[img[images/traps/livewire/hypno/busty/0.jpg]]", "[img[images/traps/livewire/hypno/busty/1.jpg]]", "[img[images/traps/livewire/hypno/busty/2.jpg]]", "[img[images/traps/livewire/hypno/busty/3.jpg]]"],
}>>
<<set _modify_pics to {
slender: ["[img[images/traps/livewire/modify/slender/0.jpg]]", "[img[images/traps/livewire/modify/slender/1.jpg]]", "[img[images/traps/livewire/modify/slender/2.jpg]]", "[img[images/traps/livewire/modify/slender/3.jpg]]"],
average: ["[img[images/traps/livewire/modify/average/0.jpg]]", "[img[images/traps/livewire/modify/average/1.jpg]]", "[img[images/traps/livewire/modify/average/2.jpg]]", "[img[images/traps/livewire/modify/average/3.jpg]]"],
busty: ["[img[images/traps/livewire/modify/busty/0.jpg]]", "[img[images/traps/livewire/modify/busty/1.jpg]]", "[img[images/traps/livewire/modify/busty/2.jpg]]", "[img[images/traps/livewire/modify/busty/3.jpg]]"],
}>>
* Modes *
<<set _shock = {
name: "Shock",
fetishes: ["Bondage"],
pic: "[img[images/traps/livewire/shock/profile.jpg]]",
raider_pics: _shock_pics,
capture_entry: "After getting caught alone, she kept climaxing from being over stimulated.",
defeat_entry: "After getting caught alone, she kept climaxing from being over stimulated.",
info: "Targets the first Raider and inflicts <<hovertip '<<print setup.stimulated.tooltip>>'>>Stimulated<</hovertip>>. If they are already <<hovertip '<<print setup.stimulated.tooltip>>'>>Stimulated<</hovertip>>, they take become permanently <<hovertip '<<print setup.stimulated.tooltip>>'>>Stimulated<</hovertip>>. Can Capture the Raider if they are alone.",
description: "A torture machine that can hinder or Capture a Raider. When the party enters the floor, the machine activates and targets the first Raider in the party. They face two Trapchecks and are caught after failing one. If they are caught, they take @@.phy;Physical@@ and @@.sex;Sexual@@ damage and become <<hovertip '<<print setup.stimulated.tooltip>>'>>Stimulated<</hovertip>>. If they are already <<hovertip '<<print setup.stimulated.tooltip>>'>>Stimulated<</hovertip>>, they take double damage and becoming permanently <<hovertip '<<print setup.stimulated.tooltip>>'>>Stimulated<</hovertip>>. This Trap can Capture Raiders who are alone."
}>>
<<set _hypno = {
name: "Hypno",
fetishes: ["Bondage"],
pic: "[img[images/traps/livewire/hypno/profile.jpg]]",
raider_pics: _hypno_pics,
capture_entry: "After getting caught alone, she slowly gave up trying to escape as her mind was wiped clean.",
defeat_entry: "After getting caught alone, she slowly gave up trying to escape as her mind was wiped clean.",
info: "Targets the last Raider and inflicts <<hovertip '<<print setup.brainwashed.tooltip>>'>>Brainwashed<</hovertip>>. If they are already <<hovertip '<<print setup.brainwashed.tooltip>>'>>Brainwashed<</hovertip>>, they become permanently <<hovertip '<<print setup.brainwashed.tooltip>>'>>Brainwashed<</hovertip>>. Can Capture the Raider if they are alone.",
description: "A torture machine that can hinder or Capture a Raider. When the party enters the floor, the machine activates and targets the last Raider in the party. They face two Trapcheck and are caught after failing one. If they are caught, they take @@.phy;Physical@@ and @@.sex;Sexual@@ damage and become <<hovertip '<<print setup.brainwashed.tooltip>>'>>Brainwashed<</hovertip>>. If they are already <<hovertip '<<print setup.brainwashed.tooltip>>'>>Brainwashed<</hovertip>>, they take double damage and becoming permanently <<hovertip '<<print setup.brainwashed.tooltip>>'>>Brainwashed<</hovertip>>. This Trap can Capture Raiders who are alone."
}>>
<<set _modify = {
name: "Modify",
fetishes: ["Breasts", "Bondage"],
pic: "[img[images/traps/livewire/modify/profile.jpg]]",
raider_pics: _modify_pics,
capture_entry: "After getting caught alone, she could not break free while it milked her tits.",
defeat_entry: "After getting caught alone, she could not break free while it milked her tits.",
info: "Targets the Raider with the highest @@.lust;max Lust@@ and inflicts <<hovertip '<<print setup.lactation.tooltip>>'>>Lactation<</hovertip>>. For each <<hovertip '<<print setup.lactation.tooltip>>'>>Lactation<</hovertip>> stack over the maximum, trigger the <<hovertip '<<print setup.lactation.tooltip>>'>>Lactation<</hovertip>> Status' effect. Gains the Breasts Fetish. Can Capture the Raider if they are alone.",
description: "A torture machine that can hinder or Capture a Raider. When the party enters the room, the machine activates and targets the Raider with the highest @@.lust;maximum Lust@@. They face two Trapcheck and are caught after failing one. If they are caught, they take @@.phy;Physical@@ and @@.sex;Sexual@@ damage and gain 3 <<hovertip '<<print setup.lactation.tooltip>>'>>Lactation<</hovertip>>. For each <<hovertip '<<print setup.lactation.tooltip>>'>>Lactation<</hovertip>> stack over the maximum, trigger the <<hovertip '<<print setup.lactation.tooltip>>'>>Lactation<</hovertip>> Status' effect. This Trap can Capture Raiders who are alone."
}>>
* Base *
<<set setup.livewire = {
name: "Livewire Machine",
base_name: "Livewire Machine",
passage: "Livewire Machine Room",
built: true,
rank: 1,
in_use: false,
mode: "Shock",
mode_list: [_shock, _hypno, _modify],
raid_mode: true,
room_type: "Trap",
creature_types: [],
trap_types: ["Captive"],
attack_type: "Physical",
index: 0,
check_type: "Trapcheck",
can_capture: false,
summoned: false,
min_injury: 2,
max_injury: 3,
cur_hp: 1,
max_hp: 1,
cost: 5,
base_upkeep: 23,
upkeep: 0,
level: 1,
atk: 27,
atk_per_level: 23,
cur_atk: 0,
sex: 27,
sex_per_level: 23,
cur_sex: 0,
check: 72,
check_per_level: 27,
cur_check: 0,
fetishes: ["Bondage"],
trapcheck_count: 2,
lactation_stacks: 3,
effects: [],
effect_names: [],
report: _report,
total_dmgdealt: 0,
total_sexdealt: 0,
total_raiders: 0,
total_captures: 0,
total_statuses: 0,
total_attempts: 0,
total_triggers: 0,
pic: "[img[images/traps/livewire/shock/profile.jpg]]",
raider_pics: _shock_pics,
capture_entry: "After getting caught alone, she kept climaxing from being over stimulated.",
defeat_entry: "After getting caught alone, she kept climaxing from being over stimulated.",
description: "A torture machine that can hinder or Capture a Raider. When the party enters the floor, the machine activates and targets the first Raider in the party. They face two Trapchecks and are caught after failing one. If they are caught, they take @@.phy;Physical@@ and @@.sex;Sexual@@ damage and become <<hovertip '<<print setup.stimulated.tooltip>>'>>Stimulated<</hovertip>>. If they are already <<hovertip '<<print setup.stimulated.tooltip>>'>>Stimulated<</hovertip>>, they take double damage and becoming permanently <<hovertip '<<print setup.stimulated.tooltip>>'>>Stimulated<</hovertip>>. This Trap can Capture Raiders who are alone."
}>>
* Rank 2 Traps *
- NOXIOUS GAS TRAP -
* PICS *
<<set _fixation_pics to {
slender: ["[img[images/traps/noxious_gas/fixation/slender/0.jpg]]", "[img[images/traps/noxious_gas/fixation/slender/1.jpg]]", "[img[images/traps/noxious_gas/fixation/slender/2.jpg]]"],
average: ["[img[images/traps/noxious_gas/fixation/average/0.jpg]]", "[img[images/traps/noxious_gas/fixation/average/1.jpg]]", "[img[images/traps/noxious_gas/fixation/average/2.jpg]]"],
busty: ["[img[images/traps/noxious_gas/fixation/busty/0.jpg]]", "[img[images/traps/noxious_gas/fixation/busty/1.jpg]]", "[img[images/traps/noxious_gas/fixation/busty/2.jpg]]"],
}>>
<<set _contaimination_pics to {
slender: ["[img[images/traps/noxious_gas/contamination/slender/0.jpg]]", "[img[images/traps/noxious_gas/contamination/slender/1.jpg]]", "[img[images/traps/noxious_gas/contamination/slender/2.jpg]]"],
average: ["[img[images/traps/noxious_gas/contamination/average/0.jpg]]", "[img[images/traps/noxious_gas/contamination/average/1.jpg]]", "[img[images/traps/noxious_gas/contamination/average/2.jpg]]"],
busty: ["[img[images/traps/noxious_gas/contamination/busty/0.jpg]]", "[img[images/traps/noxious_gas/contamination/busty/1.jpg]]", "[img[images/traps/noxious_gas/contamination/busty/2.jpg]]"],
}>>
<<set _intoxication_pics to {
slender: ["[img[images/traps/noxious_gas/intoxication/slender/0.jpg]]", "[img[images/traps/noxious_gas/intoxication/slender/1.jpg]]", "[img[images/traps/noxious_gas/intoxication/slender/2.jpg]]"],
average: ["[img[images/traps/noxious_gas/intoxication/average/0.jpg]]", "[img[images/traps/noxious_gas/intoxication/average/1.jpg]]", "[img[images/traps/noxious_gas/intoxication/average/2.jpg]]"],
busty: ["[img[images/traps/noxious_gas/intoxication/busty/0.jpg]]", "[img[images/traps/noxious_gas/intoxication/busty/1.jpg]]", "[img[images/traps/noxious_gas/intoxication/busty/2.jpg]]"],
}>>
* MODES *
<<set _fixation = {
name: "Fixation",
fetishes: ["Aphrodisiac"],
pic: "[img[images/traps/noxious_gas/profile.jpg]]",
raider_pics: _fixation_pics,
capture_entry: "",
defeat_entry: "",
info: "Deals weak @@.sex;Sexual@@ damage to each Raider after one trigger, inflicts <<hovertip '<<print setup.aroused.tooltip>>'>>Aroused<</hovertip>> to each Raider after two triggers, and doubles each Raiders' <<hovertip '<<print setup.aroused.tooltip>>'>>Aroused<</hovertip>> Stacks after three triggers.",
description: "A narrow hallway littered with pressure plates on the floor that release noxious gas that creates the feeling of sexual desire. Each Raider in the party faces 2 Trapchecks as they walk through the passage. Whenever a Raider fails a Trapcheck, they trigger the Trap, releasing aphrodisiac gas. Effects increased based on the number of times triggered. After one trigger, each Raider takes @@.sex;Sexual@@ damage. After two triggers, each Raider gains 5 <<hovertip '<<print setup.aroused.tooltip>>'>>Aroused<</hovertip>> per Rank. After three triggers, double the number of <<hovertip '<<print setup.aroused.tooltip>>'>>Aroused<</hovertip>> Stacks of each Raider. This Trap cannot Capture Raiders."
}>>
<<set _contamination = {
name: "Contamination",
fetishes: ["Aphrodisiac"],
pic: "[img[images/traps/noxious_gas/profile.jpg]]",
raider_pics: _contaimination_pics,
capture_entry: "",
defeat_entry: "",
info: "Deals weak True damage to each Raider after one trigger, inflicts <<hovertip '<<print setup.poisoned.tooltip>>'>>Poisoned<</hovertip>> to each Raider after two triggers, and deals additional True damage to each Raider based on the amount of <<hovertip '<<print setup.poisoned.tooltip>>'>>Poisoned<</hovertip>> stacks they have after three triggers.",
description: "A narrow hallway littered with pressure plates on the floor that release noxious gas that hinders and weakens anyone who inhales it. Each Raider in the party faces 2 Trapchecks as they walk through the passage. Whenever a Raider fails a Trapcheck, they trigger the Trap, releasing poisonous gas. Effects increased based on the number of times triggered. After one trigger, each Raider takes True damage. After two triggers, each Raider gains 6 <<hovertip '<<print setup.poisoned.tooltip>>'>>Poisoned<</hovertip>> per Rank. After three triggers, increase the True damage taken and <<hovertip '<<print setup.poisoned.tooltip>>'>>Poisoned<</hovertip>> gained by each Raider by 50%. This Trap cannot Capture Raiders."
}>>
<<set _intoxication = {
name: "Intoxication",
fetishes: ["Aphrodisiac"],
pic: "[img[images/traps/noxious_gas/profile.jpg]]",
raider_pics: _intoxication_pics,
capture_entry: "",
defeat_entry: "",
info: "Inflicts <<hovertip '<<print setup.intoxicated.tooltip>>'>>Intoxicated<</hovertip>> to each Raider after one trigger, each Raider becomes <<hovertip '<<print setup.nasty.tooltip>>'>>Nasty<</hovertip>> and <<hovertip '<<print setup.kinky.tooltip>>'>>Kinky<</hovertip>> after two triggers, and each Raiders' <<hovertip '<<print setup.intoxicated.tooltip>>'>>Intoxicated<</hovertip>> becomes stronger after three triggers.",
description: "A narrow hallway littered with pressure plates on the floor that release noxious gas that mimics the effects of alcohol if inhaled. Each Raider in the party faces 2 Trapchecks as they walk through the passage. Whenever a Raider fails a Trapcheck, they trigger the Trap, releasing intoxicating gas. Effects increased based on the number of times triggered. After the first trigger, Each Raider gains 5 <<hovertip '<<print setup.intoxicated.tooltip>>'>>Intoxicated<</hovertip>>. After two triggers, each Raider becomes either <<hovertip '<<print setup.horny.tooltip>>'>>Horny<</hovertip>>, <<hovertip '<<print setup.wet.tooltip>>'>>Wet<</hovertip>>, or <<hovertip '<<print setup.perverted.tooltip>>'>>Perverted<</hovertip>>. After three triggers, each Raiders' <<hovertip '<<print setup.intoxicated.tooltip>>'>>Intoxicated<</hovertip>> Status becomes more potent, doubling its effects. This Trap cannot Capture Raiders."
}>>
* BASE TRAP *
<<set setup.noxious_gas = {
name: "Noxious Gas Trap",
base_name: "Noxious Gas Trap",
passage: "Noxious Gas Trap Room",
built: true,
rank: 2,
in_use: false,
mode: "Fixation",
mode_list: [_fixation, _contamination, _intoxication],
raid_mode: true,
room_type: "Trap",
creature_types: [],
trap_types: ["Hidden"],
attack_type: "True",
index: 0,
check_type: "Trapcheck",
can_capture: false,
summoned: false,
min_injury: 2,
max_injury: 3,
cur_hp: 1,
max_hp: 1,
cost: 5,
base_upkeep: 16,
upkeep: 0,
level: 1,
atk: 24,
atk_per_level: 20,
cur_atk: 0,
sex: 24,
sex_per_level: 20,
cur_sex: 0,
check: 64,
check_per_level: 26,
cur_check: 0,
fetishes: ["Aphrodisiac"],
fixation_float: 0.6,
contamination_float: 0.6,
contamination_mod: 3,
aroused_float: 0.15,
aroused_mult: 2,
poisoned_float: 0.15,
intoxicated_stacks: 3,
intoxicated_float: 0.15,
effects: [],
effect_names: [],
report: _report,
total_dmgdealt: 0,
total_sexdealt: 0,
total_raiders: 0,
total_captures: 0,
total_statuses: 0,
total_attempts: 0,
total_triggers: 0,
pic: "[img[images/traps/noxious_gas/profile.jpg]]",
raider_pics: _fixation_pics,
capture_entry: "",
defeat_entry: "",
description: "A narrow hallway littered with pressure plates on the floor that release noxious gas that creates the feeling of sexual desire. Each Raider in the party faces 2 Trapchecks as they walk through the passage. Whenever a Raider fails a Trapcheck, they trigger the Trap, releasing aphrodisiac gas. Effects increased based on the number of times triggered. After one trigger, each Raider takes @@.sex;Sexual@@ damage. After two triggers, each Raider gains 5 <<hovertip '<<print setup.aroused.tooltip>>'>>Aroused<</hovertip>> per Rank. After three triggers, double the number of <<hovertip '<<print setup.aroused.tooltip>>'>>Aroused<</hovertip>> Stacks of each Raider. This Trap cannot Capture Raiders."
}>>
/*
- PUZZLE ROOM TRAP - NOT USED
* PICS *
<<set _overgrown_pics = {
slender: ["[img[images/traps/puzzle_room/overgrown/slender/0.jpg]]", "[img[images/traps/puzzle_room/overgrown/slender/1.jpg]]", "[img[images/traps/puzzle_room/overgrown/slender/2.jpg]]", "[img[images/traps/puzzle_room/overgrown/slender/3.jpg]]"],
average: ["[img[images/traps/puzzle_room/overgrown/average/0.jpg]]", "[img[images/traps/puzzle_room/overgrown/average/1.jpg]]", "[img[images/traps/puzzle_room/overgrown/average/2.jpg]]", "[img[images/traps/puzzle_room/overgrown/average/3.jpg]]"],
busty:["[img[images/traps/puzzle_room/overgrown/busty/0.jpg]]", "[img[images/traps/puzzle_room/overgrown/busty/1.jpg]]", "[img[images/traps/puzzle_room/overgrown/busty/2.jpg]]", "[img[images/traps/puzzle_room/overgrown/busty/3.jpg]]"]
}>>
<<set _flooded_pics = {
slender: ["[img[images/traps/puzzle_room/flooded/slender/0.jpg]]", "[img[images/traps/puzzle_room/flooded/slender/1.jpg]]", "[img[images/traps/puzzle_room/flooded/slender/2.jpg]]", "[img[images/traps/puzzle_room/flooded/slender/3.jpg]]"],
average: ["[img[images/traps/puzzle_room/flooded/average/0.jpg]]", "[img[images/traps/puzzle_room/flooded/average/1.jpg]]", "[img[images/traps/puzzle_room/flooded/average/2.jpg]]", "[img[images/traps/puzzle_room/flooded/average/3.jpg]]"],
busty:["[img[images/traps/puzzle_room/flooded/busty/0.jpg]]", "[img[images/traps/puzzle_room/flooded/busty/1.jpg]]", "[img[images/traps/puzzle_room/flooded/busty/2.jpg]]", "[img[images/traps/puzzle_room/flooded/busty/3.jpg]]"]
}>>
<<set _enchanted_pics = {
slender: ["[img[images/traps/puzzle_room/enchanted/slender/0.jpg]]", "[img[images/traps/puzzle_room/enchanted/slender/1.jpg]]", "[img[images/traps/puzzle_room/enchanted/slender/2.jpg]]", "[img[images/traps/puzzle_room/enchanted/slender/3.jpg]]"],
average: ["[img[images/traps/puzzle_room/enchanted/average/0.jpg]]", "[img[images/traps/puzzle_room/enchanted/average/1.jpg]]", "[img[images/traps/puzzle_room/enchanted/average/2.jpg]]", "[img[images/traps/puzzle_room/enchanted/average/3.jpg]]"],
busty:["[img[images/traps/puzzle_room/enchanted/busty/0.jpg]]", "[img[images/traps/puzzle_room/enchanted/busty/1.jpg]]", "[img[images/traps/puzzle_room/enchanted/busty/2.jpg]]", "[img[images/traps/puzzle_room/enchanted/busty/3.jpg]]"]
}>>
* MODES *
<<set _overgrown = {
name: "Overgrown",
fetishes: [],
pic: "[img[images/traps/puzzle_room/overgrown/profile.jpg]]",
raider_pics: _overgrown_pics,
capture_entry: "After being unable to solve and Puzzle room and eventually passing out from the spores in the flora, she was easily Captured and taken to a cell.",
defeat_entry: "",
info: "Raiders gain 1 Drowsy each time they fail to solve the puzzle. After gaining 3 Drowsy, they fall asleep and are Captured. Base Puzzlecheck is 10.",
description: "A small room filled with sleep-inducing flora and a locked door in the back. Raiders must solve the puzzle in order to proceed. Instead of passing a Trapcheck, Raiders must solve the puzzle by reducing the Puzzlecheck (10 + 100% True Damage) to 0 using their @@.aware;Awareness@@ stat. The Raider with the highest @@.aware;Awareness@@ contributes the most to solving the Puzzlecheck while any other Raiders assist, but contribute much less. If the party does not complete the puzzle, they gain a stack of Drowsy and have to try again. After 3 stacks of Drowsy, the Raiders fall asleep and become Captured. Cannot change modes during Raids."
}>>
<<set _flooded = {
name: "Flooded",
fetishes: [],
pic: "[img[images/traps/puzzle_room/flooded/profile.jpg]]",
raider_pics: _flooded_pics,
capture_entry: "",
defeat_entry: "",
info: "Raiders have a chance (35% + 100% Trapcheck) to gain the Parasite Status each time they fail to solve the puzzle, which continuously reduces all their stats permanently between rooms until they get rid of the Status. Base Puzzlecheck is 20.",
description: "A small room flooded with murky water and a locked door in the back. Raiders must solve the puzzle in order to proceed. Instead of passing a Trapcheck, Raiders must solve the puzzle by reducing the Puzzlecheck (20 + 100% True Damage) to 0 using their @@.aware;Awareness@@ stat. The Raider with the highest @@.aware;Awareness@@ contributes the most to solving the Puzzlecheck while any other Raiders assist, but contribute much less. If the party does not complete the puzzle, they have a chance (35% + 100% Trapcheck) to gain the Parasite Status and have to try again. After their 3rd attempt, they can proceed whether they completed the puzzle or not. Cannot Capture Raiders in this mode and cannot change modes during Raids."
}>>
<<set _enchanted = {
name: "Enchanted",
fetishes: [],
pic: "[img[images/traps/puzzle_room/enchanted/profile.jpg]]",
raider_pics: _enchanted_pics,
capture_entry: "",
defeat_entry: "",
info: "Raiders have a chance (50% + 100% Trapcheck) to gain a new Kink each time they fail to solve the puzzle. Base Puzzlecheck is 30.",
description: "A small room covered in magical markings with a locked door in the back. Raiders must solve the puzzle in order to proceed. Instead of passing a Trapcheck, Raiders must solve the puzzle by reducing the Puzzlecheck (30 + 100% True Damage) to 0 using their @@.aware;Awareness@@ stat. The Raider with the highest @@.aware;Awareness@@ contributes the most to solving the Puzzlecheck while any other Raiders assist, but contribute much less. If the party does not complete the puzzle, they have a chance (50% + 100% Trapcheck) to gain a new Kink and have to try again. After their 3rd attempt, they can proceed whether they completed the puzzle or not. Cannot Capture Raiders in this mode and cannot change modes during Raids."
}>>
* BASE TRAP *
<<set setup.puzzle_room = {
name: "Puzzle Room",
base_name: "Puzzle Room",
passage: "Puzzle Room Room",
built: true,
rank: 2,
in_use: false,
mode: "Overgrown",
mode_list: [_overgrown, _flooded, _enchanted],
raid_mode: false,
room_type: "Trap",
creature_types: [],
trap_types: ["Obstacle"],
attack_type: "True",
index: 0,
check_type: "Trapcheck",
can_capture: false,
summoned: false,
min_injury: 2,
max_injury: 3,
cur_hp: 1,
max_hp: 1,
cost: 5,
base_upkeep: 17,
upkeep: 0,
level: 1,
atk: 15,
atk_per_level: 10,
sex: 0,
sex_per_level: 0,
check: 20,
check_per_level: 5,
attempt_num: 0,
max_attempt: 2,
overgrown_check: 10,
flooded_check: 20,
enchanted_check: 25,
parasite_rate: 35,
kink_rate: 50,
cur_puzzlecheck: 0,
start_puzzlecheck: 0,
drowsy_count: 3,
lead_float: 0.6,
other_float: 0.1,
fetishes: [],
effects: [],
effect_names: [],
report: _report,
total_dmgdealt: 0,
total_sexdealt: 0,
total_raiders: 0,
total_captures: 0,
total_statuses: 0,
total_attempts: 0,
total_triggers: 0,
pic: "[img[images/traps/puzzle_room/overgrown/profile.jpg]]",
raider_pics: _overgrown_pics,
capture_entry: "After being unable to solve and Puzzle room and eventually passing out from the spores in the flora, she was easily Captured and taken to a cell.",
defeat_entry: "",
description: "A small room filled with sleep-inducing flora and a locked door in the back. Raiders must solve the puzzle in order to proceed. Instead of passing a Trapcheck, Raiders must solve the puzzle by reducing the Puzzlecheck (10 + 100% True Damage) to 0 using their @@.aware;Awareness@@ stat. The Raider with the highest @@.aware;Awareness@@ contributes the most to solving the Puzzlecheck while any other Raiders assist, but contribute much less. If the party does not complete the puzzle, they gain a stack of Drowsy and have to try again. After 3 stacks of Drowsy, the Raiders fall asleep and become Captured. Cannot change modes during Raids."
}>>
*/
-PITFALL TRAP -
* PICS *
<<set _overgrown_pics = {
slender: ["[img[images/traps/pitfall/overgrown/slender/0.jpg]]", "[img[images/traps/pitfall/overgrown/slender/1.jpg]]", "[img[images/traps/pitfall/overgrown/slender/2.jpg]]", "[img[images/traps/pitfall/overgrown/slender/3.jpg]]"],
average: ["[img[images/traps/pitfall/overgrown/average/0.jpg]]", "[img[images/traps/pitfall/overgrown/average/1.jpg]]", "[img[images/traps/pitfall/overgrown/average/2.jpg]]", "[img[images/traps/pitfall/overgrown/average/3.jpg]]"],
busty:["[img[images/traps/pitfall/overgrown/busty/0.jpg]]", "[img[images/traps/pitfall/overgrown/busty/1.jpg]]", "[img[images/traps/pitfall/overgrown/busty/2.jpg]]", "[img[images/traps/pitfall/overgrown/busty/3.jpg]]"]
}>>
<<set _flooded_pics = {
slender: ["[img[images/traps/pitfall/flooded/slender/0.jpg]]", "[img[images/traps/pitfall/flooded/slender/1.jpg]]", "[img[images/traps/pitfall/flooded/slender/2.jpg]]", "[img[images/traps/pitfall/flooded/slender/3.jpg]]"],
average: ["[img[images/traps/pitfall/flooded/average/0.jpg]]", "[img[images/traps/pitfall/flooded/average/1.jpg]]", "[img[images/traps/pitfall/flooded/average/2.jpg]]", "[img[images/traps/pitfall/flooded/average/3.jpg]]"],
busty:["[img[images/traps/pitfall/flooded/busty/0.jpg]]", "[img[images/traps/pitfall/flooded/busty/1.jpg]]", "[img[images/traps/pitfall/flooded/busty/2.jpg]]", "[img[images/traps/pitfall/flooded/busty/3.jpg]]"]
}>>
<<set _infested_pics = {
slender: ["[img[images/traps/pitfall/infested/slender/0.jpg]]", "[img[images/traps/pitfall/infested/slender/1.jpg]]", "[img[images/traps/pitfall/infested/slender/2.jpg]]", "[img[images/traps/pitfall/infested/slender/3.jpg]]"],
average: ["[img[images/traps/pitfall/infested/average/0.jpg]]", "[img[images/traps/pitfall/infested/average/1.jpg]]", "[img[images/traps/pitfall/infested/average/2.jpg]]", "[img[images/traps/pitfall/infested/average/3.jpg]]"],
busty:["[img[images/traps/pitfall/infested/busty/0.jpg]]", "[img[images/traps/pitfall/infested/busty/1.jpg]]", "[img[images/traps/pitfall/infested/busty/2.jpg]]", "[img[images/traps/pitfall/infested/busty/3.jpg]]"]
}>>
* MODES *
<<set _overgrown = {
name: "Overgrown",
fetishes: [],
pic: "[img[images/traps/pitfall/overgrown/profile.jpg]]",
raider_pics: _overgrown_pics,
capture_entry: "After falling into the pit and getting whipped by the vines, they decided to keep her as they tied her up and abused her more.",
defeat_entry: "After falling into the pit and getting whipped by the vines, they decided to keep her as they tied her up and abused her more.",
info: "Deals @@.phy;Physical@@ damage based on the Raider's @@.health;Max Health@@ and deals @@.phy;Physical@@ damage over 3 attacks. Attacks have a chance to inflict the <<hovertip '<<print setup.stripped.tooltip>>'>>Stripped<</hovertip>> Status. Only the Raider who failed their Obstacle Trapcheck falls in and is attacked. Can Capture, but cannot change modes during Raids.",
description: "A room with a small pitfall trap shrouded by overgrown flora. Each Raider faces an Obstacle Trapcheck as they walk over the pit. If a Raider fails their Trapcheck, she falls into the trap, taking @@.phy;Physical@@ damage equal to 25% + @@.phy;10% Physical Attack@@ of the Raider's @@.health;maximum Health@@. Inside the pit, she is attacked by vines 3 times, taking @@.phy;Physical@@ damage (@@.phy;40% Physical Attack@@), with a 75% chance to become <<hovertip '<<print setup.stripped.tooltip>>'>>Stripped<</hovertip>> each attack. Can Capture, but cannot change modes during Raids."
}>>
<<set _infested = {
name: "Infested",
fetishes: ["Pussy"],
pic: "[img[images/traps/pitfall/infested/profile.jpg]]",
raider_pics: _infested_pics,
capture_entry: "After falling into the pit and getting penetrated by tentacles, she was unable to escape as they keep filling up her womb.",
defeat_entry: "After falling into the pit and getting penetrated by tentacles, she was unable to escape as they keep filling up her womb.",
info: "Deals @@.sex;Sexual@@ damage plus additional @@.sex;Sexual@@ damaged based on the Raider's @@.lust;Max Lust@@ over 5 attacks. Attacks have a chance to <<hovertip '<<print setup.pregnant.tooltip>>'>>Impregnant<</hovertip>> the Raider's womb. Only the Raider who failed their Obstacle Trapcheck falls in and is attacked. Can Capture, but cannot change modes during Raids.",
description: "A room with a pitfall trap hidden in darkness. Each Raider faces an Obstacle Trapcheck as they walk over the pit. If a Raider fails their Trapcheck, she falls into the trap filled with tentacles and becomes stuck. She is attacked by the tentacles 5 times, taking @@.sex;Sexual@@ damage (@@.sex;15% Sexual Attack@@) plus an additional 5% + @@.sex;5% Sexual Attack@@ of the Raider's @@.lust;maximum Lust@@, and has a 25% chance to <<hovertip '<<print setup.pregnant.tooltip>>'>>Impregnanted<</hovertip>> their womb for 2-3 floors each attack. Can Capture, but cannot change modes during Raids."
}>>
<<set _flooded = {
name: "Flooded",
fetishes: [],
pic: "[img[images/traps/pitfall/flooded/profile.jpg]]",
raider_pics: _flooded_pics,
capture_entry: "",
defeat_entry: "",
info: "Deals @@.phy;Physical@@ damage based on the Raider's @@.health;maximum Health@@ and inflicts the <<hovertip '<<print setup.aroused.tooltip>>'>>Aroused<</hovertip>> and <<hovertip '<<print setup.wet.tooltip>>'>>Wet<</hovertip>> Statuses. All Raiders fall in if any Raider failed their Obstacle Trapcheck. Cannot Capture Raiders or change modes during Raids.",
description: "A room with a large pitfall trap covered by a thin layer of murky water. Each Raider faces an Obstacle Trapcheck as they walk over the pit. If a Raider fails their Trapcheck, all Raiders fall into the trap, taking @@.phy;Physical@@ damage equal to 25% + @@.phy;20% Physical Attack@@ of the Raider's @@.health; maximum Health@@, gains 3 + @@.sex;10% Sexual Attack@@ <<hovertip '<<print setup.aroused.tooltip>>'>>Aroused<</hovertip>>, and becomes <<hovertip '<<print setup.wet.tooltip>>'>>Wet<</hovertip>>. Cannot Capture Raiders or change modes during Raids."
}>>
* BASE TRAP *
<<set setup.pitfall = {
name: "Pitfall",
base_name: "Pitfall",
passage: "Pitfall Room",
built: true,
rank: 2,
in_use: false,
mode: "Overgrown",
mode_list: [_overgrown, _infested, _flooded],
raid_mode: false,
room_type: "Trap",
creature_types: [],
trap_types: ["Obstacle"],
attack_type: "Physical",
index: 0,
check_type: "Trapcheck",
can_capture: false,
summoned: false,
min_injury: 2,
max_injury: 3,
cur_hp: 1,
max_hp: 1,
cost: 5,
base_upkeep: 18,
upkeep: 0,
level: 1,
atk: 25,
cur_atk: 0,
atk_per_level: 21,
sex: 25,
cur_sex: 0,
sex_per_level: 21,
check: 75,
check_per_level: 28,
cur_check: 0,
fall_float: 0.25,
lust_float: 0.05,
overgrown_float: 0.1,
overgrown_int: 3,
infested_float: 0.05,
infested_int: 5,
flooded_float: 0.2,
patk_float: 0.4,
satk_float: 0.15,
stripped_percent: 75,
pregnant_percent: 25,
min_pregnant: 2,
max_pregnant: 3,
pregnant_target: "Womb",
aroused_stack: 3,
aroused_float: 0.1,
fetishes: [],
effects: [],
effect_names: [],
report: _report,
total_dmgdealt: 0,
total_sexdealt: 0,
total_raiders: 0,
total_captures: 0,
total_statuses: 0,
total_attempts: 0,
total_triggers: 0,
pic: "[img[images/traps/pitfall/overgrown/profile.jpg]]",
raider_pics: _overgrown_pics,
capture_entry: "After falling into the pit and getting whipped by the vines, they decided to keep her as they tied her up and abused her more.",
defeat_entry: "After falling into the pit and getting whipped by the vines, they decided to keep her as they tied her up and abused her more.",
description: "A room with a small pitfall trap shrouded by overgrown flora. Each Raider faces an Obstacle Trapcheck as they walk over the pit. If a Raider fails their Trapcheck, she falls into the trap, taking @@.phy;Physical@@ damage equal to 25% + @@.phy;10% Physical Attack@@ of the Raider's @@.health;maximum Health@@. Inside the pit, she is attacked by vines 3 times, taking @@.phy;Physical@@ damage (@@.phy;40% Physical Attack@@), with a 50% chance to become <<hovertip '<<print setup.stripped.tooltip>>'>>Stripped<</hovertip>> each attack. Can Capture, but cannot change modes during Raids."
}>>
- WOODEN HORSE TRAP -
* Pics *
<<set _wooden_pics to {
profile: "[img[images/traps/wooden_horse/profile.jpg]]",
slender: ["[img[images/traps/wooden_horse/slender/0.jpg]]", "[img[images/traps/wooden_horse/slender/1.jpg]]", "[img[images/traps/wooden_horse/slender/2.jpg]]", "[img[images/traps/wooden_horse/slender/3.jpg]]"],
average: ["[img[images/traps/wooden_horse/average/0.jpg]]", "[img[images/traps/wooden_horse/average/1.jpg]]", "[img[images/traps/wooden_horse/average/2.jpg]]", "[img[images/traps/wooden_horse/average/3.jpg]]"],
busty: ["[img[images/traps/wooden_horse/busty/0.jpg]]", "[img[images/traps/wooden_horse/busty/1.jpg]]", "[img[images/traps/wooden_horse/busty/2.jpg]]", "[img[images/traps/wooden_horse/busty/3.jpg]]"],
duo : {
aa: ["[img[images/traps/wooden_horse/duo/aa.jpg]]"],
ab: ["[img[images/traps/wooden_horse/duo/ab.jpg]]"],
as: ["[img[images/traps/wooden_horse/duo/as.jpg]]"],
bb: ["[img[images/traps/wooden_horse/duo/bb.jpg]]"],
bs: ["[img[images/traps/wooden_horse/duo/bs.jpg]]"],
ss: ["[img[images/traps/wooden_horse/duo/ss.jpg]]"]
}
}>>
* Base *
<<set setup.wooden_horse = {
name: "Wooden Horse",
base_name: "Wooden Horse",
passage: "Wooden Horse Room",
built: true,
rank: 2,
in_use: false,
mode: "",
mode_list: [],
raid_mode: true,
room_type: "Trap",
creature_types: [],
trap_types: ["Captive"],
attack_type: "Physical",
index: 0,
check_type: "Trapcheck",
can_capture: false,
summoned: false,
min_injury: 2,
max_injury: 3,
cur_hp: 1,
max_hp: 1,
cost: 5,
base_upkeep: 18,
upkeep: 0,
level: 1,
atk: 32,
atk_per_level: 28,
cur_atk: 0,
sex: 32,
sex_per_level: 28,
cur_sex: 0,
check: 81,
check_per_level: 30,
cur_check: 0,
fetishes: ["Bondage", "Masturbation"],
other_fetishes: ["Lesbian"],
atk_float: 0.15,
sex_float: 0.25,
trapcheck_max: 4,
trapcheck_float: 0.1,
percent: 30,
bonus_percent: 60,
lust_percent: 50,
effects: [],
effect_names: [],
report: _report,
total_dmgdealt: 0,
total_sexdealt: 0,
total_raiders: 0,
total_captures: 0,
total_statuses: 0,
total_attempts: 0,
total_triggers: 0,
pic: _wooden_pics.profile,
raider_pics: _wooden_pics,
capture_entry: "",
defeat_entry: "",
description: "Each Raider faces a Trapcheck as they cross the room. The first two Raiders who fail their Trapcheck becomes trapped on a Wooden Horse together. Each Raider on the Wooden Horse faces addition Trapchecks, reduced by 10% each time, until she passes one or fails five times. For each time a Raider fails her Trapcheck while on the Wooden Horse, she has a 40% chance to become wet, perverted, or gain the masochist trait, increased to 80% if her Lust is equal or greater than 50% filled, and takes physical and sexual damage. If two Raiders are on the Wooden Horse together, it gains the Lesbian Fetish. This Trap cannot Capture Raiders."
}>>
- Summoning Circle -
* Pics *
<<set _summoningCircle_pics to {
slender: ["[img[images/traps/summoning_circle/slender/0.jpg]]", "[img[images/traps/summoning_circle/slender/1.jpg]]", "[img[images/traps/summoning_circle/slender/2.jpg]]", "[img[images/traps/summoning_circle/slender/3.jpg]]"],
average: ["[img[images/traps/summoning_circle/average/0.jpg]]", "[img[images/traps/summoning_circle/average/1.jpg]]", "[img[images/traps/summoning_circle/average/2.jpg]]", "[img[images/traps/summoning_circle/average/3.jpg]]"],
busty: ["[img[images/traps/summoning_circle/busty/0.jpg]]", "[img[images/traps/summoning_circle/busty/1.jpg]]", "[img[images/traps/summoning_circle/busty/2.jpg]]", "[img[images/traps/summoning_circle/busty/3.jpg]]"],
demon : {
slender: ["[img[images/traps/summoning_circle/demon/slender/0.jpg]]", "[img[images/traps/summoning_circle/demon/slender/1.jpg]]"],
average: ["[img[images/traps/summoning_circle/demon/average/0.jpg]]", "[img[images/traps/summoning_circle/demon/average/1.jpg]]"],
busty: ["[img[images/traps/summoning_circle/demon/busty/0.jpg]]", "[img[images/traps/summoning_circle/demon/busty/1.jpg]]"],
}
}>>
* Modes *
<<set _spirit = {
name: "Summon Spirit",
fetishes: ["Breasts", "Masturbation", "Oral"],
pic: "[img[images/traps/summoning_circle/spirit/profile.jpg]]",
raider_pics: _summoningCircle_pics,
capture_entry: "She was Captured by the summoned Tentacles as swarmed around her to harvest her Energy.",
defeat_entry: "She was Captured by the summoned Tentacles, collecting more of her Energy.",
info: "Summons Spirits for 2 Energy that makes Raiders <<hovertip '<<- setup.perverted.tooltip>>'>>Perverted<</hovertip>> and gain 1 of the Summoning Circle's Fetishes as a Kink. Cannot change modes during Raids.",
description: ""
}>>
<<set _demon = {
name: "Summon Demon",
fetishes: ["Breasts", "Masturbation", "Oral"],
pic: "[img[images/traps/summoning_circle/demon/profile.jpg]]",
raider_pics: _summoningCircle_pics,
capture_entry: "She was Captured by the summoned Tentacles as swarmed around her to harvest her Energy.",
defeat_entry: "She was Captured by the summoned Tentacles, collecting more of her Energy.",
info: "Summons a Demon for 5 Energy that Captures a random Raider in the party. If no Raiders can be Captured, he is not summoned and Energy is preserved. Cannot change modes during Raids.",
description: ""
}>>
<<set _portal = {
name: "Summon Portal",
fetishes: ["Breasts", "Masturbation", "Oral"],
pic: "[img[images/traps/summoning_circle/portal/profile.jpg]]",
raider_pics: _summoningCircle_pics,
capture_entry: "She was Captured by the summoned Tentacles as swarmed around her to harvest her Energy.",
defeat_entry: "She was Captured by the summoned Tentacles, collecting more of her Energy.",
info: "Summons a portal for 8 Energy, unleashing an army of Imps that attacks all Raiders outside the Dungeon. If there are no Raiders outside the Dungeon, they Capture 2 Raiders from the town instead. Cannot change modes during Raids.",
description: ""
}>>
* Base *
<<set setup.summoning_circle = {
name: "Summoning Circle",
base_name: "Summoning Circle",
passage: "Summoning Circle Room",
built: true,
rank: 2,
in_use: false,
mode: "Summon Spirit",
mode_list: [_spirit, _demon, _portal],
raid_mode: false,
room_type: "Trap",
creature_types: ["Monster"],
trap_types: ["Arcane"],
attack_type: "Magical",
index: 0,
check_type: "Trapcheck",
can_capture: true,
summoned: false,
min_injury: 2,
max_injury: 3,
cur_hp: 1,
max_hp: 1,
cost: 5,
base_upkeep: 18,
upkeep: 0,
level: 1,
atk: 35,
atk_per_level: 31,
cur_atk: 0,
sex: 0,
sex_per_level: 0,
cur_sex: 0,
check: 80,
check_per_level: 30,
cur_check: 0,
fetishes: ["Breasts", "Masturbation", "Oral"],
energy_int: 1,
energy_mod: 3,
spirit_int: 2,
demon_int: 5,
portal_int: 8,
dmg_mod: 0.2,
atk_float: 0.4,
sex_float: 0.8,
portal_atk: 1.3,
portal_sex: 1.3,
portal_type: ["Humanoid"],
imp_int: 3,
imp_fetishes: ["Gangbang"],
imp_list: ["Ass", "Breasts", "Cunnilingus", "Oral", "Pussy"],
fetish_int: 2,
capture_int: 2,
effects: [],
effect_names: [],
report: _report,
total_dmgdealt: 0,
total_sexdealt: 0,
total_raiders: 0,
total_captures: 0,
total_statuses: 0,
total_attempts: 0,
total_triggers: 0,
pic: "[img[images/traps/summoning_circle/spirit/profile.jpg]]",
raider_pics: _summoningCircle_pics,
capture_entry: "She was Captured by the summoned Tentacles as swarmed around her to harvest her Energy.",
defeat_entry: "She was Captured by the summoned Tentacles, collecting more of her Energy.",
description: ""
}>>
- Genie Lamp -
* Pics *
<<set _flame_pics to {
slender: ["[img[images/traps/magic_rune/flame/0.jpg]]", "[img[images/traps/magic_rune/flame/1.jpg]]", "[img[images/traps/magic_rune/flame/2.jpg]]"],
average: ["[img[images/traps/magic_rune/flame/0.jpg]]", "[img[images/traps/magic_rune/flame/1.jpg]]", "[img[images/traps/magic_rune/flame/2.jpg]]"],
busty: ["[img[images/traps/magic_rune/flame/0.jpg]]", "[img[images/traps/magic_rune/flame/1.jpg]]", "[img[images/traps/magic_rune/flame/2.jpg]]"]
}>>
<<set _lust_pics to {
slender: ["[img[images/traps/magic_rune/lust/slender/0.jpg]]", "[img[images/traps/magic_rune/lust/slender/1.jpg]]", "[img[images/traps/magic_rune/lust/slender/2.jpg]]"],
average: ["[img[images/traps/magic_rune/lust/average/0.jpg]]", "[img[images/traps/magic_rune/lust/average/1.jpg]]", "[img[images/traps/magic_rune/lust/average/2.jpg]]"],
busty: ["[img[images/traps/magic_rune/lust/busty/0.jpg]]", "[img[images/traps/magic_rune/lust/busty/1.jpg]]", "[img[images/traps/magic_rune/lust/busty/2.jpg]]"]
}>>
<<set _futa_pics to {
slender: ["[img[images/traps/magic_rune/futa/slender/0.jpg]]", "[img[images/traps/magic_rune/futa/slender/1.jpg]]", "[img[images/traps/magic_rune/futa/slender/2.jpg]]"],
average: ["[img[images/traps/magic_rune/futa/average/0.jpg]]", "[img[images/traps/magic_rune/futa/average/1.jpg]]", "[img[images/traps/magic_rune/futa/average/2.jpg]]"],
busty: ["[img[images/traps/magic_rune/futa/busty/0.jpg]]", "[img[images/traps/magic_rune/futa/busty/1.jpg]]", "[img[images/traps/magic_rune/futa/busty/2.jpg]]"]
}>>
* Modes *
<<set _naughty_genie = {
name: "Naughty Genie",
fetishes: ["Breasts", "Gangbangs", "Masturbation"],
pic: "[img[images/traps/magic_rune/flame/profile.jpg]]",
raider_pics: _flame_pics,
capture_entry: "",
defeat_entry: "",
info: "The Raider that triggered the trap takes @@.sex;Sexual@@ damage with the Breasts, Gangbang, and Masturbation Fetishes and becomes Stripped. Other party members only become Stripped.",
description: "A small area with a single pedestal holding a genie lamp. The party decides whether they will pick up the lamp by voting. Each Raider who fails the Spellcheck votes yes, otherwise they vote no. If yes is tied or has the majority vote, the Raider with the lowest @@.reas;Reason@@ will pick up the lamp and trigger the trap. The Genie attacks the group with floating hands, dealing @@.sex;Sexual@@ damage and Stripping the Raider that triggered the trap. The other Raiders take no damage, but are Stripped as well."
}>>
<<set _cocky_genie = {
name: "Cocky Genie",
fetishes: ["Big Cocks", "Pussy", "Pussy"],
pic: "[img[images/traps/magic_rune/lust/profile.jpg]]",
raider_pics: _lust_pics,
capture_entry: "",
defeat_entry: "",
info: "The Raider who triggers the trap takes @@.sex;Sexual@@ damage with the Gangbang, Oral, and Pussy Fetishes. Other party members face a Spellcheck (50% Spellcheck + @@.mag;50% Magical Attack@@) and gain the Absentminded Trait if they fail.",
description: "A seemingly empty room with a magical rune etched on the floor. Raiders face a Trapcheck one at a time. The first Raider to fail triggers the rune, inflicting her with the Mark of Lust Status. This Trap cannot Capture Raiders."
}>>
<<set _trickster_genie = {
name: "Trickster Genie",
fetishes: ["Ass", "Gangbangs", "Oral"],
pic: "[img[images/traps/magic_rune/futa/profile.jpg]]",
raider_pics: _futa_pics,
capture_entry: "",
defeat_entry: "",
info: "Inflicts the first Raider who triggers the rune with the Futanari Status.",
description: "A seemingly empty room with a magical rune etched on the floor. Raiders face a Trapcheck one at a time. The first Raider to fail triggers the rune, inflicting her with the 5 Futanari. This Trap cannot Capture Raiders."
}>>
* Base *
<<set setup.genie_lamp = {
name: "Genie Lamp",
base_name: "Genie Lamp",
passage: "Genie Lamp Room",
built: true,
rank: 2,
in_use: false,
mode: "Flame Rune",
mode_list: [_flame, _lust, _futa],
raid_mode: true,
room_type: "Trap",
creature_types: [],
trap_types: ["Arcane"],
attack_type: "Magical",
index: 0,
check_type: "Spellcheck",
can_capture: false,
summoned: false,
min_injury: 2,
max_injury: 4,
cur_hp: 1,
max_hp: 1,
cost: 5,
base_upkeep: 24,
upkeep: 0,
level: 1,
atk: 36,
atk_per_level: 45,
cur_atk: 0,
sex: 12,
sex_per_level: 15,
cur_sex: 0,
rate: 82,
rate_per_level: 7,
cur_rate: 0,
flame_dmg: 26,
flame_sex: 22,
lust_dmg: 0,
lust_sex: 0,
futa_dmg: 0,
futa_sex: 0,
futanari_stacks: 5,
fetishes: [],
effects: [],
effect_names: [],
report: _report,
total_dmgdealt: 0,
total_sexdealt: 0,
total_raiders: 0,
total_captures: 0,
total_statuses: 0,
total_attempts: 0,
total_triggers: 0,
pic: "[img[images/traps/magic_rune/flame/profile.jpg]]",
raider_pics: _flame_pics,
capture_entry: "",
defeat_entry: "",
description: "A small area with a single pedestal holding a genie lamp. The party decides whether they will pick up the lamp by voting. Each Raider who fails the Spellcheck votes yes, otherwise they vote no. If yes is tied or has the majority vote, the Raider with the lowest @@.reas;Reason@@ will pick up the lamp and trigger the trap. The Genie attacks the group with floating hands and cocks, dealing @@.sex;Sexual@@ damage. The Raider who picked up the lamp takes full damage and all Fetishes apply, while the rest of the party takes 25% reduced damage and only applies the Ass Fetish."
}>>
* TRAP DATA SETS - END *
* TRAP ARRAY - START *
<<set setup.trap_list to [setup.dart, setup.crotchbridge, setup.magic_rune, setup.livewire, setup.noxious_gas, setup.pitfall, setup.wooden_horse, setup.summoning_circle]>>
* TRAP ARRAY - END *
* BLESSINGS VARIABLES - START *
Blessings are permanent effects that can buff your creature or trap rooms, give you benefits, and more. They can be unlocked in Ahri's Quarters using Lust Essence
STARTING BLESSINGS
<<set setup.blessing_00_0 = {
name: "Lust Collector",
id: "Lust Collector",
type: ["Player", "Mythical"],
tree: "Starter",
rank: 1,
cost: 10,
unlock: [],
req: [],
int: 3,
float: 0.2,
trigger: false,
tooltip: "You gain 20% more EXP from fucking Captured Raiders.",
icon: "[img[images/icons/blessing_icon.png]]"
}>>
<<set setup.blessing_00_1 = {
name: "Slave Regulator",
id: "Slave Regulator",
type: ["Player", "Mythical"],
tree: "Starter",
rank: 1,
cost: 10,
unlock: [],
req: [],
int: 1,
float: 0.5,
trigger: false,
tooltip: "Enslaving a Captured Raider reduces their @@.stress;Stress@@ by @@.stress;50%@@.",
icon: "[img[images/icons/blessing_icon.png]]"
}>>
<<set setup.blessing_00_2 = {
name: "Lewd Harvester",
id: "Lewd Harvester",
type: ["Player", "Mythical"],
tree: "Starter",
rank: 1,
cost: 10,
unlock: [],
req: [],
int: 2,
mana: 1,
trigger: false,
tooltip: "Capturing a Raider restores @@.mana;1 Mana@@.",
icon: "[img[images/icons/blessing_icon.png]]"
}>>
<<set setup.blessing_00_3 = {
name: "Hoarding Lord",
id: "Hoarding Lord",
type: ["Player", "Mythical"],
tree: "Starter",
rank: 1,
cost: 10,
unlock: [],
req: [],
int: 500,
float: 0.1,
trigger: false,
tooltip: "Captured Raiders give 10% more @@.gold;Gold@@.",
icon: "[img[images/icons/blessing_icon.png]]"
}>>
GODDESS GIFT BLESSING LINE
<<set setup.blessing_01_0 = {
name: "Goddess's Gift I",
id: "Goddess's Gift",
type: ["Player", "Basic"],
tree: "Gift",
rank: 1,
cost: 3,
unlock: [],
req: [],
int: 1,
trigger: true,
tooltip: "Increases your maximum @@.energy;Energy@@ and @@.mana;Mana@@ by 1."
}>>
<<set setup.blessing_01_1 = {
name: "Goddess's Gift II",
id: "Goddess's Gift",
type: ["Player", "Basic"],
tree: "Gift",
rank: 2,
cost: 3,
unlock: [setup.blessing_01_0.name],
req: [],
int: 1,
trigger: true,
tooltip: "Increases your maximum @@.energy;Energy@@ and @@.mana;Mana@@ by 2."
}>>
<<set setup.blessing_01_2 = {
name: "Goddess's Gift III",
id: "Goddess's Gift",
type: ["Player", "Basic"],
tree: "Gift",
rank: 3,
cost: 3,
unlock: [setup.blessing_01_1.name],
req: [],
int: 1,
trigger: true,
tooltip: "Increases your maximum @@.energy;Energy@@ and @@.mana;Mana@@ by 3."
}>>
<<set setup.blessing_01_3 = {
name: "Goddess's Gift IV",
id: "Goddess's Gift",
type: ["Player", "Basic"],
tree: "Gift",
rank: 4,
cost: 3,
unlock: [setup.blessing_01_2.name],
req: [],
int: 1,
trigger: true,
tooltip: "Increases your maximum @@.energy;Energy@@ and @@.mana;Mana@@ by 4."
}>>
<<set setup.blessing_01_4 = {
name: "Goddess's Gift V",
id: "Goddess's Gift",
type: ["Player", "Basic"],
tree: "Gift",
rank: 5,
cost: 3,
unlock: [setup.blessing_01_3.name],
req: [],
int: 1,
trigger: true,
tooltip: "Increases your maximum @@.energy;Energy@@ and @@.mana;Mana@@ by 5."
}>>
<<set setup.blessing_01_5 = {
name: "Energy Conversion I",
id: "Energy Conversion",
type: ["Player", "Basic"],
tree: "Gift",
rank: 2,
cost: 3,
unlock: [],
req: [setup.blessing_01_0.name],
trigger: false,
float: 0.5,
tooltip: "Converts half your @@.energy;Energy@@, rounded down, into @@.mana;Mana@@ at the end of the day."
}>>
<<set setup.blessing_01_6 = {
name: "Energy Conversion II",
id: "Energy Conversion",
type: ["Player", "Basic"],
tree: "Gift",
rank: 4,
cost: 3,
unlock: [setup.blessing_01_5.name],
req: [],
trigger: false,
float: 1,
tooltip: "Converts your @@.energy;Energy@@ into @@.mana;Mana@@ at the end of the day."
}>>
<<set setup.blessing_01_7 = {
name: "Gleaming Interest I",
id: "Gleaming Interest",
type: ["Player", "Basic"],
tree: "Gift",
rank: 2,
cost: 3,
unlock: [],
req: [setup.blessing_01_0.name],
float: 0.02,
trigger: false,
tooltip: "At the end of the night, gain @@.gold;Gold@@ equal to 2% of your total @@.gold;Gold@@."
}>>
<<set setup.blessing_01_8 = {
name: "Gleaming Interest II",
id: "Gleaming Interest",
type: ["Player", "Basic"],
tree: "Gift",
rank: 3,
cost: 3,
unlock: [setup.blessing_01_7.name],
req: [],
float: 0.04,
trigger: false,
tooltip: "At the end of the night, gain @@.gold;Gold@@ equal to 4% of your total @@.gold;Gold@@."
}>>
<<set setup.blessing_01_9 = {
name: "Gleaming Interest III",
id: "Gleaming Interest",
type: ["Player", "Basic"],
tree: "Gift",
rank: 5,
cost: 3,
unlock: [setup.blessing_01_8.name],
req: [],
float: 0.08,
trigger: false,
tooltip: "At the end of the night, gain @@.gold;Gold@@ equal to 8% of your total @@.gold;Gold@@."
}>>
<<set setup.blessing_01_10 = {
name: "Blessed Fruition",
id: "Blessed Fruition",
type: ["Player", "Basic"],
tree: "Gift",
rank: 3,
cost: 3,
unlock: [],
req: [setup.blessing_01_1.name],
int: 3,
trigger: true,
tooltip: "The next three non-legendary Blessings are free."
}>>
<<set setup.blessing_01_11 = {
name: "Essence of Entitlement",
id: "Essence of Entitlement",
type: ["Player", "Basic"],
tree: "Gift",
rank: 4,
cost: 3,
unlock: [],
req: [setup.blessing_01_2.name],
int: 2,
trigger: false,
tooltip: "Reduces the cost of Creatures and Traps by @@.le;2 Lust Essence@@."
}>>
<<set setup.blessing_01_12 = {
name: "Champion of the Goddess",
id: "Champion of the Goddess",
type: ["Player", "Mythical"],
tree: "Gift",
rank: 5,
cost: 10,
unlock: [],
req: [setup.blessing_01_4.name, setup.blessing_01_6.name, setup.blessing_01_9.name, setup.blessing_01_10.name, setup.blessing_01_11.name],
trigger: true,
tooltip: "Unlock all the Starter Blessings."
}>>
GODDESS SORCERY BLESSING LINE
<<set setup.blessing_02_0 = {
name: "Goddess's Sorcery I",
id: "Goddess's Sorcery",
type: ["Player", "Basic"],
tree: "Sorcery",
rank: 1,
cost: 3,
unlock: [],
req: [],
float: 0.05,
trigger: false,
tooltip: "Increases your Spells' Spellchecks by 5%."
}>>
<<set setup.blessing_02_1 = {
name: "Goddess's Sorcery II",
id: "Goddess's Sorcery",
type: ["Player", "Basic"],
tree: "Sorcery",
rank: 2,
cost: 3,
unlock: [setup.blessing_02_0.name],
req: [],
float: 0.1,
trigger: false,
tooltip: "Increases your Spells' Spellchecks by 10%."
}>>
<<set setup.blessing_02_2 = {
name: "Goddess's Sorcery III",
id: "Goddess's Sorcery",
type: ["Player", "Basic"],
tree: "Sorcery",
rank: 3,
cost: 3,
unlock: [setup.blessing_02_1.name],
req: [],
float: 0.15,
trigger: false,
tooltip: "Increases your Spells' Spellchecks by 15%."
}>>
<<set setup.blessing_02_3 = {
name: "Goddess's Sorcery IV",
id: "Goddess's Sorcery",
type: ["Player", "Basic"],
tree: "Sorcery",
rank: 4,
cost: 3,
unlock: [setup.blessing_02_2.name],
req: [],
float: 0.2,
trigger: false,
tooltip: "Increases your Spells' Spellchecks by 20%."
}>>
<<set setup.blessing_02_4 = {
name: "Goddess's Sorcery V",
id: "Goddess's Sorcery",
type: ["Player", "Basic"],
tree: "Sorcery",
rank: 5,
cost: 3,
unlock: [setup.blessing_02_3.name],
req: [],
float: 0.25,
trigger: false,
tooltip: "Increases your Spells' Spellchecks by 25%."
}>>
<<set setup.blessing_02_5 = {
name: "Reliable Sorcerer I",
id: "Reliable Sorcerer",
type: ["Player", "Basic"],
tree: "Sorcery",
rank: 2,
cost: 3,
unlock: [],
req: [setup.blessing_02_0.name],
int: 20,
trigger: false,
tooltip: "Increase your Manipulation Spell's Spellcheck by 20."
}>>
<<set setup.blessing_02_6 = {
name: "Reliable Sorcerer II",
id: "Reliable Sorcerer",
order_num: 6,
type: ["Player", "Basic"],
tree: "Sorcery",
rank: 4,
cost: 3,
unlock: [setup.blessing_02_5.name],
req: [],
int: 50,
trigger: false,
tooltip: "Increase your Manipulation Spell's Spellcheck by 50."
}>>
<<set setup.blessing_02_7 = {
name: "Malicious Mage I",
id: "Malicious Mage",
type: ["Player", "Basic"],
tree: "Sorcery",
rank: 2,
cost: 3,
unlock: [],
req: [setup.blessing_02_0.name],
float: 0.1,
trigger: false,
tooltip: "Increase your Infliction Spell's damage by 10%."
}>>
<<set setup.blessing_02_8 = {
name: "Malicious Mage II",
id: "Malicious Mage",
type: ["Player", "Basic"],
tree: "Sorcery",
rank: 3,
cost: 3,
unlock: [setup.blessing_02_7.name],
req: [],
float: 0.2,
trigger: false,
tooltip: "Increase your Infliction Spell's damage by 20%."
}>>
<<set setup.blessing_02_9 = {
name: "Malicious Mage III",
id: "Malicious Mage",
type: ["Player", "Basic"],
tree: "Sorcery",
rank: 5,
cost: 3,
unlock: [setup.blessing_02_8.name],
req: [],
float: 0.5,
trigger: false,
tooltip: "Increase your Infliction Spell's damage by 50%."
}>>
<<set setup.blessing_02_10 = {
name: "Spell Slinger",
id: "Spell Slinger",
type: ["Player", "Basic"],
tree: "Sorcery",
rank: 3,
cost: 3,
unlock: [],
req: [setup.blessing_02_1.name],
trigger: false,
tooltip: "Your first Infliction Spell each Raid cost @@.mana;0 Mana@@."
}>>
<<set setup.blessing_02_11 = {
name: "Final Stand",
id: "Final Stand",
type: ["Player", "Basic"],
tree: "Sorcery",
rank: 4,
cost: 3,
unlock: [],
req: [setup.blessing_02_2.name],
float: 0.5,
trigger: false,
tooltip: "Increases your Spells' Spellchecks by 50% while the raiding party is entering the Treasure Room."
}>>
<<set setup.blessing_02_12 = {
name: "Ascended's Awakening",
id: "Ascended's Awakening",
type: ["Player", "Mythical"],
tree: "Sorcery",
rank: 5,
cost: 10,
unlock: [],
req: [setup.blessing_02_4.name, setup.blessing_02_6.name, setup.blessing_02_9.name, setup.blessing_02_10.name, setup.blessing_02_11.name],
float: 1,
int: 5,
mult: 2,
trigger: true,
tooltip: "You can overload your Infliction, Manipulation, and Supportive Spells for twice their @@.mana;Mana@@, doubling their damage, effects, duration, and Spellchecks. Increases your @@.mana;Max Mana@@ by @@.mana;5@@."
}>>
GODDESS'S MASTERY
<<set setup.blessing_03_0 = {
name: "Goddess's Mastery I",
id: "Goddess's Mastery",
type: ["Player", "Basic"],
tree: "Mastery",
rank: 1,
cost: 3,
unlock: [],
req: [],
float: 0.1,
trigger: false,
tooltip: "Increases your Supportive Spells' effects by 10%."
}>>
<<set setup.blessing_03_1 = {
name: "Goddess's Mastery II",
id: "Goddess's Mastery",
type: ["Player", "Basic"],
tree: "Mastery",
rank: 2,
cost: 3,
unlock: [setup.blessing_03_0.name],
req: [],
float: 0.2,
trigger: false,
tooltip: "Increases your Supportive Spells' effects by 20%."
}>>
<<set setup.blessing_03_2 = {
name: "Goddess's Mastery III",
id: "Goddess's Mastery",
type: ["Player", "Basic"],
tree: "Mastery",
rank: 3,
cost: 3,
unlock: [setup.blessing_03_1.name],
req: [],
float: 0.3,
trigger: false,
tooltip: "Increases your Supportive Spells' effects by 30%."
}>>
<<set setup.blessing_03_3 = {
name: "Goddess's Mastery IV",
id: "Goddess's Mastery",
type: ["Player", "Basic"],
tree: "Mastery",
rank: 4,
cost: 3,
unlock: [setup.blessing_03_2.name],
req: [],
float: 0.4,
trigger: false,
tooltip: "Increases your Supportive Spells' effects by 40%."
}>>
<<set setup.blessing_03_4 = {
name: "Goddess's Mastery V",
id: "Goddess's Mastery",
type: ["Player", "Basic"],
tree: "Mastery",
rank: 5,
cost: 3,
unlock: [setup.blessing_03_3.name],
req: [],
float: 0.5,
trigger: false,
tooltip: "Increases your Supportive Spells' effects by 50%."
}>>
<<set setup.blessing_03_5 = {
name: "Reliable Enchanter I",
id: "Reliable Enchanter",
type: ["Player", "Basic"],
tree: "Mastery",
rank: 2,
cost: 3,
unlock: [],
req: [setup.blessing_03_0.name],
int: 1,
trigger: false,
tooltip: "Increases the Duration of your Supportive Spells by 1."
}>>
<<set setup.blessing_03_6 = {
name: "Reliable Enchanter II",
id: "Reliable Enchanter",
type: ["Player", "Basic"],
tree: "Mastery",
rank: 4,
cost: 3,
unlock: [setup.blessing_03_5.name],
req: [],
int: 2,
trigger: false,
tooltip: "Increases the Duration of your Supportive Spells by 3."
}>>
<<set setup.blessing_03_7 = {
name: "Summoner's Aid I",
id: "Summoner's Aid",
type: ["Player", "Basic"],
tree: "Mastery",
rank: 2,
cost: 3,
unlock: [],
req: [setup.blessing_03_0.name],
trigger: false,
float: 0.05,
tooltip: "Summoned Creatures have their stats increased by 5%."
}>>
<<set setup.blessing_03_8 = {
name: "Summoner's Aid II",
id: "Summoner's Aid",
type: ["Player", "Basic"],
tree: "Mastery",
rank: 3,
cost: 3,
unlock: [setup.blessing_03_7.name],
req: [],
trigger: false,
float: 0.1,
tooltip: "Summoned Creatures have their stats increased by 10%."
}>>
<<set setup.blessing_03_9 = {
name: "Summoner's Aid III",
id: "Summoner's Aid",
type: ["Player", "Basic"],
tree: "Mastery",
rank: 5,
cost: 3,
unlock: [setup.blessing_03_8.name],
req: [],
bool: false,
float: 0.25,
tooltip: "Summoned Creatures have their stats increased by 25%."
}>>
<<set setup.blessing_03_10 = {
name: "Supporting Role",
id: "Supporting Role",
type: ["Player", "Basic"],
tree: "Mastery",
rank: 3,
cost: 3,
unlock: [],
req: [setup.blessing_03_1.name],
trigger: false,
tooltip: "Your first Supportive Spell each Raid cost @@.mana;0 Mana@@."
}>>
<<set setup.blessing_03_11 = {
name: "Mending Entrance",
id: "Mending Entrance",
type: ["Player", "Basic"],
tree: "Mastery",
rank: 4,
cost: 3,
unlock: [],
req: [setup.blessing_03_2.name],
trigger: false,
float: 0.5,
tooltip: "Summoning Creatures restores 50% of their @@.health;maximum Health@@."
}>>
<<set setup.blessing_03_12 = {
name: "Aspect of Conjuration",
id: "Aspect of Conjuration",
type: ["Player", "Mythical"],
tree: "Mastery",
rank: 5,
cost: 10,
unlock: [],
req: [setup.blessing_03_4.name, setup.blessing_03_6.name, setup.blessing_03_9.name, setup.blessing_03_10.name, setup.blessing_03_11.name],
float: 0.5,
trigger: false,
tooltip: "Summoning Spells' @@.mana;Mana@@ costs are reduced by half, rounded down."
}>>
GODDESS POWER BLESSING LINE
<<set setup.blessing_04_0 = {
name: "Goddess's Power I",
id: "Goddess's Power",
type: ["Dungeon", "Basic"],
tree: "Power",
rank: 1,
cost: 3,
unlock: [],
req: [],
float: 0.05,
trigger: true,
tooltip: "Increases your Creature's Attack stats by 5%.",
effect_types: ["Permanent"]
}>>
<<set setup.blessing_04_1 = {
name: "Goddess's Power II",
id: "Goddess's Power",
type: ["Dungeon", "Basic"],
tree: "Power",
rank: 2,
cost: 3,
unlock: [setup.blessing_04_0.name],
req: [],
float: 0.1,
trigger: true,
tooltip: "Increases your Creature's Attack stats by 10%.",
effect_types: ["Permanent"]
}>>
<<set setup.blessing_04_2 = {
name: "Goddess's Power III",
id: "Goddess's Power",
type: ["Dungeon", "Basic"],
tree: "Power",
rank: 3,
cost: 3,
unlock: [setup.blessing_04_1.name],
req: [],
float: 0.15,
trigger: true,
tooltip: "Increases your Creature's Attack stats by 15%.",
effect_types: ["Permanent"]
}>>
<<set setup.blessing_04_3 = {
name: "Goddess's Power IV",
id: "Goddess's Power",
type: ["Dungeon", "Basic"],
tree: "Power",
rank: 4,
cost: 3,
unlock: [setup.blessing_04_2.name],
req: [],
float: 0.2,
trigger: true,
tooltip: "Increases your Creature's Attack stats by 20%.",
effect_types: ["Permanent"]
}>>
<<set setup.blessing_04_4 = {
name: "Goddess's Power V",
id: "Goddess's Power",
type: ["Dungeon", "Basic"],
tree: "Power",
rank: 5,
cost: 3,
unlock: [setup.blessing_04_3.name],
req: [],
float: 0.25,
trigger: true,
tooltip: "Increases your Creature's Attack stats by 25%.",
effect_types: ["Permanent"]
}>>
<<set setup.blessing_04_5 = {
name: "Violent Anticipation",
id: "Violent Anticipation",
type: ["Dungeon", "Basic"],
tree: "Power",
rank: 2,
cost: 3,
unlock: [],
req: [setup.blessing_04_0.name],
int: 3,
trigger: false,
tooltip: "Your Creatures gain 3 of each Attack stat for each Raider entering your Dungeon that night."
}>>
<<set setup.blessing_04_6 = {
name: "Lustful Penetration I",
id: "Lustful Penetration",
type: ["Dungeon", "Basic"],
tree: "Power",
rank: 2,
cost: 3,
unlock: [],
req: [setup.blessing_04_0.name],
float: 0.1,
trigger: true,
tooltip: "Your Creatures ignore 10% of Raiders' Resistances.",
effect_tooltip: "Ignore 10% of Raiders' Resistances.",
effect_types: ["Permanent"]
}>>
<<set setup.blessing_04_7 = {
name: "Lustful Penetration II",
id: "Lustful Penetration",
type: ["Dungeon", "Basic"],
tree: "Power",
rank: 4,
cost: 3,
unlock: [setup.blessing_04_6.name],
req: [],
float: 0.25,
trigger: true,
tooltip: "Your Creatures ignore 25% of Raiders' Resistances.",
effect_tooltip: "Ignore 25% of Raiders' Resistances.",
effect_types: ["Permanent"]
}>>
<<set setup.blessing_04_8 = {
name: "Diabolic Intent",
id: "Diabolic Intent",
type: ["Dungeon", "Basic"],
tree: "Power",
room_type: "Creature",
rank: 3,
cost: 3,
unlock: [],
req: [setup.blessing_04_1.name],
float: 0.25,
trigger: true,
tooltip: "Your Creature's Trapchecks and Spellchecks are increased by 25%.",
effect_tooltip: "Increases Trapchecks and Spellchecks by 25%.",
effect_types: ["Permanent"]
}>>
<<set setup.blessing_04_9 = {
name: "Kindred Monstrosity I",
id: "Kindred Monstrosity",
type: ["Dungeon", "Basic"],
tree: "Power",
rank: 3,
cost: 3,
unlock: [],
req: [setup.blessing_04_1.name],
float: 0.05,
trigger: false,
tooltip: "During Raids, each Creature's Attack stats are increased by 5% for each other Creature in your Dungeon that shares a Creature type with it."
}>>
<<set setup.blessing_04_10 = {
name: "Kindred Monstrosity II",
id: "Kindred Monstrosity",
type: ["Dungeon", "Basic"],
tree: "Power",
rank: 5,
cost: 3,
unlock: [setup.blessing_04_9.name],
req: [],
float: 0.15,
trigger: false,
tooltip: "During Raids, each Creature's Attack stats are increased by 15% for each other Creature in your Dungeon that shares a Creature type with it."
}>>
<<set setup.blessing_04_11 = {
name: "Treasure Guardian",
id: "Treasure Guardian",
type: ["Dungeon", "Basic"],
tree: "Power",
room_type: "Creature",
rank: 4,
cost: 3,
unlock: [],
req: [setup.blessing_04_2.name],
floor_num: 0,
float: 0.5,
other_float: 0.25,
trigger: false,
icon: "[img[images/icons/blessing_icon.png]]",
tooltip: "If the last floor in your Dungeon contains a Creature, it deals 50% more damage and reduces all damage taken by 25%."
}>>
<<set setup.blessing_04_12 = {
name: "Spreading Savagery",
id: "Spreading Savagery",
order_num: 92,
type: ["Dungeon", "Mythical"],
tree: "Power",
rank: 5,
cost: 10,
unlock: [],
req: [setup.blessing_04_4.name, setup.blessing_04_6.name, setup.blessing_04_7.name, setup.blessing_04_8.name, setup.blessing_04_9.name, setup.blessing_04_11.name],
stack: 1,
int: 5,
check: 5,
trigger: false,
tooltip: "Whenever a Creature Captures a Raider, it gains 2 stacks of Savagery and each other Creature gains 1 stack, increasing their Attack stats by 5 per stack. Doubles the effects from Goddess's Power while it has 5 or more stacks."
}>>
GODDESS ENDURANCE BLESSING LINE
<<set setup.blessing_05_0 = {
name: "Goddess's Endurance I",
id: "Goddess's Endurance",
type: ["Dungeon", "Basic"],
tree: "Endurance",
rank: 1,
cost: 3,
unlock: [],
req: [],
float: 0.05,
trigger: true,
tooltip: "Increases your Creature's Resistance stats by 5%."
}>>
<<set setup.blessing_05_1 = {
name: "Goddess's Endurance II",
id: "Goddess's Endurance",
type: ["Dungeon", "Basic"],
tree: "Endurance",
rank: 2,
cost: 3,
unlock: [setup.blessing_05_0.name],
req: [],
float: 0.1,
trigger: true,
tooltip: "Increases your Creature's Resistance stats by 10%."
}>>
<<set setup.blessing_05_2 = {
name: "Goddess's Endurance III",
id: "Goddess's Endurance",
type: ["Dungeon", "Basic"],
tree: "Endurance",
rank: 3,
cost: 3,
unlock: [setup.blessing_05_1.name],
req: [],
float: 0.15,
trigger: true,
tooltip: "Increases your Creature's Resistance stats by 15%."
}>>
<<set setup.blessing_05_3 = {
name: "Goddess's Endurance IV",
id: "Goddess's Endurance",
type: ["Dungeon", "Basic"],
tree: "Endurance",
rank: 4,
cost: 3,
unlock: [setup.blessing_05_2.name],
req: [],
float: 0.2,
trigger: true,
tooltip: "Increases your Creature's Resistance stats by 20%."
}>>
<<set setup.blessing_05_4 = {
name: "Goddess's Endurance V",
id: "Goddess's Endurance",
type: ["Dungeon", "Basic"],
tree: "Endurance",
rank: 5,
cost: 3,
unlock: [setup.blessing_05_3.name],
req: [],
float: 0.25,
trigger: true,
tooltip: "Increases your Creature's Resistance stats by 25%."
}>>
<<set setup.blessing_05_5 = {
name: "Night's Blessing I",
id: "Night's Blessing",
type: ["Dungeon", "Basic"],
tree: "Endurance",
rank: 2,
cost: 3,
unlock: [],
req: [setup.blessing_05_0.name],
float: 0.1,
trigger: true,
tooltip: "Creatures recover 10% of their @@.health;maximum Health@@ at the beginning of each Raid.",
effect_tooltip: "Recovers 10% of its @@.health;maximum Health@@ at the beginning of each Raid."
}>>
<<set setup.blessing_05_6 = {
name: "Night's Blessing II",
id: "Night's Blessing",
type: ["Dungeon", "Basic"],
tree: "Endurance",
rank: 4,
cost: 3,
unlock: [setup.blessing_05_5.name],
req: [],
float: 0.2,
trigger: true,
tooltip: "Creatures recover 20% of their @@.health;maximum Health@@ at the beginning of each Raid.",
effect_tooltip: "Recovers 20% of its @@.health;maximum Health@@ at the beginning of each Raid."
}>>
<<set setup.blessing_05_7 = {
name: "Protective Instinct",
id: "Protective Instinct",
type: ["Dungeon", "Basic"],
tree: "Endurance",
rank: 2,
cost: 3,
unlock: [],
req: [setup.blessing_05_0.name],
int: 5,
trigger: false,
tooltip: "Your Creatures gain 5 @@.pres;Physical@@ and @@.mres;Magical@@ Resistance for each Raider entering your Dungeon that night."
}>>
<<set setup.blessing_05_8 = {
name: "Hard-line",
id: "Hard-line",
type: ["Dungeon", "Basic"],
tree: "Endurance",
rank: 3,
cost: 3,
unlock: [],
req: [setup.blessing_05_1.name],
float: 0.5,
trigger: true,
tooltip: "Damage from Critical Attacks are reduced by 50% against Creatures.",
effect_tooltip: "Reduces damage from Critical Attacks by 50%."
}>>
<<set setup.blessing_05_9 = {
name: "Kindred Protection I",
id: "Kindred Protection",
type: ["Dungeon", "Basic"],
tree: "Endurance",
rank: 3,
cost: 3,
unlock: [],
req: [setup.blessing_05_1.name],
float: 0.05,
trigger: true,
tooltip: "During Raids, each Creature's @@.phy;Physical@@ and @@.mag;Magical@@ Resistance stats are increased by 5% for each other Creature in your Dungeon that shares a Creature type with it."
}>>
<<set setup.blessing_05_10 = {
name: "Kindred Protection II",
id: "Kindred Protection",
type: ["Dungeon", "Basic"],
tree: "Endurance",
rank: 5,
cost: 3,
unlock: [setup.blessing_05_9.name],
req: [],
float: 0.15,
trigger: true,
tooltip: "During Raids, each Creature's @@.phy;Physical@@ and @@.mag;Magical@@ Resistance stats are increased by 15% for each other Creature in your Dungeon that shares a Creature type with it."
}>>
<<set setup.blessing_05_11 = {
name: "Intimidating Presence",
id: "Intimidating Presence",
type: ["Dungeon", "Basic"],
tree: "Endurance",
rank: 4,
cost: 3,
unlock: [],
req: [setup.blessing_05_2.name],
base_percent: 20,
percent: 10,
trigger: false,
tooltip: "Raiders have a 20% + 10% per alive Creature to become <<hovertip '<<-setup.intimidated.tooltip>>'>>Intimidated<</hovertip>> as they enter your Dungeon."
}>>
<<set setup.blessing_05_12 = {
name: "Cloak of Darkness",
id: "Cloak of Darkness",
type: ["Dungeon", "Mythical"],
tree: "Endurance",
rank: 5,
cost: 10,
unlock: [],
req: [setup.blessing_05_4.name, setup.blessing_05_6.name, setup.blessing_05_7.name, setup.blessing_05_8.name, setup.blessing_05_10.name, setup.blessing_05_11.name],
float: 0.25,
trigger: false,
tooltip: "Give all Creatures in your Dungeon a shield equal to 25% of their @@.health;maximum Health@@ before the first Raid. Effects from Goddess's Endurance are doubled while this shield persists.",
effect_tooltip: "This Creature is shielded by the essence of night. Effects from the Goddess's Endurance Blessing are doubled while the shield persists.",
effect_types: ["Raid", "Shield"]
}>>
GODDESS INGENUITY
<<set setup.blessing_06_0 = {
name: "Goddess's Ingenuity I",
id: "Goddess's Ingenuity",
type: ["Dungeon", "Basic"],
tree: "Ingenuity",
room_type: "Trap",
rank: 1,
cost: 3,
unlock: [],
req: [],
float: 0.05,
trigger: true,
tooltip: "Increases your Trap's Trapchecks and Spellchecks by 5%."
}>>
<<set setup.blessing_06_1 = {
name: "Goddess's Ingenuity II",
id: "Goddess's Ingenuity",
type: ["Dungeon", "Basic"],
tree: "Ingenuity",
rank: 2,
cost: 3,
unlock: [setup.blessing_06_0.name],
req: [],
float: 0.1,
trigger: true,
tooltip: "Increases your Trap's Trapchecks and Spellchecks by 10%."
}>>
<<set setup.blessing_06_2 = {
name: "Goddess's Ingenuity III",
id: "Goddess's Ingenuity",
type: ["Dungeon", "Basic"],
tree: "Ingenuity",
rank: 3,
cost: 3,
unlock: [setup.blessing_06_1.name],
req: [],
float: 0.15,
trigger: false,
tooltip: "Increases your Trap's Trapchecks and Spellchecks by 15%."
}>>
<<set setup.blessing_06_3 = {
name: "Goddess's Ingenuity IV",
id: "Goddess's Ingenuity",
type: ["Dungeon", "Basic"],
tree: "Ingenuity",
rank: 4,
cost: 3,
unlock: [setup.blessing_06_2.name],
req: [],
float: 0.2,
trigger: true,
tooltip: "Increases your Trap's Trapchecks and Spellchecks by 20%."
}>>
<<set setup.blessing_06_4 = {
name: "Goddess's Ingenuity V",
id: "Goddess's Ingenuity",
type: ["Dungeon", "Basic"],
tree: "Ingenuity",
rank: 5,
cost: 3,
unlock: [setup.blessing_06_3.name],
req: [],
float: 0.25,
trigger: true,
tooltip: "Increases your Trap's Trapchecks and Spellchecks by 25%."
}>>
<<set setup.blessing_06_5 = {
name: "Lewd Mastermind I",
id: "Lewd Mastermind",
type: ["Dungeon", "Basic"],
tree: "Ingenuity",
rank: 2,
cost: 3,
unlock: [],
req: [setup.blessing_06_0.name],
float: 0.1,
trigger: true,
tooltip: "Your Traps ignore 10% of Raiders' Resistances.",
effect_tooltip: "Ignore 10% of Raiders' Resistances."
}>>
<<set setup.blessing_06_6 = {
name: "Lewd Mastermind II",
id: "Lewd Mastermind",
type: ["Dungeon", "Basic"],
tree: "Ingenuity",
rank: 4,
cost: 3,
unlock: [setup.blessing_06_5.name],
req: [],
float: 0.25,
trigger: true,
tooltip: "Your Traps ignore 25% of Raiders' Resistances.",
effect_tooltip: "Ignore 25% of Raiders' Resistances."
}>>
<<set setup.blessing_06_7 = {
name: "Cunning Construction I",
id: "Cunning Construction",
type: ["Dungeon", "Basic"],
tree: "Ingenuity",
rank: 2,
cost: 3,
unlock: [],
req: [setup.blessing_06_0.name],
float: 0.05,
trigger: true,
tooltip: "Increases your Traps' damage stat by 5%."
}>>
<<set setup.blessing_06_8 = {
name: "Cunning Construction II",
id: "Cunning Construction",
type: ["Dungeon", "Basic"],
tree: "Ingenuity",
rank: 3,
cost: 3,
unlock: [setup.blessing_06_7.name],
req: [],
float: 0.1,
trigger: true,
tooltip: "Increases your Traps' damage by 10%."
}>>
<<set setup.blessing_06_9 = {
name: "Cunning Construction III",
id: "Cunning Construction",
type: ["Dungeon", "Basic"],
tree: "Ingenuity",
rank: 5,
cost: 3,
unlock: [setup.blessing_06_8.name],
req: [],
float: 0.2,
trigger: true,
tooltip: "Increases your Traps' damage by 20%."
}>>
<<set setup.blessing_06_10 = {
name: "Welcome Mat",
id: "Welcome Mat",
type: ["Dungeon", "Basic"],
tree: "Ingenuity",
rank: 3,
cost: 3,
unlock: [],
req: [setup.blessing_06_1.name],
int: 5,
trigger: false,
tooltip: "If the first floor in your Dungeon contains a Trap, Raiders are 5 times more likely to Critically fail their first Trapcheck or Spellcheck on that floor."
}>>
<<set setup.blessing_06_11 = {
name: "Erotic Dungeon",
id: "Erotic Dungeon",
type: ["Dungeon", "Basic"],
tree: "Ingenuity",
rank: 4,
cost: 3,
unlock: [],
req: [setup.blessing_06_2.name],
common_statuses: [setup.aroused, setup.poisoned, setup.sticky, setup.parasite, setup.intoxicated],
uncommon_statuses: [setup.horny, setup.wet, setup.perverted, setup.stimulated, setup.brainwashed],
uncommon_rate: 25,
rare_statuses: [setup.lactation, setup.futanari],
rare_rate: 5,
trigger: false,
tooltip: "If your Dungeon contains only Traps, Inflict a random Status to each Raider between floors."
}>>
<<set setup.blessing_06_12 = {
name: "Machine Mastery",
id: "Machine Mastery",
type: ["Dungeon", "Mythical"],
tree: "Ingenuity",
rank: 5,
cost: 10,
unlock: [],
req: [setup.blessing_06_4.name, setup.blessing_06_6.name, setup.blessing_06_9.name, setup.blessing_06_10.name, setup.blessing_06_11.name],
trigger: false,
tooltip: "Doubles the effects from Goddess's Ingenuity, Lewd Mastermind, Welcome Mat, Erotic Dungeon, and Cunning Construction."
}>>
GODDESS LOVE BLESSING LINE
<<set setup.blessing_07_0 = {
name: "Goddess's Devotion I",
id: "Goddess's Devotion",
type: ["Slave", "Basic"],
tree: "Devotion",
rank: 1,
cost: 3,
unlock: [],
req: [],
float: 0.15,
trigger: false,
tooltip: "Your Slaves perform better during Jobs, increasing the rewards by 15%."
}>>
<<set setup.blessing_07_1 = {
name: "Goddess's Devotion II",
id: "Goddess's Devotion",
type: ["Slave", "Basic"],
tree: "Devotion",
rank: 2,
cost: 3,
unlock: [setup.blessing_07_0.name],
req: [],
float: 0.30,
trigger: false,
tooltip: "Your Slaves perform better during Jobs, increasing the rewards by 30%."
}>>
<<set setup.blessing_07_2 = {
name: "Goddess's Devotion III",
id: "Goddess's Devotion",
type: ["Slave", "Basic"],
tree: "Devotion",
rank: 3,
cost: 3,
unlock: [setup.blessing_07_1.name],
req: [],
float: 0.45,
trigger: false,
tooltip: "Your Slaves perform better during Jobs, increasing the rewards by 45%."
}>>
<<set setup.blessing_07_3 = {
name: "Goddess's Devotion IV",
id: "Goddess's Devotion",
type: ["Slave", "Basic"],
tree: "Devotion",
rank: 4,
cost: 3,
unlock: [setup.blessing_07_2.name],
req: [],
float: 0.6,
trigger: false,
tooltip:"Your Slaves perform better during Jobs, increasing the rewards by 60%."
}>>
<<set setup.blessing_07_4 = {
name: "Goddess's Devotion V",
id: "Goddess's Devotion",
type: ["Slave", "Basic"],
tree: "Devotion",
rank: 5,
cost: 3,
unlock: [setup.blessing_07_3.name],
req: [],
float: 0.75,
trigger: false,
tooltip: "Your Slaves perform better during Jobs, increasing the rewards by 75%."
}>>
<<set setup.blessing_07_5 = {
name: "Inspired Virtue I",
id: "Inspired Virtue",
type: ["Slave", "Basic"],
tree: "Devotion",
rank: 2,
cost: 3,
unlock: [],
req: [setup.blessing_07_0.name],
float: 0.25,
trigger: false,
tooltip: "Your Slaves perform better during Quests, increasing the rewards by 25%."
}>>
<<set setup.blessing_07_6 = {
name: "Inspired Virtue II",
id: "Inspired Virtue",
type: ["Slave", "Basic"],
tree: "Devotion",
rank: 4,
cost: 3,
unlock: [setup.blessing_07_5.name],
req: [],
float: 0.5,
trigger: false,
tooltip: "Your Slaves perform better during Quests, increasing the rewards by 50%."
}>>
<<set setup.blessing_07_7 = {
name: "Inspired Enlightenment I",
id: "Inspired Enlightenment",
type: ["Slave", "Basic"],
tree: "Devotion",
rank: 2,
cost: 3,
unlock: [],
req: [setup.blessing_07_0.name],
float: 0.25,
trigger: true,
tooltip: "Your Slaves perform better during Classes, increasing the EXP gained by 25%."
}>>
<<set setup.blessing_07_8 = {
name: "Inspired Enlightenment II",
id: "Inspired Enlightenment",
type: ["Slave", "Basic"],
tree: "Devotion",
rank: 4,
cost: 3,
unlock: [setup.blessing_07_7.name],
req: [],
float: 0.5,
trigger: true,
tooltip: "Your Slaves perform better during Classes, increasing the EXP gained by 50%."
}>>
<<set setup.blessing_07_9 = {
name: "Morning Gratitude",
id: "Morning Gratitude",
type: ["Slave", "Basic"],
tree: "Devotion",
rank: 3,
cost: 3,
unlock: [],
req: [setup.blessing_07_1.name],
job: setup.morning_gratitude_service_job,
trigger: false,
tooltip: "One of your available Slaves will perform a Service Job for you at the beginning of each day.",
}>>
<<set setup.blessing_07_10 = {
name: "Buddy System",
id: "Buddy System",
type: ["Slave", "Basic"],
tree: "Devotion",
rank: 3,
cost: 3,
unlock: [],
req: [setup.blessing_07_1.name],
client_float: 0.5,
rape_float: 0.75,
trigger: false,
tooltip: "If two or more Slaves are assigned the same Prostitution Job, they increase their chances of finding a Client by 50% and reduces Incidents by 75%."
}>>
<<set setup.blessing_07_11 = {
name: "Vigilant Attendant",
id: "Vigilant Attendant",
type: ["Slave", "Basic"],
tree: "Devotion",
rank: 5,
cost: 3,
unlock: [],
req: [setup.blessing_07_3.name],
trigger: false,
tooltip: "Slaves no longer have Incidents while working Caretaking and Maintenance Job."
}>>
<<set setup.blessing_07_12 = {
name: "Conviction of Loyalty",
id: "Conviction of Loyalty",
type: ["Slave", "Mythical"],
tree: "Devotion",
rank: 5,
cost: 10,
unlock: [],
req: [setup.blessing_07_4.name, setup.blessing_07_6.name, setup.blessing_07_8.name, setup.blessing_07_9.name, setup.blessing_07_10.name, setup.blessing_07_11.name],
float: 0.5,
trigger: false,
tooltip: "Your Slaves can be assigned a Side Jobs, performing both Jobs each day and gaining 50% less @@.stress;Stress@@ from both.",
}>>
GODDESS CHARM BLESSING LINE
<<set setup.blessing_08_0 = {
name: "Goddess's Charm I",
id: "Goddess's Charm",
type: ["Slave", "Basic"],
tree: "Charm",
rank: 1,
cost: 3,
unlock: [],
req: [],
int: 3,
market_int: 2,
float: 0.1,
trigger: true,
tooltip: "Your Slaves gain 10% more @@.love;Love@@ EXP. Slaves in the Slave Market and Captured Raiders start with @@.love;3 Love@@."
}>>
<<set setup.blessing_08_1 = {
name: "Goddess's Charm II",
id: "Goddess's Charm",
type: ["Slave", "Basic"],
tree: "Charm",
rank: 2,
cost: 3,
unlock: [setup.blessing_08_0.name],
req: [],
int: 5,
market_int: 2,
float: 0.2,
trigger: true,
tooltip: "Your Slaves gain 20% more @@.love;Love@@ EXP. Slaves in the Slave Market and Captured Raiders start with @@.love;5 Love@@."
}>>
<<set setup.blessing_08_2 = {
name: "Goddess's Charm III",
id: "Goddess's Charm",
type: ["Slave", "Basic"],
tree: "Charm",
rank: 3,
cost: 3,
unlock: [setup.blessing_08_1.name],
req: [],
int: 7,
market_int: 2,
float: 0.3,
trigger: true,
tooltip: "Your Slaves gain 30% more @@.love;Love@@ EXP. Slaves in the Slave Market and Captured Raiders start with @@.love;7 Love@@."
}>>
<<set setup.blessing_08_3 = {
name: "Goddess's Charm IV",
id: "Goddess's Charm",
type: ["Slave", "Basic"],
tree: "Charm",
rank: 4,
cost: 3,
unlock: [setup.blessing_08_2.name],
req: [],
int: 9,
market_int: 2,
float: 0.4,
trigger: true,
tooltip: "Your Slaves gain 40% more @@.love;Love@@ EXP. Slaves in the Slave Market and Captured Raiders start with @@.love;9 Love@@."
}>>
<<set setup.blessing_08_4 = {
name: "Goddess's Charm V",
id: "Goddess's Charm",
type: ["Slave", "Basic"],
tree: "Charm",
rank: 5,
cost: 3,
unlock: [setup.blessing_08_3.name],
req: [],
int: 11,
market_int: 2,
float: 0.5,
trigger: true,
tooltip: "Your Slaves gain 50% more @@.love;Love@@ EXP. Slaves in the Slave Market and Captured Raiders start with @@.love;11 Love@@."
}>>
<<set setup.blessing_08_5 = {
name: "Endearing Pledge I",
id: "Endearing Pledge",
type: ["Slave", "Basic"],
tree: "Charm",
rank: 2,
cost: 3,
unlock: [],
req: [setup.blessing_08_0.name],
float: 0.5,
trigger: true,
tooltip: "Obedience Checks adds 50% of the Slave's @@.love;Love@@ stat, rounded up, increasing her chances of passing Obedience Checks."
}>>
<<set setup.blessing_08_6 = {
name: "Endearing Pledge II",
id: "Endearing Pledge",
type: ["Slave", "Basic"],
tree: "Charm",
rank: 4,
cost: 3,
unlock: [setup.blessing_08_5.name],
req: [],
float: 1,
trigger: true,
tooltip: "Obedience Checks adds the Slave's @@.love;Love@@ stat, increasing her chances of passing Obedience Checks."
}>>
<<set setup.blessing_08_7 = {
name: "Passionate Experience",
id: "Passionate Experience",
type: ["Slave", "Basic"],
tree: "Charm",
rank: 2,
cost: 3,
unlock: [setup.blessing_08_1.name],
req: [],
trigger: false,
float: 0.02,
tooltip: "Your Slaves gain 2% more EXP per @@.love;Love@@ stat they have, excluding @@.love;Love@@ EXP.",
}>>
<<set setup.blessing_08_8 = {
name: "Needs Appeased",
id: "Needs Appeased",
type: ["Slave", "Basic"],
tree: "Charm",
rank: 3,
cost: 3,
unlock: [],
req: [setup.blessing_08_1.name],
trigger: false,
love_req: 10,
float: 0.25,
tooltip: "Your Slaves with @@.love;10@@ or more @@.love;Love@@ have their Upkeep cost reduced by 25%.",
}>>
<<set setup.blessing_08_9 = {
name: "Subdued Emotions I",
id: "Subdued Emotions",
type: ["Slave", "Basic"],
tree: "Charm",
rank: 3,
cost: 3,
unlock: [],
req: [setup.blessing_08_1.name],
trigger: false,
float: 0.25,
tooltip: "Scolding your Slaves only reduces the amount of @@.love;Love@@ EXP gained by 25%.",
}>>
<<set setup.blessing_08_10 = {
name: "Subdued Emotions II",
id: "Subdued Emotions",
type: ["Slave", "Basic"],
tree: "Charm",
rank: 5,
cost: 3,
unlock: [setup.blessing_08_9.name],
req: [],
trigger: false,
float: 0,
tooltip: "Scolding your Slaves does not reduce the amount of @@.love;Love@@ EXP gained.",
}>>
<<set setup.blessing_08_11 = {
name: "Essence Tribute",
id: "Essence Tribute",
type: ["Slave", "Basic"],
tree: "Charm",
rank: 4,
cost: 3,
unlock: [setup.blessing_08_2.name],
req: [],
trigger: false,
love_req: 15,
percent: 5,
int: 1,
tooltip: "Your Slaves with @@.love;15@@ or more @@.love;Love@@ have a 5% chance to give you @@.le;1 Lust Essence@@ during Service Jobs.",
}>>
<<set setup.blessing_08_12 = {
name: "Conviction of Adoration",
id: "Conviction of Adoration",
type: ["Slave", "Mythical"],
tree: "Charm",
rank: 5,
cost: 10,
unlock: [],
req: [setup.blessing_08_4.name, setup.blessing_08_6.name, setup.blessing_08_7.name, setup.blessing_08_8.name, setup.blessing_08_10.name, setup.blessing_08_11.name],
love_req: 20,
job: setup.adoration_service_job,
traits: [setup.loyal, setup.loyal, setup.guardian, setup.guardian, setup.intellectual, setup.intellectual, setup.devoted, setup.devoted, setup.faithful, setup.faithful, setup.determined, setup.determined, setup.fond, setup.assiduous],
trigger: true,
tooltip: "Your Slaves with @@.love;20@@ or more @@.love;Love@@ replace their starting negative Trait with a new Trait. Unlocks a new Service Job."
}>>
GODDESS TECHNIQUE BLESSING LINE
<<set setup.blessing_09_0 = {
name: "Goddess's Technique I",
id: "Goddess's Technique",
type: ["Slave", "Basic"],
tree: "Technique",
rank: 1,
cost: 3,
unlock: [],
req: [],
float: 0.15,
trigger: false,
tooltip: "Your Slaves gain 15% more EXP from Training and being Disciplined."
}>>
<<set setup.blessing_09_1 = {
name: "Goddess's Technique II",
id: "Goddess's Technique",
type: ["Slave", "Basic"],
tree: "Technique",
rank: 2,
cost: 3,
unlock: [setup.blessing_09_0.name],
req: [],
float: 0.3,
trigger: false,
tooltip: "Your Slaves gain 30% more EXP from Training and being Disciplined."
}>>
<<set setup.blessing_09_2 = {
name: "Goddess's Technique III",
id: "Goddess's Technique",
type: ["Slave", "Basic"],
tree: "Technique",
rank: 3,
cost: 3,
unlock: [setup.blessing_09_1.name],
req: [],
float: 0.45,
trigger: false,
tooltip: "Your Slaves gain 45% more EXP from Training and being Disciplined."
}>>
<<set setup.blessing_09_3 = {
name: "Goddess's Technique IV",
id: "Goddess's Technique",
type: ["Slave", "Basic"],
tree: "Technique",
rank: 4,
cost: 3,
unlock: [setup.blessing_09_2.name],
req: [],
float: 0.6,
trigger: false,
tooltip: "Your Slaves gain 60% more EXP from Training and being Disciplined."
}>>
<<set setup.blessing_09_4 = {
name: "Goddess's Technique V",
id: "Goddess's Technique",
type: ["Slave", "Basic"],
tree: "Technique",
rank: 5,
cost: 3,
unlock: [setup.blessing_09_3.name],
req: [],
float: 0.75,
trigger: false,
tooltip: "Your Slaves gain 75% more EXP from Training and being Disciplined."
}>>
<<set setup.blessing_09_5 = {
name: "Voluntary Submission",
id: "Voluntary Submission",
type: ["Slave", "Basic"],
tree: "Technique",
rank: 2,
cost: 3,
unlock: [],
req: [setup.blessing_09_0.name],
exp: 3,
mod: 0.25,
trigger: false,
tooltip: "Your Slaves gain a small amount of @@.obedience;Obedience@@ EXP at the of the each day."
}>>
<<set setup.blessing_09_6 = {
name: "Pleasurable Education I",
id: "Pleasurable Education",
type: ["Slave", "Basic"],
tree: "Technique",
rank: 2,
cost: 3,
unlock: [],
req: [setup.blessing_09_0.name],
float: 0.25,
trigger: false,
tooltip: "Your Slaves gain 25% less @@.stress;Stress@@ during Training."
}>>
<<set setup.blessing_09_7 = {
name: "Pleasurable Education II",
id: "Pleasurable Education",
type: ["Slave", "Basic"],
tree: "Technique",
rank: 3,
cost: 3,
unlock: [setup.blessing_09_6.name],
req: [],
float: 0.5,
trigger: false,
tooltip: "Your Slaves gain 50% less @@.stress;Stress@@ during Training."
}>>
<<set setup.blessing_09_8 = {
name: "Rigorous Regiment I",
id: "Rigorous Regiment",
type: ["Slave", "Basic"],
tree: "Technique",
rank: 3,
cost: 3,
unlock: [],
req: [setup.blessing_09_1.name],
trigger: false,
float: 0.25,
tooltip: "Disciplining Slaves increases the amount of @@.stress;Stress@@ they recover by 25%."
}>>
<<set setup.blessing_09_9 = {
name: "Rigorous Regiment II",
id: "Rigorous Regiment",
type: ["Slave", "Basic"],
tree: "Technique",
rank: 4,
cost: 3,
unlock: [setup.blessing_09_8.name],
req: [],
trigger: false,
float: 0.5,
tooltip: "Disciplining Slaves increases the amount of @@.stress;Stress@@ they recover by 50%."
}>>
<<set setup.blessing_09_10 = {
name: "Fetching Figure",
id: "Fetching Figure",
type: ["Slave", "Basic"],
tree: "Technique",
rank: 4,
cost: 3,
unlock: [],
req: [setup.blessing_09_2.name],
float: 0.4,
trigger: false,
tooltip: "Your Slaves sell for 40% more @@.gold;Gold@@."
}>>
<<set setup.blessing_09_11 = {
name: "Influencing Demeanor",
id: "Influencing Demeanor",
type: ["Slave", "Basic"],
tree: "Technique",
rank: 5,
cost: 3,
unlock: [],
req: [setup.blessing_09_3.name],
obedience_req: 15,
float: 0.5,
max_float: 1,
trigger: false,
tooltip: "Your Slaves with @@.obedience;15@@ or more @@.obedience;Obedience@@ increase other Slave's Obedience Checks by 50%, up to 100%."
}>>
<<set setup.blessing_09_12 = {
name: "Conviction of Conformity",
id: "Conviction of Conformity",
type: ["Slave", "Mythical"],
tree: "Technique",
rank: 5,
cost: 10,
unlock: [],
req: [setup.blessing_09_4.name, setup.blessing_09_5.name, setup.blessing_09_7.name, setup.blessing_09_9.name, setup.blessing_09_10.name, setup.blessing_09_11.name],
obedience_req: 20,
float: 0.33,
trigger: false,
tooltip: "Your Slaves with @@.obedience;20@@ or more @@.obedience;Obedience@@ share 33% of all EXP gained from Jobs, Quests, and Classes with another Slave."
}>>
SPECIAL BLESSINGS
<<set setup.goddessBlessing_0 = {
name: "Foxy Catcher",
id: "Foxy Catcher",
order_num: 200,
type: ["Player", "Special"],
tree: "Unique",
rank: 1,
cost: 0,
unlock: [],
float: 0.2,
trigger: false,
tooltip: "Rewarded to those who are able to Capture Ahri during the Tutorial. Next time won't be so easy."
}>>
<<set setup.malloryBlessing_0 = {
name: "Guildmaster's Influence",
id: "Guildmaster's Influence",
order_num: 104,
type: ["Dungeon", "Special"],
tree: "Unique",
rank: 1,
cost: 0,
unlock: [],
float: 0.2,
trigger: false,
tooltip: "Your Dungeon gains 20% more Reputation from Raiders."
}>>
<<set setup.malloryBlessing_1 = {
name: "High Roller",
id: "High Roller",
order_num: 105,
type: ["Player", "Special"],
tree: "Unique",
rank: 1,
cost: 0,
unlock: [],
int: 3,
threat: 70,
tooltip: "While your Threat is above 70, Raiders are three times as likely to Critically Fail."
}>>
<<set setup.annaBlessing_0 = {
name: "Market Connections",
id: "Market Connections",
order_num: 110,
type: ["Player", "Special"],
tree: "Unique",
rank: 1,
cost: 0,
unlock: [],
gold_float: 0.6,
trigger: false,
tooltip: "Once a night, you can sell one of your Captured Raiders to the Slave Market for a fair price. Your @@.rep;Reputation@@ won't be damaged and your Threat won't increase, but she will only be kept in the Slave Market until the end of the next day."
}>>
<<set setup.saraBlessing_0 = {
name: "Trade Hero",
id: "Trade Hero",
order_num: 115,
type: ["Player", "Special"],
tree: "Unique",
rank: 1,
cost: 0,
unlock: [],
gold_float: 0.1,
rare_float: 0.05,
uncommon_float: 0.15,
min_int: 2,
max_int: 4,
trigger: false,
tooltip: "The Treasure Shop restocks with more Treasures and is more likely to restock with @@.rare;Rare@@ and @@.uncommon;Uncommon@@ Treasures. You get 10% off all Treasures."
}>>
--- BLESSING ARRAYS ---
<<set setup.allBlessingList to {
starting: [setup.blessing_00_0, setup.blessing_00_1, setup.blessing_00_2, setup.blessing_00_3],
gift: [setup.blessing_01_0, setup.blessing_01_1, setup.blessing_01_2, setup.blessing_01_3, setup.blessing_01_4, setup.blessing_01_5, setup.blessing_01_6, setup.blessing_01_7, setup.blessing_01_8, setup.blessing_01_9, setup.blessing_01_10, setup.blessing_01_11, setup.blessing_01_12],
sorcery: [setup.blessing_02_0, setup.blessing_02_1, setup.blessing_02_2, setup.blessing_02_3, setup.blessing_02_4, setup.blessing_02_5, setup.blessing_02_6, setup.blessing_02_7, setup.blessing_02_8, setup.blessing_02_9, setup.blessing_02_10, setup.blessing_02_11, setup.blessing_02_12],
mastery: [setup.blessing_03_0, setup.blessing_03_1, setup.blessing_03_2, setup.blessing_03_3, setup.blessing_03_4, setup.blessing_03_5, setup.blessing_03_6, setup.blessing_03_7, setup.blessing_03_8, setup.blessing_03_9, setup.blessing_03_10, setup.blessing_03_11, setup.blessing_03_12],
power: [setup.blessing_04_0, setup.blessing_04_1, setup.blessing_04_2, setup.blessing_04_3, setup.blessing_04_4, setup.blessing_04_5, setup.blessing_04_6, setup.blessing_04_7, setup.blessing_04_8, setup.blessing_04_9, setup.blessing_04_10, setup.blessing_04_11, setup.blessing_04_12],
endurance: [setup.blessing_05_0, setup.blessing_05_1, setup.blessing_05_2, setup.blessing_05_3, setup.blessing_05_4, setup.blessing_05_5, setup.blessing_05_6, setup.blessing_05_7, setup.blessing_05_8, setup.blessing_05_9, setup.blessing_05_10, setup.blessing_05_11, setup.blessing_05_12],
ingenuity: [setup.blessing_06_0, setup.blessing_06_1, setup.blessing_06_2, setup.blessing_06_3, setup.blessing_06_4, setup.blessing_06_5, setup.blessing_06_6, setup.blessing_06_7, setup.blessing_06_8, setup.blessing_06_9, setup.blessing_06_10, setup.blessing_06_11, setup.blessing_06_12],
devotion: [setup.blessing_07_0, setup.blessing_07_1, setup.blessing_07_2, setup.blessing_07_3, setup.blessing_07_4, setup.blessing_07_5, setup.blessing_07_6, setup.blessing_07_7, setup.blessing_07_8, setup.blessing_07_9, setup.blessing_07_10, setup.blessing_07_11, setup.blessing_07_12],
charm: [setup.blessing_08_0, setup.blessing_08_1, setup.blessing_08_2, setup.blessing_08_3, setup.blessing_08_4, setup.blessing_08_5, setup.blessing_08_6, setup.blessing_08_7, setup.blessing_08_8, setup.blessing_08_9, setup.blessing_08_10, setup.blessing_08_11, setup.blessing_08_12],
technique: [setup.blessing_09_0, setup.blessing_09_1, setup.blessing_09_2, setup.blessing_09_3, setup.blessing_09_4, setup.blessing_09_5, setup.blessing_09_6, setup.blessing_09_7, setup.blessing_09_8, setup.blessing_09_9, setup.blessing_09_10, setup.blessing_09_11, setup.blessing_09_12],
special: [setup.goddessBlessing_0, setup.malloryBlessing_0, setup.annaBlessing_0, setup.saraBlessing_0],
}>>
* BLESSINGS VARIABLES - END *
*ALCHEMIST BUFF VARIABLES - START*
<<set setup.potion_of_perception = {
name: "Potion of Perception",
id: "Potion of Perception",
tooltip: "Increases the Raider's @@.aware;Awareness@@, but wears off over its duration.",
base_amount: 18,
base_cd: 3,
type: 1,
icon: "[img[images/icons/perception.png]]"
}>>
<<set setup.potion_of_faith = {
name: "Potion of Faith",
id: "Potion of Faith",
tooltip: "Increases the Raider's @@.reas;Reason@@, but wears off over its duration.",
base_amount: 18,
base_cd: 3,
type: 1,
icon: "[img[images/icons/faith.png]]"
}>>
<<set setup.potion_of_fortune = {
name: "Potion of Fortune",
id: "Potion of Fortune",
tooltip: "Increases the Raider's chance of getting Critical Hits and Successes, but wears off over its duration.",
base_amount: 3,
base_cd: 2,
type: 1,
icon: "[img[images/icons/fortune.png]]"
}>>
<<set setup.grit_potion = {
name: "Grit Potion",
id: "Grit Potion",
tooltip: "Reduces the amount of @@.phy;Physical@@ damage taken by the Raider.",
base_amount: 16.75,
base_cd: 2,
type: 1,
icon: "[img[images/icons/grit.png]]"
}>>
<<set setup.mettle_potion = {
name: "Mettle Potion",
id: "Mettle Potion",
tooltip: "Reduces the amount of @@.mag;Magical@@ damage taken by the Raider.",
base_amount: 16.75,
base_cd: 2,
type: 1,
icon: "[img[images/icons/grit.png]]"
}>>
<<set setup.numbing_potion = {
name: "Numbing Potion",
id: "Numbing Potion",
tooltip: "Reduces the amount of @@.sex;Sexual@@ damage taken by the Raider.",
base_amount: 16.75,
base_cd: 2,
type: 1,
icon: "[img[images/icons/numbing.png]]"
}>>
<<set setup.fiery_potion = {
name: "Fiery Potion",
id: "Fiery Potion",
tooltip: "Increases the amount of damage dealt by the Raider.",
base_amount: 16.75,
base_cd: 2,
type: 1,
icon: "[img[images/icons/fiery.png]]"
}>>
<<set setup.potion_of_calming = {
name: "Potion of Calming",
id: "Potion of Calming",
tooltip: "The Raider recovers @@.lust;Lust@@ on consumption, then a portion of that amount between floors.",
base_amount: 3,
base_cd: 2,
mod: 4,
type: 1,
icon: "[img[images/icons/calming.png]]"
}>>
<<set setup.potion_of_restoration = {
name: "Potion of Restoration",
id: "Potion of Restoration",
tooltip: "The Raider recovers @@.health;Health@@ on consumption, then a portion of that amount between floors.",
base_amount: 3,
base_cd: 2,
mod: 4,
type: 1,
icon: "[img[images/icons/restoration.png]]"
}>>
<<set setup.heroic_potion = {
name: "Heroic Potion",
id: "Heroic Potion",
tooltip: "Increases the Raider's @@.vig;Vigor@@, @@.end;Endurance@@, @@.will;Willpower@@, @@.pers;Perseverance@@, and @@.toler;Tolerance@@.",
base_amount: 33,
base_cd: 1,
type: 1,
icon: "[img[images/icons/heroic.png]]"
}>>
<<set setup.potion_list to [setup.numbing_potion, setup.potion_of_perception, setup.potion_of_faith, setup.grit_potion, setup.fiery_potion, setup.potion_of_calming, setup.potion_of_restoration, setup.potion_of_fortune, setup.heroic_potion]>>
*ALCHEMIST BUFF VARIABLES - END*
*PLAYER SPELL VARIABLES - START+
*PLAYERS SPELLS*
NOTES:
- Infliction Spells have weak base stats but scale the best with levels and have low mana costs
- Support Spells have strong base stats and scale moderately with levels and moderate mana costs
- Manipulation Spells have pretty static effects with little to no level scaling, they require higher level to learn than other spells. Mana cost varies with spell effect
* EMPTY SPELL*
<<set setup.newSpell = {
name: "",
passage: "",
room_type: "Spell",
creature_types: [],
trap_types: [],
attack_type: "Magical",
room_num: 0,
can_capture: false,
mana: 0,
atk: 0,
sex: 0,
percent: 0,
fetishes: [],
effects: [],
effect_names: [],
pic: "",
}>>
*INFLICTION SPELLS*
<<set _jolt_pics to {
slender: ["[img[images/spells/jolt/slender/0.jpg]]", "[img[images/spells/jolt/slender/1.jpg]]"],
average: ["[img[images/spells/jolt/average/0.jpg]]", "[img[images/spells/jolt/average/1.jpg]]"],
busty: ["[img[images/spells/jolt/busty/0.jpg]]", "[img[images/spells/jolt/busty/1.jpg]]"]
}>>
<<set setup.jolt_spell = {
name: "Jolt",
id: "Jolt",
passage: "Jolt Passage",
type: "Infliction",
cost: 0, /* Starting Infliction Spell */
level_req: 1,
mana: 1,
base_check: 55,
check_per_level: 0.7,
cur_check: 0,
base_dmg: 25,
dmg_per_level: 1.5,
cur_dmg: 0,
base_sex: 18,
sex_per_level: 1.1,
cur_sex: 0,
cast_bool: true,
tooltip: "",
cast: 0,
order_num: 0,
favorited: false,
raider_pics: _jolt_pics,
img: "[img[images/spells/jolt/pic.jpg]]"
}>>
<<set _hypnosis_pics to {
slender: ["[img[images/spells/hypnosis/0.jpg]]", "[img[images/spells/hypnosis/1.jpg]]","[img[images/spells/hypnosis/2.jpg]]", "[img[images/spells/hypnosis/3.jpg]]"],
average: ["[img[images/spells/hypnosis/0.jpg]]", "[img[images/spells/hypnosis/1.jpg]]","[img[images/spells/hypnosis/2.jpg]]", "[img[images/spells/hypnosis/3.jpg]]"],
busty: ["[img[images/spells/hypnosis/0.jpg]]", "[img[images/spells/hypnosis/1.jpg]]","[img[images/spells/hypnosis/2.jpg]]", "[img[images/spells/hypnosis/3.jpg]]"]
}>>
<<set setup.hypnosis_spell = {
name: "Hypnosis",
id: "Hypnosis",
passage: "Hypnosis Passage",
type: "Infliction",
cost: 200,
level_req: 1,
mana: 1,
base_check: 60,
check_per_level: 0.75,
cur_check: 0,
base_dmg: 20,
dmg_per_level: 1.2,
cur_dmg: 0,
base_sex: 28,
sex_per_level: 1.7,
cur_sex: 0,
cast_bool: true,
tooltip: "Deals @@.mag;<<- Math.trunc(setup.hypnosis_spell.base_dmg + (setup.hypnosis_spell.dmg_per_level * $pc_level))>> Magical damage@@, @@.sex;<<- Math.trunc(setup.hypnosis_spell.base_sex + (setup.hypnosis_spell.sex_per_level * $pc_level))>> Sexual damage@@, and <<- Math.trunc(setup.hypnosis_spell.base_percent + (setup.hypnosis_spell.percent_per_level * $pc_level))>> Spellcheck to inflict the Brainwashed Status to the targeted Raider. Cannot Capture.",
cast: 0,
order_num: 2,
favorited: false,
raider_pics: _hypnosis_pics,
img: "[img[images/spells/hypnosis/pic.jpg]]"
}>>
<<set _shatter_pics to {
slender: ["[img[images/spells/shatter/slender/0.jpg]]", "[img[images/spells/shatter/slender/1.jpg]]"],
average: ["[img[images/spells/shatter/average/0.jpg]]", "[img[images/spells/shatter/average/1.jpg]]"],
busty: ["[img[images/spells/shatter/busty/0.jpg]]", "[img[images/spells/shatter/busty/1.jpg]]"]
}>>
<<set setup.shatter_spell = {
name: "Shattering Blast",
id: "Shattering Blast",
passage: "Shattering Blast Passage",
type: "Infliction",
cost: 200,
level_req: 1,
mana: 1,
base_check: 80,
check_per_level: 1,
cur_check: 0,
base_dmg: 28,
dmg_per_level: 1.8,
cur_dmg: 0,
cast_bool: true,
tooltip: "Deals @@.mag;<<- Math.trunc(setup.shatter_spell.base_dmg + (setup.shatter_spell.dmg_per_level * $pc_level))>> Magical damage@@ and <<- Math.trunc(setup.shatter_spell.base_percent + (setup.shatter_spell.percent_per_level * $pc_level))>> Spellcheck to inflict the Stripped Status to the targeted Raider. Cannot Capture.",
cast: 0,
order_num: 4,
favorited: false,
raider_pics: _shatter_pics,
img: "[img[images/spells/shatter/pic.jpg]]"
}>>
<<set _spank_pics to {
slender: ["[img[images/spells/spank/slender/0.jpg]]", "[img[images/spells/spank/slender/1.jpg]]", "[img[images/spells/spank/slender/2.jpg]]", "[img[images/spells/spank/slender/3.jpg]]"],
average: ["[img[images/spells/spank/average/0.jpg]]", "[img[images/spells/spank/average/1.jpg]]", "[img[images/spells/spank/average/2.jpg]]", "[img[images/spells/spank/average/3.jpg]]"],
busty: ["[img[images/spells/spank/busty/0.jpg]]", "[img[images/spells/spank/busty/1.jpg]]", "[img[images/spells/spank/busty/2.jpg]]", "[img[images/spells/spank/busty/3.jpg]]"]
}>>
<<set setup.spank_spell = {
name: "Telekinetic Spank",
id: "Telekinetic Spank",
passage: "Telekinetic Spank Passage",
type: "Infliction",
cost: 200,
level_req: 1,
mana: 1,
base_check: 0,
check_per_level: 0,
cur_check: 0,
base_dmg: 12,
dmg_per_level: 0.75,
cur_dmg: 0,
base_sex: 21,
sex_per_level: 1.35,
cur_sex: 0,
dmg_float: 0.3,
min_atk: 3,
max_atk: 5,
fetishes: ["Ass"],
cast_bool: true,
tooltip: "",
cast: 0,
order_num: 5,
favorited: false,
raider_pics: _spank_pics,
img: "[img[images/spells/spank/pic.jpg]]"
}>>
*SUPPORTIVE SPELLS*
<<set setup.heal_spell = {
name: "Heal",
id: "Heal",
passage: "Heal Passage",
title: "Choose a Creature to Heal",
type: "Supportive",
cost: 0, /* Starting Supportive Spell */
level_req: 1,
mana: 1,
base_amount: 30,
amount_per_level: 1.3,
cur_amount: 0,
cast_bool: true,
tooltip: "",
cast: 0,
order_num: 3,
favorited: false
}>>
<<set setup.giantgrowth_spell = {
name: "Giant Growth",
id: "Giant Growth",
passage: "Giant Growth Passage",
title: "Choose a Creature to Buff",
type: "Supportive",
cost: 200,
level_req: 1,
mana: 1,
base_health: 36,
health_per_level: 1.6,
cur_health: 0,
base_atk: 18,
atk_per_level: 0.8,
cur_atk: 0,
base_duration: 2,
cur_duration: 0,
cast_bool: true,
tooltip: "",
effect_types: ["Duration"],
effect_end: "Your Creature has return to its normal size.",
cast: 0,
order_num: 5,
favorited: false
}>>
<<set setup.shrouded_spell = {
name: "Shrouding Mist",
id: "Shrouding Mist",
passage: "Shrouding Mist Passage",
title: "Choose a Trap to Buff",
type: "Supportive",
cost: 200,
level_req: 1,
mana: 1,
base_check: 15,
check_per_level: 0.6,
cur_check: 0,
base_duration: 2,
cur_duration: 0,
cast_bool: true,
tooltip: "",
effect_types: ["Duration"],
effect_end: "The Shrouding Mist has dissipated.",
cast: 0,
order_num: 6,
favorited: false
}>>
<<set setup.black_shield_spell = {
name: "Black Shield",
id: "Black Shield",
passage: "Black Shield Passage",
title: "Choose a Creature to Shield",
type: "Supportive",
cost: 200,
level_req: 1,
mana: 1,
base_shield: 15,
shield_per_level: 0.65,
cur_shield: 0,
base_res: 30,
res_per_level: 1.4,
cur_res: 0,
base_duration: 2,
cur_duration: 0,
cast_bool: true,
tooltip: "",
effect_types: ["Shield", "Duration"],
effect_end: "The Black Shield wore off.",
cast: 0,
order_num: 7,
favorited: false
}>>
*MANIPULATION SPELLS*
<<set _terror_pics to ["[img[images/spells/terror/0.jpg]]", "[img[images/spells/terror/1.jpg]]","[img[images/spells/terror/2.jpg]]", "[img[images/spells/terror/3.jpg]]"]>>
<<set setup.terror_spell = {
name: "Terror",
id: "Terror",
passage: "Terror Passage",
type: "Manipulation",
cost: 0, /* Starting Manipulation Spell */
level_req: 1,
mana: 1,
base_check: 40,
check_per_level: 0.45,
cur_check: 0,
mult: 2,
cast_bool: true,
tooltip: "",
cast: 0,
order_num: 1,
favorited: false,
abandon_pics: _terror_pics,
gif: "[img[gifs/spells/terror.gif]]"
}>>
/*
NOT USED
<<set setup.imprison_spell = {
name: "Imprison",
id: "Imprison",
passage: "Imprison Passage",
type: "Manipulation",
cost: 200,
level_req: 1,
mana: 1,
base_check: 55,
check_per_level: 1.2,
cur_check: 0,
float: 1.25,
mod: 2,
cast_bool: true,
tooltip: "",
cast: 0,
order_num: 2,
favorited: false,
gif: "[img[gifs/spells/imprison.gif]]"
}>>
*/
/*
NOT USED
<<set setup.lure_spell = {
name: "Lure",
id: "Lure",
passage: "Lure Passage",
type: "Manipulation",
cost: 200,
level_req: 1,
mana: 1,
base_check: 55,
check_per_level: 1.2,
cur_check: 0,
float: 1.25,
mod: 2,
cast_bool: true,
tooltip: "",
cast: 0,
order_num: 3,
favorited: false,
gif: "[img[gifs/spells/lure.gif]]"
}>>
*/
<<set setup.confusion_spell = {
name: "Confusion",
id: "Confusion",
passage: "Confusion Passage",
type: "Manipulation",
cost: 250,
level_req: 1,
mana: 1,
base_check: 75,
check_per_level: 0.95,
trait: setup.absentminded,
cast_bool: true,
tooltip: "",
cast: 0,
order_num: 7,
favorited: false,
gif: "[img[gifs/spells/confusion.gif]]"
}>>
<<set setup.warp_spell = {
name: "Warp",
id: "Warp",
passage: "Warp Passage",
type: "Manipulation",
cost: 250,
level_req: 1,
mana: 2,
base_check: 80,
check_per_level: 1.05,
cur_check: 0,
distance_penalty: 8,
distance_mod: 1.6,
cast_bool: true,
tooltip: "",
cast: 0,
order_num: 8,
favorited: false,
gif: "[img[gifs/spells/warp.gif]]"
}>>
<<set setup.suggestive_whispers_spell = {
name: "Suggestive Whispers",
id: "Suggestive Whispers",
passage: "Suggestive Whispers Passage",
type: "Manipulation",
cost: 250,
level_req: 1,
mana: 1,
base_check: 57,
check_per_level: 0.65,
mult: 1.5,
cast_bool: true,
tooltip: "",
cast: 0,
order_num: 10,
favorited: false,
gif: "[img[gifs/spells/suggestive_whispers.gif]]"
}>>
* SUMMONING SPELLS *
<<set setup.summon_imp_spell = {
name: "Imps",
id: "Imps",
passage: "Summon Creature Spell",
type: "Summoning",
cost: 0, /* Starting Summoning Spell */
level_req: 1,
mana: 2,
level_float: 0.5,
summon_creature: setup.imp.base_name,
cast_bool: true,
hp_percent: 1,
tooltip: "Summon a group of Imps with random Fetishes that attacks the Targeted Raider.",
order_num: 13,
favorited: false,
total_dmgdealt: 0,
total_sexdealt: 0,
total_dmgtaken: 0,
total_raiders: 0,
total_captures: 0,
total_deaths: 0,
cast: 0
}>>
<<set setup.summon_octopus_spell = {
name: "Giant Octopus",
id: "Giant Octopus",
passage: "Summon Creature Spell",
type: "Summoning",
cost: 300,
level_req: 1,
mana: 2,
level_float: 0.5,
summon_creature: setup.octopus.base_name,
cast_bool: true,
hp_percent: 1,
tooltip: "Summon a Giant Octopus that attacks the Targeted Raider and all other Raiders with its tentacles.",
order_num: 14,
favorited: false,
total_dmgdealt: 0,
total_sexdealt: 0,
total_dmgtaken: 0,
total_raiders: 0,
total_captures: 0,
total_deaths: 0,
cast: 0
}>>
<<set setup.summon_honeybee_spell = {
name: "Honey Bee",
id: "Honey Bee",
passage: "Summon Creature Spell",
type: "Summoning",
cost: 300,
level_req: 1,
mana: 2,
level_float: 0.5,
summon_creature: setup.honey_bee.base_name,
cast_bool: true,
hp_percent: 1,
tooltip: "Summon a Honey Bee that attacks the Targeted Raider by taking a honey bath with them.",
order_num: 15,
favorited: false,
total_dmgdealt: 0,
total_sexdealt: 0,
total_dmgtaken: 0,
total_raiders: 0,
total_captures: 0,
total_deaths: 0,
cast: 0
}>> /* level_req: 6 */
<<set setup.summon_snake_spell = {
name: "Snake",
id: "Snake",
passage: "Summon Creature Spell",
type: "Summoning",
cost: 300,
level_req: 1,
mana: 2,
level_float: 0.5,
summon_creature: setup.snake.base_name,
cast_bool: true,
hp_percent: 1,
tooltip: "Summon a Snake that attacks the Targeted Raider with its poisonous fangs.",
order_num: 16,
favorited: false,
total_dmgdealt: 0,
total_sexdealt: 0,
total_dmgtaken: 0,
total_raiders: 0,
total_captures: 0,
total_deaths: 0,
cast: 0
}>>
*OTHER SPELLS*
SPELL FOR PATRICIA'S FIRST MISSION
<<set setup.patricias_spell = {
name: "Patricia's Spell",
id: "Patricia's Spell",
passage: "Patricia's Spell Passage",
type: "Manipulation",
cost: 0,
level_req: 1,
mana: 2,
base_check: "???",
check_per_level: 0,
cur_check: "???",
cast_bool: true,
tooltip: "Patrica didn't give you much of an explanation about the spell. Best to try using it on as many Raiders as possible until you have something to report.",
clue_num: 0,
cast: 0,
order_num: 100,
favorited: false
}>>
REWARD FOR PATRICIA'S FIRST MISSION
<<set _mist_pics to {
slender: ["[img[images/spells/succubus_mist/slender/0.jpg]]", "[img[images/spells/succubus_mist/slender/1.jpg]]", "[img[images/spells/succubus_mist/slender/2.jpg]]"],
average: ["[img[images/spells/succubus_mist/average/0.jpg]]", "[img[images/spells/succubus_mist/average/1.jpg]]", "[img[images/spells/succubus_mist/average/2.jpg]]"],
busty: ["[img[images/spells/succubus_mist/busty/0.jpg]]", "[img[images/spells/succubus_mist/busty/1.jpg]]", "[img[images/spells/succubus_mist/busty/2.jpg]]"],
perv_slender: ["[img[images/spells/succubus_mist/slender/3.jpg]]", "[img[images/spells/succubus_mist/slender/4.jpg]]", "[img[images/spells/succubus_mist/slender/5.jpg]]"],
perv_average: ["[img[images/spells/succubus_mist/average/3.jpg]]", "[img[images/spells/succubus_mist/average/4.jpg]]", "[img[images/spells/succubus_mist/average/5.jpg]]"],
perv_busty: ["[img[images/spells/succubus_mist/busty/3.jpg]]", "[img[images/spells/succubus_mist/busty/4.jpg]]", "[img[images/spells/succubus_mist/busty/5.jpg]]"],
}>>
<<set setup.succubus_mist_spell = {
name: "Succubus' Mist",
id: "Succubus' Mist",
passage: "Succubus' Mist Passage",
type: "Infliction",
cost: 0,
level_req: 1,
mana: 2,
base_check: 60,
check_per_level: 0.69,
cur_check: 0,
base_sex: 21,
sex_per_level: 0.95,
cur_sex: 0,
base_stack: 3,
stack_per_level: 0.125,
cur_stack: 0,
mult: 2,
cast_bool: true,
tooltip: "",
fetishes: ["Aphrodisiac"],
cast: 0,
order_num: 20,
favorited: false,
raider_pics: _mist_pics,
img: "[img[images/spells/succubus_mist/pic.jpg]]"
}>>
REWARD FOR SYLVIA'S FIRST MISSION
<<set setup.summon_keeper_creature_spell = {
name: "Summon Keeper Creature",
id: "Summon Keeper Creature",
passage: "Summon Keeper Creature Passage",
type: "Summoning",
cost: 0,
level_req: 10,
mana: 2,
cast_bool: true,
float: 0.2,
tooltip: "Summons one of your Creatures from the Creature Keeper to battle and earns 20% more EXP.",
cast: 0,
order_num: 8,
favorited: false,
gif: ""
}>>
Failed Spell GIFS
<<set _spell_failed_gif0 to "[img[gifs/spells/failed_0.gif]]">>
<<set _spell_failed_gif1 to "[img[gifs/spells/failed_1.gif]]">>
<<set _spell_failed_gif2 to "[img[gifs/spells/failed_2.gif]]">>
<<set _spell_failed_gif3 to "[img[gifs/spells/failed_3.gif]]">>
<<set _spell_failed_gif4 to "[img[gifs/spells/failed_4.gif]]">>
<<set setup.spell_failed_gif_list to [_spell_failed_gif0, _spell_failed_gif1, _spell_failed_gif2, _spell_failed_gif3, _spell_failed_gif4]>>
SPELL ARRAY
<<set setup.allSpellsArray to {
Infliction: [setup.jolt_spell, setup.hypnosis_spell, setup.shatter_spell, setup.spank_spell, setup.succubus_mist_spell],
Manipulation: [setup.terror_spell, setup.confusion_spell, setup.warp_spell, setup.suggestive_whispers_spell, setup.patricias_spell],
Summoning: [setup.summon_imp_spell, setup.summon_octopus_spell, setup.summon_honeybee_spell, setup.summon_snake_spell],
Supportive: [setup.heal_spell, setup.giantgrowth_spell, setup.shrouded_spell, setup.black_shield_spell],
}>>
*PLAYER SPELL VARIABLES - END*
*CREATURE AND TRAP EFFECTS - START*
Effect Types:
Permanent - effect lasts forever
Duration - effect lasts until the "duration" variable reaches 0, subtracts 1 from duration after combat
Raid - effect lasts until the end of the night after all raids
Flat - effect uses the "int" variable for its stat buffs
Percent - effect uses the "float" variable for its stat buffs
<<set setup.creature_effect = {
name: "",
id: "",
effect_types: [],
hp_int: 0,
atk_int: 0,
sex_int: 0,
pres_int: 0,
mres_int: 0,
hp_float: 0,
atk_float: 0,
sex_float: 0,
pres_float: 0,
mres_float: 0,
duration: 0,
tooltip: "",
icon: ""
}>>
<<set setup.trap_effect = {
name: "",
id: "",
effect_types: [],
stat_types: [],
atk_int: 0,
sex_int: 0,
check_int: 0,
atk_float: 0,
sex_float: 0,
check_float: 0,
duration: 0,
tooltip: "",
icon: ""
}>>
*CREATURE AND TRAP EFFECTS - END*
*SPELL EFFECT SOURCE ICONS - START*
<<set setup.effect_icons = {
creature: "[img[images/icons/creature_icon.png]]",
trap: "[img[images/icons/trap_icon.png]]",
caretaker: "[img[images/icons/caretaker_icon.png]]",
maintenance: "[img[images/icons/maintenance_icon.png]]",
spell: "[img[images/icons/spell_icon.png]]",
blessing: "[img[images/icons/blessing_icon.png]]",
treasure: "[img[images/icons/treasure_icon.png]]",
raider: "[img[images/icons/raider_icon.png]]",
event: "[img[images/icons/event_icon.png]]"
}>>
*SPELL EFFECT SOURCE ICONS - END*
-EVENT VARIABLES-
They are random events that are announced at the beginning of each day.
Events have various effects, mostly positive.
Some events can only be triggered if certain conditions are met.
Set event to true if the event is going to be triggered, set all events to false at the end of the day.
<<set setup.event_rate to 20>> % chance of an event happening at the start of each day
<<set setup.max_days_between_events to 5>> After this many days without an event, trigger an event
<<set setup.empty_event = {
name: "Empty",
event: false
}>>
*EVENT DATA SET - START*
<<set setup.specialist_group = {
name: "Specialist Group",
event: false,
float: 0.5,
title: "Specialist Group Slighted",
story: "A large caravan of adventurers have been slighted heading into the nearby town.",
description: "Raiders are twice as likely to have a Special Trait.",
gif: "[img[gifs/events/specialist_group.gif]]"
}>>
<<set setup.cheap_labor = {
name: "Cheap Labor",
event: false,
float: 0.5,
title: "Looking For Work",
story: "A large amount of builders have been seen looking for work around the village.",
description: "The first new Dungeon Room or Slave Quarters built today costs 50% less.",
gif: "[img[gifs/events/cheap_labor.gif]]"
}>>
<<set setup.dark_moon to {
name: "Dark Moon",
event: false,
float: 0.1,
exp_float: 0.2,
title: "The Dark Moon Rises",
story: "Tonight's forecasts predicts the Dark Moon. Raiders be wary, creatures become frenzied under this moon.",
description: "All your Creatures' stats are increased by 10% and they gain 20% more EXP tonight.",
effect_tooltip: "All its stats are increased by 10% and gain 20% more EXP under the Dark Moon.",
gif: "[img[gifs/events/dark_moon.gif]]"
}>>
<<set setup.raid_night to {
name: "Raid Night",
event: false,
float: 0.333,
min_amount: 2,
max_amount: 5,
title: "Ladies Night Out, Bring a Friend",
story: "Loads of girls can be seen getting ready for raid night at the guilds.",
description: "More Raiders that usual will Raid your Dungeon tonight.",
gif: "[img[gifs/events/raid_night.gif]]"
}>>
<<set setup.party_night to {
name: "Party Night",
event: false,
title: "Drinks and Tits, Hooray!",
story: "The local tavern was offering free drinks for the ladies tonight, bringing many raiders in before their adventures tonight.",
description: "Raiders may enter the Dungeon tonight with the Intoxicated Status.",
percent: 50,
min_count: 1,
max_count: 4,
gif: "[img[gifs/events/party_night.gif]]"
}>>
<<set setup.geared_up to {
name: "Geared Up",
event: false,
mult: 2,
title: "New Gear for Everyone",
story: "The guilds in town have increased their gear, loading up their members for tonight's raids.",
description: "Raiders are twice as likely to have Treasures.",
gif: "[img[gifs/events/geared_up.gif]]"
}>>
<<set setup.rare_slave to {
name: "Rare Slave",
event: false,
virgin_trait: 0.25,
rare_trait: 0.5,
market_trait: 2,
title: "A Once in a Lifetime Opportunity",
story: "A very rare slave has just been captured and is for sale until the next cycle. You better hurry before it's too late.",
description: "A rare Slave has been added to the Slave Market.",
gif: "[img[gifs/events/rare_slave.gif]]"
}>>
<<set setup.dragon_attack to {
name: "Dragon Attack",
event: false,
float: 0.5,
title: "The Town is Under Attack",
story: "The nearby town is under attack by a dragon so fewer eyes will be watching you tonight.",
description: "Threat gained during tonight's Raid is halved.",
gif: "[img[gifs/events/dragon_attack.gif]]"
}>>
<<set setup.high_demand to {
name: "High Demand",
event: false,
float: 0.5,
min_slaves: 2,
max_slaves: 4,
title: "Slaves Needed",
story: "There is a shortage of Slaves available in the Slave Market due to a surge of horniness.",
description: "There are much fewer Slaves available in the Slave Market. The value of Slaves have increased by 50% until the next cycle.",
gif: "[img[gifs/events/high_demand.gif]]"
}>>
<<set setup.overstocked to {
name: "Overstocked",
event: false,
float: 0.25,
mult: 1.75,
title: "Please help me clear space!",
story: "The Treasure Shop is having a big sale after receiving extra goods.",
description: "The Treasure Shop has a larger selection today and everything is 25% off until the end of the day.",
gif: "[img[gifs/events/overstocked.gif]]"
}>>
<<set setup.big_haul to {
name: "Big Haul",
event: false,
int: 3,
title: "So Many Choices",
story: "The Slave Market got a large shipment of new Slaves today.",
description: "The Slave Market has more Slaves than usual for sale.",
gif: "[img[gifs/events/big_haul.gif]]"
}>>
<<set setup.thank_you to {
name: "Thank You",
event: false,
int: 1,
title: "Thanks for Playing Dungeon Lord!",
story: "Here's a little something for trying my game.",
description: "You were gifted 1 Lust Essence. Love, Dungeon Gaming.",
gif: "[img[gifs/events/thank_you.gif]]"
}>>
*EVENT DATA SET - END*
*EVENT LIST - START*
<<set setup.event_data_list to [setup.dark_moon, setup.dragon_attack, setup.geared_up, setup.party_night, setup.raid_night, setup.specialist_group, setup.overstocked]>>
*EVENT LIST - END*
*SLAVE MARKET VARIABLES*
<<set setup.slave_base_value to 125>> starting value of slave
<<set setup.min_slaveStat_bound to 12>> min and max gold cost per point of stat
<<set setup.max_slaveStat_bound to 16>>
<<set setup.min_slaveSkill_bound to 6>> min and max gold cost per point of skill
<<set setup.max_slaveSkill_bound to 8>>
<<set setup.hot_trait_mult to 3>> increases the value of the trait by this amount if the trait is a hot trait
<<set setup.refresh_slave_market_timer to 6>> after this many days the slave market will refresh
<<set setup.slave_class_timer to 6>> number of days until Slave Market is updated with new classes
- MISSION LINE VARIABLES -
GODDESS MISSIONS
<<set _goddessMis1 to {
name: "First Request",
rank: 1,
unlock_description: "Lets focus on learning how to be the best Dungeon Lord for now.",
days: 5,
description: "The Goddess asks you construct a Onsen for her and your Slaves.",
complete_description: "She is waiting for you in the Onsen.",
lust_reward: 3
}>>
<<set _goddessMis2 to {
name: "GODDESS QUEST 2 NAME PLACEHOLDER",
rank: 1,
unlock_description: "Lets focus on learning how to be the best Dungeon Lord for now.",
days: 5,
description: "The Goddess asks you construct a Onsen for her and your Slaves.",
reward: 5,
complete_description: "She is waiting for you in the Onsen."
}>>
<<set setup.goddessMisLine to [_goddessMis1, _goddessMis2]>>
ANNA MISSIONS
<<set _annaMis1 to {
name: "Runaway Slave",
rank: 1,
unlock_description: "I'm sure she will notice me if my Slaves pass enough of her Classes.",
class_goal: 3,
description: "Anna had a rare @@.gold;Descendant@@ Slave escape the Slave Market. If she comes to your Dungeon, Capture her.",
percent: 33,
percent_per_rank: 5,
complete_description: "Return the runaway Slave to the Slave Market.",
lust_reward: 1,
blessing_reward: setup.annaBlessing_0
}>>
<<set _annaMis2 to {
name: "PLACEHOLDER",
rank: 1,
unlock_description: "Lets focus on learning how to be the best Dungeon Lord for now.",
class_goal: 3,
description: "Anna had a rare @@.gold;Descendant@@ Slave escape the Slave Market. If she comes to your Dungeon, Capture her.",
reward: 5,
complete_description: "Return the runaway Slave to the Slave Market."
}>>
<<set setup.annaMisLine to [_annaMis1, _annaMis2]>>
SARA MISSIONS
<<set _saraMis1 to {
name: "Business Venture",
rank: 1,
unlock_description: "I should try show support by buying some @@.gold;Treasures@@ from her.",
gold_goal: 500,
description: "She posted a Quest asking for help. I can find it on the Quest Board in the Guild.",
complete_description: "I completed her Quest, lets go see her in the Treasure Shop.",
lust_reward: 1,
blessing_reward: setup.saraBlessing_0
}>>
<<set _saraMis2 to {
name: "PLACEHOLDER",
rank: 1,
unlock_description: "Lets focus on learning how to be the best Dungeon Lord for now",
sell_goal: 4,
description: "She has asked for help in her shop during her special event. I can find it on the Quest Board in the Guild.",
reward: 5,
complete_description: "Her event was a success, go see her in the Treasure Shop."
}>>
<<set setup.saraMisLine to [_saraMis1, _saraMis2]>>
PATRICIA MISSIONS
<<set _patriciaMis1 to {
name: "Devilish Curiosity",
rank: 1,
unlock_description: "I should increase my understanding of spells by using them.",
spell_goal: 5,
description: "Use the new spell Patricia taught you on Raiders until you have something to report to her.",
complete_description: "Report your findings back to her in the Arcane Emporium.",
lust_reward: 1
}>>
<<set _patriciaMis2 to {
name: "PLACEHOLDER",
rank: 1,
unlock_description: "Lets focus on learning how to be the best Dungeon Lord for now",
spell_goal: 10,
description: "Use the new spell Patricia taught you on Raiders until you have something to report to her.",
lust_reward: 2,
complete_description: "Report your findings back to her in the Arcane Emporium."
}>>
<<set setup.patriciaMisLine to [_patriciaMis1, _patriciaMis2]>>
MALLORY MISSIONS
<<set _malloryMis1 to {
name: "Fresh Blood",
rank: 1,
unlock_description: "I can probably get her attention if I get a large group of Raiders in one night.",
raider_goal: 4,
description: "Mallory wants me to Capture Raiders with the @@.gold;New Blood@@ Trait to teach them a lesson. Three should be more than enough.",
percent: 40,
goal: 3,
complete_description: "Go claim your bounty from her in the Adventurer's Guild.",
lust_reward: 1,
blessing_reward: setup.malloryBlessing_0
}>>
<<set _malloryMis2 to {
name: "PLACEHOLDER",
rank: 1,
unlock_description: "Lets focus on learning how to be the best Dungeon Lord for now",
raider_goal: 5,
quest_description: "Mallory wants me to Capture Raiders with the New Blood Trait and teach them a lesson. Three should be more than enough.",
newblood_percent: 40,
newblood_count: 0,
newblood_goal: 3,
lust_reward: 1,
blessing_reward: setup.malloryBlessing_0,
complete_description: "Go claim your bounty from her in the Adventurer's Guild."
}>>
<<set setup.malloryMisLine to [_malloryMis1, _malloryMis2]>>
SYLVIA MISSIONS
<<set _sylviaMis1 to {
name: "PLACEHOLDER",
rank: 2,
unlock_description: "PLACEHOLDER",
quest_description: "PLACEHOLDER",
complete_description: "PLACEHOLDER."
}>>
<<set _sylviaMis2 to {
name: "PLACEHOLDER",
rank: 1,
unlock_description: "PLACEHOLDER",
quest_description: "PLACEHOLDER",
complete_description: "PLACEHOLDER."
}>>
<<set setup.sylviaMisLine to [_sylviaMis1, _sylviaMis2]>>
- RANDOM VARIABLES -
*INDEX LIMIT*
<<set setup.index_limit to 100>> the amount of numbers checked to assign as a index to a room
*MAX TRAPCHECK AMOUNT*
<<set setup.max_trapcheck to 100>>
<<set setup.min_trapcheck to 1>>
*MAX SPELLCHECK AMOUNT*
<<set setup.max_spellcheck to 100>>
<<set setup.min_spellcheck to 1>>
*ICON*
<<set setup.lust_icon to "[img[images/icons/lust_icon.png]]">>
<<set setup.edit_icon to "[img[images/icons/edit_icon.png]]">>
*VIEW SLAVE ARRAYS*
<<set setup.folderTypes to ["anal", "blowjob", "cowgirl", "doggy", "face", "footjob", "group", "handjob", "missionary", "raider", "slave", "titjob"]>>
-Strings of Dialogue-
Section holding variables contain strings to use for raiders or slaves.
*RANDOM STRING EVENTS - START*
This section is all about what the girl's random action will be between each room. They do not affect anything but is purpose is to provide insight to what the girl could be thinking or doing between each room as well as letting the player know what class the girl is before other between room effects take place. End all string with a PERIOD (.) and assumes each string will follow after The Classname ...
-Status Strings-
EDGING
<<set setup.edging_strings to ["is struggling to contain herself.",
"is on the verge of climaxing as she walks onward.",
"can barely stay standing."]>>
HORNY
<<set setup.horny_strings to ["is distracted by how hot her body feels.",
"is burning up.",
"is feeling hot."]>>
PERVERTED
<<set setup.perverted_strings to ["cannot keep dirty thoughts out of her mind.",
"wonders what waits in the next room.",
"is thinking about dicks."]>>
PREGNANT
<<set setup.pregnant_strings to ["has to sit down and rest before continuing.",
"feels her belly move around from the inside",
"waddles forward to the next room."]>>
STICKY
<<set setup.sticky_strings to ["tries to clean herself off.",
"awkwardly presses forward, leaving a trail of stench behind.",
"is struggling to walk normally."]>>
WET
<<set setup.wet_strings to ["feels her pussy juice drip down her leg",
"can barely walk properly.",
"can't focus on anything besides her wet snatch."]>>
-Trait Strings-
BIOLOGIST
<<set setup.biologist_strings to ["is excited to see what creatures await her.",
"trips because she is too busy looking over her notes.",
"is looking to expand her understanding of the local fauna."]>>
BUSTY & THICC
<<set setup.busty_strings to ["still can't believe she found an outfit that fit her.",
"jiggles as she moves onward.",
"is worried her clothes are too revealing."]>>
NAIVE
<<set setup.naive_strings to ["is nervous but excited.",
"can't wait to find the gold and treasure.",
"wonders why nobody wanted this quest."]>>
PETITE $ FLAT
<<set setup.petite_strings to ["is jealous of other girl's big breasts.",
"hopes she finds a treasure that will make her body more desirable.",
"is upset that she can fit through tight spaces."]>>
SLUT
<<set setup.slut_strings to ["can't wait to find out what will happen to her next.",
"wants to find a golden dildo treasure.",
"hopes there's a big monsters waiting for her in the next room."]>>
SQUARE & PRUDE
<<set setup.square_strings to ["is disgusted by all the horny creatures.",
"wishes she can burn this dungeon to the ground.",
"can't believe such traps exist in the world."]>>
VIRGIN
<<set setup.virgin_strings to ["is worried about losing her virginity in this place.",
"can't shake the thought of something terrible happening.",
"innocently walks forward."]>>
-Random Strings Between Rooms-
THESE ARE PICKED IF NO OTHER CONDITIONS ARE MET
<<set setup.random_strings_between_rooms to ["is feeling lost.",
"presses forward.",
"continues onward.",
"cautiously rests before moving on.",
"sits down for a minute.",
"is starting to get worried.",
"is nervous about what might come next.",
"looks around the dark hallway.",
"is worried about her family.",
"is struggling to keep it together.",
"can't wait to return home.",
"stops to rest a moment.",
"hopes there is something of value at the end.",
"stops to drinks some water.",
"jumps away from a spider on the wall.",
"misses the sun.",
"enjoys the darkness.",
"can't wait to leave this place.",
"skips along.",
"mumbles something to herself.",
"sits down to eat something.",
"feels comfortable here."]>>
-Random Dungeon Entrance Strings-
<<set _hunter_strings to ["can't wait to find some gold and treasure.",
"is ready for anything.",
"needs the gold to feed her family.",
"wonders what is inside.",
"is scared to enter the dungeon.",
"is ready to enter.",
"wants to get this over with.",
"has to hurry before her date tonight.",
"is nervous about entering the dungeon.",
"has been waiting for this raid for weeks."]>>
<<set setup.dungeon_entrance_strings = {
Hunter: _hunter_strings,
Sorcerer: "",
}>>
<<set setup.random_strings_dungeon_entrance_anyone to ["can't wait to find some gold and treasure.",
"is ready for anything.",
"needs the gold to feed her family.",
"wonders what is inside.",
"is scared to enter the dungeon.",
"is ready to enter.",
"wants to get this over with.",
"has to hurry before her date tonight.",
"is nervous about entering the dungeon.",
"has been waiting for this raid for weeks."]>>
-Hunter Dungeon Entrance Strings-
<<set setup.random_strings_dungeon_entrance_hunter to ["is ready to start her quest.",
"wonders what creatures wait inside.",
"is eager to start the hunt.",
"tightens her bow before entering.",
"is getting tired of waiting around."]>>
-Sorcerer Dungeon Entrance Strings-
<<set setup.random_strings_dungeon_entrance_sorcerer to ["wonders what ancient tomes are waiting inside.",
"calms herself before the dungeon entrance.",
"illuminates the entrance hall.",
"is ready to open a new chapter in her quest for knowledge.",
"has been sent to research this dungeon by her guild."]>>
-Knight Dungeon Entrance Strings-
<<set setup.random_strings_dungeon_entrance_knight to ["wants to protect her town.",
"is going to purge all the evil that lurks inside.",
"tightens her armor straps.",
"grips her weapon nervously.",
"is ready to tank."]>>
-Warrior Dungeon Entrance Strings-
<<set setup.random_strings_dungeon_entrance_warrior to ["can't wait to try out her new weapon.",
"is looking to push herself tonight.",
"wants to shed some blood.",
"looks forward to going to the tavern after this.",
"is ready to go inside."]>>
-Priestess Dungeon Entrance Strings-
<<set setup.random_strings_dungeon_entrance_priestess to ["looks cautiously inside the dungeon.",
"is willing to do whatever she can to protect the church.",
"prays before the dungeon entrance.",
"breaths in slowly",
"hopes nothing lewd will happen inside."]>>
-Thief Dungeon Entrance Strings-
<<set setup.random_strings_dungeon_entrance_thief to ["is only here for the loot.",
"hopes to find a rare treasure inside.",
"sharpens her dagger.",
"double checks her tools.",
"checks her surroundings."]>>
-Alchemist Dungeon Entrance Strings-
<<set setup.random_strings_dungeon_entrance_alchemist to ["makes sure all her potions haven't expired.",
"looks inside the dungeon excitedly.",
"feels overprepared for the dungeon.",
"tightens her belt around her waist.",
"looks around the entrance for useful plants."]>>
-Witch Dungeon Entrance Strings-
<<set setup.random_strings_dungeon_entrance_witch to ["looks forward to discovering new creatures inside.",
"adjusts her witch hat.",
"wants to go inside already.",
"imagines what it would be like having her own dungeon.",
"drinks a mana potion before starting."]>>
*RANDOM STRING EVENTS - END*
*SCOUTING STRINGS - START*
<<set setup.veryeasy_threat_strings to ["there shouldn't be any problems.",
"tonight will be a boring night.",
"the towns aren't worried about your dungeon at all.",
"the guild has set your dungeon as an <q>Adventurer's First Dungeon</q> quest."]>>
<<set setup.easy_threat_strings to ["things should go smoothly.",
"tonight will be rather dull.",
"the nearby towns don't see your dungeon as a issue.",
"the guild has placed your dungeon as a <q>Trivial</q> quest."]>>
<<set setup.average_threat_strings to ["nothing out of the ordinary should happen.",
"tonight will be interesting.",
"the towns have began taking notice of your dungeon.",
"the guild has placed a small bounty on your dungeon."]>>
<<set setup.hard_threat_strings to ["looks like more experienced adventurers are coming.",
"tonight may be challenging.",
"your dungeon is upsetting the nearby towns.",
"the guild has placed a warning on your dungeon."]>>
<<set setup.veryhard_threat_strings to ["only the strongest girls will show up.",
"tonight will be extremely difficult.",
"the nearby towns want your dungeon destroyed.",
"the guild has restricted your dungeon to only the most experienced adventurers."]>>
*SCOUTING STRINGS - END*
*SLAVE DIALOGUE - START*
<<set setup.slave_dislike_dialogue to ["Please don't hurt me $pc_name.", "What do you want from me?", "I want to go home."]>>
<<set setup.slave_like_dialogue to ["It is good to see you again.", "Do you require something of me?", "I am ready for a new task."]>>
<<set setup.slave_love_dialogue to ["$pc_name! I missed you so much!", "How can I serve you today, my lord?", "It is so good to see you again, master."]>>
<<set setup.slave_worship_dialogue to ["Welcome master, my body is yours to do as you see fit.", "I will never leave your side $pc_name.", "Please allow me to service you today master."]>>
<<set setup.training_dislike_dialogue to ["Please no more training!", "I do not want to be trained by you like some animal!", "I don't know how much more I can take."]>>
<<set setup.training_like_dialogue to ["Hopefully this will be quick.", "Am I getting use to this?", "Please be gentle."]>>
<<set setup.training_love_dialogue to ["More training? How exciting.", "I love when you train me, master.", "What tools are you going to use today?"]>>
<<set setup.training_worship_dialogue to ["Master, I love the way you look at me while disciplining me.", "I'm already wet just thinking about what you are going to do to me.", "Please push me to the edge $pc_name."]>>
*SLAVE DIALOGUE - END*
*HINTS - START*
<<set setup.hint_list to ["I'll give you useful tips here. You're welcome!",
"You can Capture a Raider by depleting her @@.health;Health@@ or by filling up her @@.lust;Lust@@.",
"You can gain EXP by fucking Raiders, but doing so increases the amount of Threat you gain.",
"Keep Raiders out of your Treasure Vault if you don't want to lose @@.rep;Reputation@@, @@.gold;Gold@@, or @@.gold;Treasure@@.",
"You can use the Guidebook during Raids if you need to lookup any information. Seriously, use it!",
"Traits, Statuses, and many other icons and numbers can be hovered over to see what they do.",
"Enslaving a Raider means you will need to Discipline her before she will work for you, but it's cheaper than buying one.",
"Events can occur at the start of each day. Be sure to check the Event Information here to see its effects.",
"If Raiders are becoming too difficult, consider visiting the Adventurer's Guild and paying them to lower your Threat.",
"If Raiders are too easy, consider visiting the Adventurer's Guild and paying them to increase your Threat.",
"You can Hire an Adventurer at the Adventurer's Guild if you want a specific Raider Class to Raid your Dungeon.",
"You can change a Slave's name by using the Icon next to her Name while in her room.",
"The Slave Market prices change each day based on the value of each Stat, Trait, and Sex Skills. Be sure to check often to get the best value.",
"You can use your keyboard to navigate through the menus. Underlined letters or numbers correspond to the button they are in.",
"If a button contains a number or letter in [], hold Shift and press the Hotkey. If it's in (), hold Control and press the Hotkey.",
"You can expand your Treasure Vault in your Quarters, allowing you to hold more @@.gold;Treasures@@.",
"Be sure to check your Mission Log in your Quarters. You will earn @@.le;Lust Essence@@ and unique rewards for completing Missions.",
"Summoned Creatures' levels are based on your level.",
"Summoned Creatures only recover @@.health;Health@@ at the end of the day. Once they run out of @@.health;Health@@, you cannot summon that Creature until the next day.",
"Summon Spells are the only Spells that can Capture Raiders.",
"Not all Traps can Capture Raiders, be sure to read their description beforehand.",
"You can view the previous night's Report inside your Quarters.",
"You can change your Name, Dungeon Name, and the game's difficulty in your Quarters."]>>
*HINTS - END*
* HotKeys - Start *
<<script>>
Mousetrap
.bind('1', function () {
$('#1 button').click();
},);
Mousetrap
.bind('shift+1', function () {
$('#shift1 button').click();
},);
Mousetrap
.bind('ctrl+1', function () {
$('#ctrl1 button').click();
},);
Mousetrap
.bind('2', function () {
$('#2 button').click();
});
Mousetrap
.bind('shift+2', function () {
$('#shift2 button').click();
},);
Mousetrap
.bind('ctrl+2', function () {
$('#ctrl2 button').click();
},);
Mousetrap
.bind('3', function () {
$('#3 button').click();
});
Mousetrap
.bind('shift+3', function () {
$('#shift3 button').click();
},);
Mousetrap
.bind('ctrl+3', function () {
$('#ctrl3 button').click();
},);
Mousetrap
.bind('4', function () {
$('#4 button').click();
});
Mousetrap
.bind('shift+4', function () {
$('#shift4 button').click();
},);
Mousetrap
.bind('ctrl+4', function () {
$('#ctrl4 button').click();
},);
Mousetrap
.bind('5', function () {
$('#5 button').click();
});
Mousetrap
.bind('shift+5', function () {
$('#shift5 button').click();
},);
Mousetrap
.bind('ctrl+5', function () {
$('#ctrl5 button').click();
},);
Mousetrap
.bind('6', function () {
$('#6 button').click();
});
Mousetrap
.bind('shift+6', function () {
$('#shift6 button').click();
},);
Mousetrap
.bind('ctrl+6', function () {
$('#ctrl6 button').click();
},);
Mousetrap
.bind('7', function () {
$('#7 button').click();
});
Mousetrap
.bind('shift+7', function () {
$('#shift7 button').click();
},);
Mousetrap
.bind('ctrl+7', function () {
$('#ctrl7 button').click();
},);
Mousetrap
.bind('8', function () {
$('#8 button').click();
});
Mousetrap
.bind('shift+8', function () {
$('#shift8 button').click();
},);
Mousetrap
.bind('ctrl+8', function () {
$('#ctrl8 button').click();
},);
Mousetrap
.bind('9', function () {
$('#9 button').click();
});
Mousetrap
.bind('shift+9', function () {
$('#shift9 button').click();
},);
Mousetrap
.bind('ctrl+9', function () {
$('#ctrl9 button').click();
},);
Mousetrap
.bind('0', function () {
$('#0 button').click();
});
Mousetrap
.bind('shift+0', function () {
$('#shift0 button').click();
},);
Mousetrap
.bind('ctrl+0', function () {
$('#ctrl0 button').click();
},);
Mousetrap
.bind('left', function () {
$('#left button').click();
});
Mousetrap
.bind('shift+left', function () {
$('#shiftleft button').click();
});
Mousetrap
.bind('b', function () {
$('#back button').click();
});
Mousetrap
.bind('right', function () {
$('#right button').click();
});
Mousetrap
.bind('shift+right', function () {
$('#shiftright button').click();
});
Mousetrap
.bind('space', function () {
$('#forward button').click();
});
Mousetrap
.bind('q', function () {
$('#q button').click();
});
Mousetrap
.bind('m', function () {
$('#m button').click();
});
Mousetrap
.bind('s', function () {
$('#s button').click();
});
Mousetrap
.bind('a', function () {
$('#a button').click();
});
Mousetrap
.bind('g', function () {
$('#g button').click();
});
Mousetrap
.bind('l', function () {
$('#l button').click();
});
Mousetrap
.bind('u', function () {
$('#u button').click();
});
Mousetrap
.bind('r', function () {
$('#r button').click();
});
Mousetrap
.bind('m', function () {
$('#m button').click();
});
Mousetrap
.bind('n', function () {
$('#n button').click();
});
Mousetrap
.bind('t', function () {
$('#t button').click();
});
Mousetrap
.bind('e', function () {
$('#e button').click();
});
Mousetrap
.bind('j', function () {
$('#j button').click();
});
Mousetrap
.bind('v', function () {
$('#v button').click();
});
Mousetrap
.bind('d', function () {
$('#d button').click();
});
Mousetrap
.bind('o', function () {
$('#o button').click();
});
Mousetrap
.bind('c', function () {
$('#c button').click();
});
Mousetrap
.bind('p', function () {
$('#p button').click();
});
Mousetrap
.bind('v', function () {
$('#v button').click();
});
Mousetrap
.bind('i', function () {
$('#i button').click();
});
Mousetrap
.bind('f', function () {
$('#f button').click();
});
Mousetrap
.bind('c', function () {
$('#c button').click();
});
Mousetrap
.bind('shift+c', function () {
$('#shiftc button').click();
});
Mousetrap
.bind('ctrl+c', function () {
$('#ctrlc button').click();
},);
Mousetrap
.bind('z', function () {
$('#z button').click();
});
Mousetrap
.bind('shift+z', function () {
$('#shiftz button').click();
});
Mousetrap
.bind('ctrl+z', function () {
$('#ctrlz button').click();
},);
<</script>>
* HotKeys - End *<<silently>>\
*Variables*
<<set _outcome to "">> variable that holds the trigger info about what the outcome is
<<set _gif to "[img[gifs/events/absent_minded.gif]]">> holds the gif info
* Find Raider *
<<for _z = 0; _z < $raiders.length; _z++>>
<<if $raiders[_z].index === $absentminded_raider>>
<<set _position to _z>>
<<break>>
<</if>>
<</for>>
*Check previous room*
<<if $dungeon_floor_list[$absentminded_room].cur_hp > 0>>
<<set $cur_room_num to $absentminded_room>>
<<set $next_room to $dungeon_floor_list[$absentminded_room]>>
<<set $this_room to $dungeon_floor_list[$absentminded_room]>>
<<set _outcome to "Enter Room">>
UPDATE RAIDER REPORT
<<for _r = 0; _r < $raiders.length; _r++>>
<<if _r === _position>>
<<if $raiders.length === 1>>
<<set _entry to "She got lost and went to the previous room.">>
<<else>>
<<set _entry to "She lead her party to the wrong way and ended up in the previous room.">>
<</if>>
<<else>>
<<set _entry to "Her teammate lead the party to the previous room.">>
<</if>>
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[_r].report.log.push(_lastLog)>>
<</for>>
UPDATE TRAIT
<<for _z = 0; _z < $raiders[_position].traits.length; _z++>>
<<if $raiders[_position].traits[_z].name === setup.absentminded.name>>
<<set $raiders[_position].traits[_z].cd to clone($raiders[_position].traits[_z].int)>>
<<break>>
<</if>>
<</for>>
<<else>>
<<set _outcome to "Room Defeated">>
<</if>>
*Display*
<</silently>>\
<div class="section">\
<div class="titlebox">\
Whoop
</div>\
<div class="imagebox">\
_gif
</div>\
<div class="textbox-center">\
<<switch _outcome>>\
<<case "Enter Room">>\
<<if $raiders.length > 1>>\
After resting between the dungeon rooms, $raiders[_position].name, the $raiders[_position].class, lead the group the wrong way in the dungeon without realizing it.
<<else>>\
After resting between the dungeon rooms, $raiders[_position].name, the $raiders[_position].class, started heading to the next room, unaware that she was going to the wrong way.
<</if>>\
<<case "Room Defeated">>\
<<if $raiders.length > 1>>\
After resting between the dungeon rooms, $raiders[_position].name, the $raiders[_position].class, lead the group to the previous room without realizing it. Luckily, the $dungeon_floor_list[$absentminded_room].name was defeated. The group then turns around to get back on track, letting someone else lead.
<<else>>\
After resting between the dungeon rooms, $raiders[_position].name, the $raiders[_position].class, started heading to the next room, unaware that she was going backwards in the dungeon. Luckily for her, the $dungeon_floor_list[$absentminded_room].name was defeated. She slowly turns around and gets back on track.
<</if>>\
<</switch>>\
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[Next Room|$next_room.passage]]>><</button>></span>
</div>\
</div>\<<if $visited_slave_rooms === false && $tutorial_guides === true>>\
<<silently>>\
* Variables *
<<set $visited_slave_rooms to true>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Slave Rooms
</div>\
<div class="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/mistress/face.jpg]]
</div>\
<div class="dialogue-text">\
Welcome to the Slave Room Manager.
You can view all your Slave Rooms and any Slaves you own living in them. You can visit each Slave to assign them Jobs, train them, view their stats, and more.
Assign a Job or Train a Slave and I'll explain how those work and what benefits they provide. Also, if you forget anything, check your Guidebook for more detailed information.
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="forward"><<button [[Continue|Slave Room Manager]]>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
</div>\
</div>\
<<else>>\
<<silently>>\
Set information about room costs
*Variables*
<<set _floor_names to ["Room One", "Room Two", "Room Three", "Room Four", "Room Five", "Room Six", "Room Seven", "Room Eight", "Room Nine", "Room Ten"]>>
*Display*
<</silently>>\
<div class="section">\
<div class="titlebox">\
Slave Rooms
</div>\
<div class="tableholder-manager-slave">\
<<for _i = 0; _i < $slave_room_list.length; _i++>>\
<<set _hotKey to _i + 1>>\
<<set _hotKey %= 10>>\
<div class="cell-slave-manager">\
<div class="cell-picholder-slave-manager">\
$slave_room_list[_i].pic
</div>\
<div class="cell-textholder-slave-manager">\
<<if $slave_room_list[_i].room_type === "Slave">>\
<div class="cell-namebox-slave-manager">\
<<- $slave_room_list[_i].name>>'s Room
</div>\
<div class="cell-textbox-slave-manager">\
<<if $slave_room_list[_i].injured === true>>\
Status: @@.bad;Injured@@
<<elseif $slave_room_list[_i].disobedient === true>>\
Status: @@.bad;Disobedient@@
<<elseif $slave_room_list[_i].dayoff_bool === true>>\
Status: @@.good;Day Off@@
<<elseif $slave_room_list[_i].quest != "">>\
Status: Questing
<<elseif $slave_room_list[_i].class != "">>\
Status: In Class
<<elseif $slave_room_list[_i].job != "">>\
Job: $slave_room_list[_i].job.name
<<else>>\
Job: None
<</if>>\
Stress: @@.stress;<strong>$slave_room_list[_i].cur_stress</strong>@@
</div>\
<div class="cell-buttonbox-slave-manager">\
<<capture _i, _hotKey>>\
<span @id="_hotKey"><<button "Enter ^^_hotKey^^" "Slave Room">><<set $cur_slave to $slave_room_list[_i]>><<set $cur_slave_num to _i>><<set $slaveroom_page to "skill">><</button>></span>
<</capture>>\
</div>\
<<elseif $slave_room_list[_i].room_type === "Empty">>\
<div class="cell-namebox-slave-manager">\
<<- _floor_names[_i]>>
</div>\
<<if $slave_room_list[_i].built === true>>\
<div class="cell-textbox-slave-manager">\
</div>\
<div class="cell-buttonbox-slave-manager">\
<div class="offbutton">\
<<button "Open Room">><</button>>
</div>\
</div>\
<<else>>\
<<set _prev_room to _i - 1>>\
<<if $current_event.name === setup.cheap_labor.name && $current_event.event === true>>\
<<set _amount to Math.round($slave_room_list[_i].cost * setup.cheap_labor.float)>>\
<<set _cost to $slave_room_list[_i].cost - _amount>>\
<<else>>\
<<set _cost to $slave_room_list[_i].cost>>\
<</if>>\
<<if $dungeon_rank < $slave_room_list[_i].rank>>\
<div class="cell-textbox-slave-manager">\
</div>\
<div class="cell-buttonbox-slave-manager">\
<div class="offbutton">\
<<hovertip "Available at Rank <<- $slave_room_list[_i].rank>>">><<button "_cost Gold">><</button>><</hovertip>>
</div>\
</div>\
<<elseif $slave_room_list[_prev_room].built === false>>\
<div class="cell-textbox-slave-manager">\
</div>\
<div class="cell-buttonbox-slave-manager">\
<div class="offbutton">\
<<hovertip "Requires <<- _floor_names[_prev_room]>>">><<button "_cost Gold">><</button>><</hovertip>>
</div>\
</div>\
<<else>>\
<div class="cell-textbox-slave-manager">\
</div>\
<div class="cell-buttonbox-slave-manager">\
<<if $pc_gold >= _cost>>\
<<capture _i, _cost, _hotKey>>\
<span @id="_hotKey"><<button "_cost Gold ^^_hotKey^^" "Slave Room Manager">><<set $slave_room_list[_i].built to true>><<set $slave_room_list[_i].pic to "[img[images/rooms/empty_cell.jpg]]">><<set $pc_gold -= _cost>><<set $pc_rooms_gold_spent += _cost>><<set $current_event.event to false>><</button>></span>
<</capture>>\
<<else>>\
<div class="offbutton">\
<<hovertip "Not enough Gold">><<button "_cost Gold">><</button>><</hovertip>>
</div>\
<</if>>\
</div>\
<</if>>\
<</if>>\
<</if>>\
</div>\
</div>\
<</for>>\
</div>\
<div class="exit-link-right">\
<span id="e"><<button "<u>E</u>dit Layout" "Move Slave Rooms">><</button>></span> <span id="back"><<button [[Main Menu]]>><</button>></span> <span id="q"><<button "<u>Q</u>uick Menu" "Quick Menu">><</button>></span>
</div>\
</div>\
<</if>>\<<silently>>\
*Variables*
Room Costs
<<set _training_hall_cost to $training_hall.cost>>
<<set _enchanting_chamber_cost to setup.enchanting_chamber.cost>>
<<set _shrine_cost to setup.shrine.cost>>
*Cheap Labor Event*
<<if $current_event.name === setup.cheap_labor.name && $current_event.event === true>>
<<set _amount to Math.round(_training_hall_cost * setup.cheap_labor.float)>>
<<set _training_hall_cost -= _amount>>
<<set _amount to Math.round(_enchanting_chamber_cost * setup.cheap_labor.float)>>
<<set _enchanting_chamber_cost -= _amount>>
<<set _amount to Math.round(_shrine_cost * setup.cheap_labor.float)>>
<<set _shrine_cost -= _amount>>
<</if>>
*Display*
<</silently>>\
<div class="section">\
<div class="titlebox">\
Amenity Rooms
</div>\
<div class="cellholder-utility">\
<div class="cell-utility">\
<div class="cell-link-utility">\
<span id="1"><<button "$pc_name's Quarters ^^1^^" "Player's Stats">><</button>></span>
</div>\
<div class="cell-picbox-utility">\
[img[images/rooms/study.jpg][Player's Stats]]
</div>\
</div>\
<div class="cell-utility">\
<div class="cell-link-utility">\
<span id="2"><<button "Ahri's Quarters ^^2^^" "Ahri's Quarters">><</button>></span>
</div>\
<div class="cell-picbox-utility">\
[img[images/rooms/ahris_quarters.jpg][Ahri's Quarters]]
</div>\
</div>\
<div class="cell-utility">\
<div class="cell-link-utility">\
<span id="3">\
<<if $onsen.built === true>>\
<<button "Onsen ^^3^^" "Onsen">><</button>>
<<elseif $onsen.construction === true>>\
<div class="offbutton">\
<<hovertip "Under Construction">><<button "Onsen">><</button>><</hovertip>>
</div>\
<<elseif $missionLog.goddess.num === 0 && $missionLog.goddess.started === true>>\
<<button "Onsen ^^3^^" "Confirm Build Onsen">><</button>>
<<else>>\
<div class="offbutton">\
<<button "Locked">><</button>>
</div>\
<</if>>\
</span>
</div>\
<div class="cell-picbox-utility">\
<<if $onsen.built === true>>\
[img[images/rooms/onsen.jpg][Onsen]]
<<elseif $onsen.built === false && $missionLog.goddess.started === true>>\
[img[images/rooms/onsen.jpg]]
<<else>>\
[img[images/rooms/unbuilt_other.jpg]]
<</if>>\
</div>\
</div>\
<div class="cell-utility">\
<div class="cell-link-utility">\
<div class="offbutton">\
<<button "Locked">><</button>>
</div>\
</div>\
<div class="cell-picbox-utility">\
[img[images\rooms\unbuilt_other.jpg]]
</div>\
</div>\
<div class="cell-utility">\
<div class="cell-link-utility">\
<div class="offbutton">\
<<button "Locked">><</button>>
</div>\
</div>\
<div class="cell-picbox-utility">\
[img[images\rooms\unbuilt_other.jpg]]
</div>\
</div>\
<div class="cell-utility">\
<div class="cell-link-utility">\
<div class="offbutton">\
<<button "Locked">><</button>>
</div>\
</div>\
<div class="cell-picbox-utility">\
[img[images\rooms\unbuilt_other.jpg]]
</div>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Main Menu]]>><</button>></span> <span id="q"><<button "<u>Q</u>uick Menu" "Quick Menu">><</button>></span>
</div>\
</div>\<<silently>>
*Variables*
<<if $is_raiding === true>>
<<if $at_entrance === true>>
<<set $return to "Enter Dungeon">>
<<else>>
<<set $return to "Between Rooms">>
<</if>>
<<else>>
<<set $return to "Main Menu">>
<</if>>
*Display*
<</silently>>
<div class="wrapper">
<div class="titlebox">
Guidebook
</div>
<div class="guidebook-coverpic">
[img[images/misc/guidebook/0.jpg]]
</div>
<div class="wrapper-guidebook-table">
<div class="guidebook-header">
Table of Contents
</div>
<div class="guidebook-table">
<ol>
<li>[[Quick Guide]]</li>
<li><<link [[Reputation]]>><<set $page to 1>><</link>></li>
<ol>
<li><<link [[Gaining Reputation|Reputation]]>><<set $page to 2>><</link>></li>
<li><<link [[Losing Reputation|Reputation]]>><<set $page to 3>><</link>></li>
<li><<link [[Reputation Milestones|Reputation]]>><<set $page to 4>><</link>></li>
</ol>
<li><<link [[Threat]]>><<set $page to 1>><</link>></li>
<ol>
<li><<link [[Gaining Threat|Threat]]>><<set $page to 2>><</link>></li>
<li><<link [[Losing Threat|Threat]]>><<set $page to 3>><</link>></li>
</ol>
<li>[[Dungeon Rank]]</li>
<li><<link [[Raids]]>><<set $page to 1>><</link>></li>
<ol>
<li><<link [[Preparation|Raids]]>><<set $page to 2>><</link>></li>
<li><<link [[Encounters|Raids]]>><<set $page to 3>><</link>></li>
<li><<link [[Dungeon Entrance & Between Floors|Raids]]>><<set $page to 4>><</link>></li>
<li><<link [[Capturing Raiders|Raids]]>><<set $page to 5>><</link>></li>
<li><<link [[Clearing or Abandoning your Dungeon|Raids]]>><<set $page to 6>><</link>></li>
</ol>
<li><<link [[Raiders]]>><<set $page to 1>><</link>></li>
<ol>
<li><<link [[Rank & Stats|Raiders]]>><<set $page to 2>><</link>></li>
<li><<link [[Classes|Raiders]]>><<set $page to 3>><</link>></li>
<li><<link [[Class Info|Raiders]]>><<set $page to 4>><</link>></li>
<li><<link [[Kinks, Turn-Offs, and Traits|Raiders]]>><<set $page to 5>><</link>></li>
</ol>
<li><<link [[Creatures]]>><<set $page to 1>><</link>></li>
<ol>
<li><<link [[Unlocking Creatures|Creatures]]>><<set $page to 2>><</link>></li>
<li><<link [[Using Creatures|Creatures]]>><<set $page to 3>><</link>></li>
<li><<link [[Upgrading Creatures|Creatures]]>><<set $page to 4>><</link>></li>
</ol>
<li><<link [[Traps]]>><<set $page to 1>><</link>></li>
<ol>
<li><<link [[Unlocking Traps|Traps]]>><<set $page to 2>><</link>></li>
<li><<link [[Using Traps|Traps]]>><<set $page to 3>><</link>></li>
<li><<link [[Trap Modes|Traps]]>><<set $page to 4>><</link>></li>
</ol>
<li><<link [[Spells]]>><<set $page to 1>><</link>></li>
<ol>
<li><<link [[Infliction|Spells]]>><<set $page to 2>><</link>></li>
<li><<link [[Manipulation|Spells]]>><<set $page to 3>><</link>></li>
<li><<link [[Summoning|Spells]]>><<set $page to 4>><</link>></li>
<li><<link [[Supportive|Spells]]>><<set $page to 5>><</link>></li>
</ol>
<li><<link [[Treasures]]>><<set $page to 1>><</link>></li>
<li><<link [[Equipments]]>><<set $page to 1>><</link>></li>
<li><<link [[Slaves]]>><<set $page to 1>><</link>></li>
<ol>
<li><<link [[The Basics|Slaves]]>><<set $page to 2>><</link>></li>
<li><<link [[Stats & Sex Stats|Slaves]]>><<set $page to 3>><</link>></li>
<li><<link [[Traits|Slaves]]>><<set $page to 4>><</link>></li>
<li><<link [[Jobs|Slaves]]>><<set $page to 5>><</link>></li>
<li><<link [[Quests|Slaves]]>><<set $page to 6>><</link>></li>
<li><<link [[Classes|Slaves]]>><<set $page to 7>><</link>></li>
<li><<link [[Other Actions|Slaves]]>><<set $page to 8>><</link>></li>
</ol>
<li><<link [[Amenities|AmenityRooms]]>><<set $page to 1>><</link>></li>
<ol>
<li><<link [[Your Quarters|AmenityRooms]]>><<set $page to 2>><</link>></li>
<li><<link [[Ahri's Quarters|AmenityRooms]]>><<set $page to 3>><</link>></li>
<li><<link [[Onsen|AmenityRooms]]>><<set $page to 4>><</link>></li>
<li><<link [[Armory|AmenityRooms]]>><<set $page to 5>><</link>></li>
</ol>
<li><<link [[Town Shops]]>><<set $page to 1>><</link>></li>
<ol>
<li><<link [[Slave Market|Town Shops]]>><<set $page to 2>><</link>></li>
<li><<link [[Treasure Shop|Town Shops]]>><<set $page to 3>><</link>></li>
<li><<link [[Arcane Emporium|Town Shops]]>><<set $page to 4>><</link>></li>
<li><<link [[Adventurer's Guild|Town Shops]]>><<set $page to 5>><</link>></li>
<li><<link [[Dragonscale Forge|Town Shops]]>><<set $page to 6>><</link>></li>
</ol>
</ol>
</div>
</div>
<div class="exit-link-right">
<span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="right"><<button [[>|Quick Guide]]>><</button>></span>
</div>
</div><<silently>>\
* Set Next Link *
MORNING GLORY BLESSING
<<if $morning_job>>
<<set $cur_job to clone($morning_job)>>
<<unset $morning_job>>
<<set _link to $cur_job.passage>>
<<else>>
<<set _link to "Main Menu">>
<</if>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
$current_event.title
</div>\
<div class="imagebox">\
$current_event.gif
</div>\
<div class="textbox-center">\
$current_event.story
$current_event.description
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[Start Day|_link]]>><</button>></span>
</div>\
</div>\
<<silently>>\
*Set Events*
RARE SLAVE
<<if $current_event.event === true && $current_event.name === setup.rare_slave.name>>
<<set $rare_slave to setup.slave>>
<<set $rare_slave_bool to true>>
<</if>>
HIGH DEMAND
<<if $current_event.event === true && $current_event.name === setup.high_demand.name>>
<<set $high_demand_event to true>>
<<set _count to random(setup.high_demand.min_slaves, setup.high_demand.max_slaves)>>
<<set $slave_market_list to []>>
<<for _n = 0; _n < _count; _n++>>
<<set $slave_market_list.push(setup.slave)>>
<</for>>
<</if>>
BIG HAUL
<<if $current_event.event === true && $current_event.name === setup.big_haul.name>>
<<set _count to setup.big_haul.int * $dungeon_rank>>
<<for _n = 0; _n < _count; _n++>>
<<set $slave_market_list.push(setup.slave)>>
<</for>>
<</if>>
THANK YOU
<<if $current_event.event === true && $current_event.name === setup.thank_you.name>>
<<set $pc_lust += setup.thank_you.int>>
<<set $thank_you_event to true>>
<<set $current_event.event to false>>
<</if>>
<</silently>>\<<silently>>\
*Variables*
<<set _floor_names to ["Room One", "Room Two", "Room Three", "Room Four", "Room Five", "Room Six", "Room Seven", "Room Eight", "Room Nine", "Room Ten"]>>
* Set Previous and Next Slave *
<<set _nextSlave to "">>
<<set _previousSlave to "">>
<<for _z = $cur_slave_num + 1; _z < $slave_room_list.length; _z++>>
<<if $slave_room_list[_z].room_type === "Slave">>
<<set _nextSlave to clone(_z)>>
<<break>>
<</if>>
<</for>>
<<for _z = $cur_slave_num - 1; _z >= 0; _z-->>
<<if $slave_room_list[_z].room_type === "Slave">>
<<set _previousSlave to clone(_z)>>
<<break>>
<</if>>
<</for>>
*Display*
<</silently>>\
<div class="section">\
<div class="cardholder-picside">\
<div class="picbox-inforoom-violet">\
<div class="buttonbox-slaveroom">\
<<if _previousSlave !== "">>\
<span id="left"><<button [[<|Slave Room]]>><<set $slave_room_list[$cur_slave_num] to clone($cur_slave)>><<set $cur_slave to $slave_room_list[_previousSlave]>><<set $cur_slave_num to _previousSlave>><<set $slaveroom_page to "skill">><</button>></span>
<<else>>\
<div class="offbutton">\
<<button "<">><</button>>
</div>\
<</if>>\
</div>\
<div class="titlebox-abovepic-slaveroom">\
Slave <<- _floor_names[$cur_slave_num]>>
</div>\
<div class="buttonbox-slaveroom">\
<<if _nextSlave !== "">>\
<span id="right"><<button [[>|Slave Room]]>><<set $slave_room_list[$cur_slave_num] to clone($cur_slave)>><<set $cur_slave to $slave_room_list[_nextSlave]>><<set $cur_slave_num to _nextSlave>><<set $slaveroom_page to "skill">><</button>></span>
<<else>>\
<div class="offbutton">\
<<button ">">><</button>>
</div>\
<</if>>\
</div>\
<div class="textbox-abovepic-slaveroom">\
<strong>$cur_slave.name</strong> <span id="7"><<button "[img[images/icons/edit_icon.png]] ^^7^^" "Edit Slave Info">><</button>></span>
</div>\
<div class="textbox-abovepic-slaveroom">\
Upkeep: <span class="gold">$cur_slave.upkeep Gold</span>
</div>\
<div class="picbox-slaveroom">\
$cur_slave.body_pic
</div>\
<div class="statusbox-belowpic-slaveroom">\
<<if $cur_slave.injured === true>>\
<<hovertip "<<-setup.slave_statuses.injured.tooltip>>">><<-setup.slave_statuses.injured.icon>><</hovertip>>\
<</if>>\
<<if $cur_slave.disobedient === true>>\
<<hovertip "<<-setup.slave_statuses.disobedient.tooltip>>">><<-setup.slave_statuses.disobedient.icon>><</hovertip>>\
<</if>>\
<<if $cur_slave.scolded_bool === true>>\
<<hovertip "<<-setup.slave_statuses.scolded.tooltip>>">><<-setup.slave_statuses.scolded.icon>><</hovertip>>\
<</if>>\
<<if $cur_slave.dayoff_bool === true>>\
<<hovertip "<<-setup.slave_statuses.dayoff.tooltip>>">><<-setup.slave_statuses.dayoff.icon>><</hovertip>>\
<</if>>\
<<if $cur_slave.trait_names.includes("Libidinous")>>\
<<for _z = 0; _z < $cur_slave.traits.length; _z++>>\
<<if $cur_slave.traits[_z].name === "Libidinous">>\
<<hovertip "<<-setup.slave_statuses.libidinous.tooltip>> @@.lust-energy;$cur_slave.traits[_z].stack@@ / @@.lust-energy;$cur_slave.traits[_z].max_stack@@">><<-setup.slave_statuses.libidinous.icon>><</hovertip>>\
<<break>>\
<</if>>\
<</for>>\
<</if>>\
</div>\
</div>\
</div>\
<div class="cardholder-infoside">\
<div class="textbox-inforoom-violet">\
<div class="status-textbox-slave">\
<<if $cur_slave.injured === true>>\
<<if $cur_slave.injured_cd === 1>>\
She will recover from her injury tomorrow.
<<elseif $cur_slave.injured_cd > 1>>\
She is injured and will recover in $cur_slave.injured_cd days.
<</if>>\
<<elseif $cur_slave.disobedient === true>>\
She is Disobedient and cannot be assigned any work until her Stress is reduced to 0.
<<elseif $cur_slave.quest != "">>\
<<if $cur_slave.quest_cd === 1>>\
She has taken the $cur_slave.quest.name Quest and will be back tomorrow.
<<else>>\
She has taken the $cur_slave.quest.name Quest and will be back in $cur_slave.quest_cd days.
<</if>>\
<<elseif $cur_slave.class != "">>\
<<if $cur_slave.class_cd === 1>>\
She is taking the $cur_slave.class.name Class and will be finished tomorrow.
<<else>>\
She is taking the $cur_slave.class.name Class and will be finished in $cur_slave.class_cd days.
<</if>>\
<<elseif $cur_slave.job != "">>\
<<if $cur_slave.job.type === "Service">>\
She is assigned to assist you as your $cur_slave.job.name.
<<elseif $cur_slave.job.type === "Prostitution">>\
She is assigned to Prostitute in the $cur_slave.job.location.
<<elseif $cur_slave.job.type === "Caretaker">>\
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>\
<<if $dungeon_floor_list[_z].room_type === "Creature">>\
<<if $cur_slave.job.creature_index === $dungeon_floor_list[_z].index>>\
<<set _creature to $dungeon_floor_list[_z].name>>\
<<break>>\
<</if>>\
<</if>>\
<</for>>\
She is assigned the $cur_slave.job.name Job for your _creature.
<<elseif $cur_slave.job.type === "Maintenance">>\
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>\
<<if $dungeon_floor_list[_z].room_type === "Trap">>\
<<if $cur_slave.job.trap_index === $dungeon_floor_list[_z].index>>\
<<set _trap to $dungeon_floor_list[_z].name>>\
<<break>>\
<</if>>\
<</if>>\
<</for>>\
She is assigned the $cur_slave.job.name Job for your _trap.
<</if>>\
<<else>>\
She is lounging around, waiting to be assigned a task.
<</if>>\
<<if $cur_slave.training_count === 1>>\
You Trained her once today.
<<elseif $cur_slave.training_count > 1>>\
You Trained her $cur_slave.training_count times today.
<</if>>\
<<if $cur_slave.discipline_count === 1>>\
You Disciplined her once today.
<<elseif $cur_slave.discipline_count > 1>>\
You Disciplined her $cur_slave.discipline_count times today.
<</if>>\
<<if $cur_slave.scolded_count === 1>>\
You Scolded her Yesterday.
<<elseif $cur_slave.scolded_count > 1>>\
You Scolded her the last $cur_slave.scolded_count days.
<</if>>\
<<if $cur_slave.dayoff_count === 1>>\
You gave her Yesterday off.
<<elseif $cur_slave.dayoff_count > 1>>\
You gave her the last $cur_slave.dayoff_count days off.
<</if>>\
</div>\
<div class="stats-container-slave">\
<div class="stats-titlebox-slave">\
Stats
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.love.tooltip>>">><<-setup.slave_stats.love.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.love_tracker / $cur_slave.love_tracker_limit<br>Max: $cur_slave.love_limit">>@@.love;$cur_slave.love@@<</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.obedience.tooltip>>">><<-setup.slave_stats.obedience.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.obedience_tracker / $cur_slave.obedience_tracker_limit<br>Max: $cur_slave.obedience_limit">>@@.obedience;$cur_slave.obedience@@<</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.libido.tooltip>>">><<-setup.slave_stats.libido.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.libido_tracker / $cur_slave.libido_tracker_limit<br>Max: $cur_slave.libido_limit">>@@.libido;$cur_slave.libido@@<</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.strength.tooltip>>">><<-setup.slave_stats.strength.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.strength_tracker / $cur_slave.strength_tracker_limit<br>Max: $cur_slave.strength_limit">>@@.strength;$cur_slave.strength@@<</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.intelligence.tooltip>>">><<-setup.slave_stats.intelligence.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.intelligence_tracker / $cur_slave.intelligence_tracker_limit<br>Max: $cur_slave.intelligence_limit">>@@.intelligence;$cur_slave.intelligence@@<</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.stress.tooltip>>">><<-setup.slave_stats.stress.icon>><</hovertip>>
<strong>@@.stress;$cur_slave.cur_stress@@</strong>
</div>\
<div class="stats-titlebox-slave">\
Traits
</div>\
<div class="stats-bigcell-slave">\
<<for _t = 0; _t < $cur_slave.traits.length; _t++>>\
<<print '<span style="color:'+$cur_slave.traits[_t].color+'"><<hovertip "$cur_slave.traits[_t].tooltip">>$cur_slave.traits[_t].name<</hovertip>></span>'>><<if _t + 1 < $cur_slave.traits.length>>, <</if>>\
<</for>>\
</div>\
</div>\
<div class="rec-skill-container-slave">\
<div class="rec-titlebox-slave">\
Sex Skills
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.handjob_tracker / $cur_slave.handjob_tracker_limit<br>Max: $cur_slave.handjob_limit">>Handjobs
$cur_slave.handjob<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.blowjob_tracker / $cur_slave.blowjob_tracker_limit<br>Max: $cur_slave.blowjob_limit">>Blowjobs
$cur_slave.blowjob<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.titjob_tracker / $cur_slave.titjob_tracker_limit<br>Max: $cur_slave.titjob_limit">>Titjobs
$cur_slave.titjob<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.footjob_tracker / $cur_slave.footjob_tracker_limit<br>Max: $cur_slave.footjob_limit">>Footjobs
$cur_slave.footjob<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.missionary_tracker / $cur_slave.missionary_tracker_limit<br>Max: $cur_slave.missionary_limit">>Missionary
$cur_slave.missionary<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.cowgirl_tracker / $cur_slave.cowgirl_tracker_limit<br>Max: $cur_slave.cowgirl_limit">>Cowgirl
$cur_slave.cowgirl<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.doggy_tracker / $cur_slave.doggy_tracker_limit<br>Max: $cur_slave.doggy_limit">>Doggy
$cur_slave.doggy<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.anal_tracker / $cur_slave.anal_tracker_limit<br>Max: $cur_slave.anal_limit">>Anal
$cur_slave.anal<</hovertip>>
</div>\
</div>\
</div>\
<div class="button-container-slave">\
<div class="button-box-slave">\
<div class="purplebutton">\
<span id="1"><<button "Jobs ^^1^^" "Assign Slave Job">><</button>></span>
</div>\
</div>\
<div class="button-box-slave">\
<<if $cur_slave.class_cd > 0 || $cur_slave.quest_cd > 0 || $cur_slave.disobedient === true || $pc_cur_energy < 1 || $cur_slave.dayoff_bool === true || ($cur_slave.injured === true && !$pc_blessing_list.includes("Rigorous Regiment"))>>\
<div class="slaveoffbutton">\
<<button "Train">><</button>>
</div>\
<<else>>\
<div class="purplebutton">\
<span id="2"><<button "Train ^^2^^" "Private Training">><<set $training_sex_type to "">><</button>></span>
</div>\
<</if>>\
</div>\
<div class="button-box-slave">\
<<if $cur_slave.disobedient === false || $cur_slave.injured === true || $pc_cur_energy < 1>>\
<div class="slaveoffbutton">\
<<button "Discipline">><</button>>
</div>\
<<else>>\
<div class="purplebutton">\
<span id="3"><<button "Discipline ^^3^^" "Discipline Slave">><</button>></span>
</div>\
<</if>>\
</div>\
<div class="button-box-slave">\
<<if $cur_slave.scolded_bool === true || $cur_slave.disobedient === true || $cur_slave.injured === true || $cur_slave.class_cd > 0 || $cur_slave.quest_cd > 0 || $cur_slave.dayoff_bool === true>>\
<div class="slaveoffbutton">\
<<button "Scold">><</button>>
</div>\
<<else>>\
<div class="purplebutton">\
<span id="4"><<button "Scold ^^4^^" "Slave Room">><<set $cur_slave.scolded_bool to true>><</button>></span>
</div>\
<</if>>\
</div>\
<div class="button-box-slave">\
<<if $cur_slave.scolded_bool === true || $cur_slave.disobedient === true || $cur_slave.injured === true || $cur_slave.class_cd > 0 || $cur_slave.quest_cd > 0 || $cur_slave.dayoff_bool === true>>\
<div class="slaveoffbutton">\
<<button "Day Off">><</button>>
</div>\
<<else>>\
<div class="purplebutton">\
<span id="5"><<button "Day Off ^^5^^" "Slave Room">><<set $cur_slave.dayoff_bool to true>><<set $cur_slave.total_daysoff++>><</button>></span>
</div>\
<</if>>\
</div>\
<div class="button-box-slave purplebutton">\
<span id="6"><<button "View Skill/Stat ^^6^^">>\
<<if $slaveroom_page === "record">>\
<<set $slaveroom_page to "skill">>\
<<replace '.rec-skill-container-slave' t8n>><div class="rec-titlebox-slave">Sex Skills</div><div class="skill-cell-slave"><<hovertip "EXP: $cur_slave.handjob_tracker / $cur_slave.handjob_tracker_limit<br>Max: $cur_slave.handjob_limit">>Handjobs<br>$cur_slave.handjob<</hovertip>></div><div class="skill-cell-slave"><<hovertip "EXP: $cur_slave.blowjob_tracker / $cur_slave.blowjob_tracker_limit<br>Max: $cur_slave.blowjob_limit">>Blowjobs<br>$cur_slave.blowjob<</hovertip>></div><div class="skill-cell-slave"><<hovertip "EXP: $cur_slave.titjob_tracker / $cur_slave.titjob_tracker_limit<br>Max: $cur_slave.titjob_limit">>Titjobs<br>$cur_slave.titjob<</hovertip>></div><div class="skill-cell-slave"><<hovertip "EXP: $cur_slave.footjob_tracker / $cur_slave.footjob_tracker_limit<br>Max: $cur_slave.footjob_limit">>Footjobs<br>$cur_slave.footjob<</hovertip>></div><div class="skill-cell-slave"><<hovertip "EXP: $cur_slave.missionary_tracker / $cur_slave.missionary_tracker_limit<br>Max: $cur_slave.missionary_limit">>Missionary<br>$cur_slave.missionary<</hovertip>></div><div class="skill-cell-slave"><<hovertip "EXP: $cur_slave.cowgirl_tracker / $cur_slave.cowgirl_tracker_limit<br>Max: $cur_slave.cowgirl_limit">>Cowgirl<br>$cur_slave.cowgirl<</hovertip>></div><div class="skill-cell-slave"><<hovertip "EXP: $cur_slave.doggy_tracker / $cur_slave.doggy_tracker_limit<br>Max: $cur_slave.doggy_limit">>Doggy<br>$cur_slave.doggy<</hovertip>></div><div class="skill-cell-slave"><<hovertip "EXP: $cur_slave.anal_tracker / $cur_slave.anal_tracker_limit<br>Max: $cur_slave.anal_limit">>Anal<br>$cur_slave.anal<</hovertip>></div>\
<</replace>>\
<<elseif $slaveroom_page === "skill">>\
<<set $slaveroom_page to "record">>\
<<replace '.rec-skill-container-slave' t8n>><div class="rec-titlebox-slave">Records</div><div class="rec-cell-slave"><u>Days Owned</u><br>$cur_slave.total_days</div><div class="rec-cell-slave"><u>Days Off</u><br>$cur_slave.total_daysoff</div><div class="rec-cell-slave"><u>Days Injured</u><br>$cur_slave.total_injured</div><div class="rec-cell-slave"><u>Jobs Done</u><br>$cur_slave.total_jobs</div><div class="rec-cell-slave"><u>Quests Completed</u><br>$cur_slave.total_quests</div><div class="rec-cell-slave"><u>Classes Passed</u><br>$cur_slave.total_classes</div><div class="rec-cell-slave"><u>Times Trained</u><br>$cur_slave.total_trainings</div><div class="rec-cell-slave"><u>Times Disciplined</u><br>$cur_slave.total_disciplinings</div><div class="rec-cell-slave"><u>Gold Earned</u><br>$cur_slave.total_gold</div><div class="rec-cell-slave"><u>Treasures Received</u><br>$cur_slave.total_treasures</div><div class="rec-cell-slave"><u>EXP Given</u><br>$cur_slave.total_exp</div><div class="rec-cell-slave"><u>Reputation Gained</u><br>$cur_slave.total_reputation</div>\
<</replace>>\
<</if>>\
<</button>></span>
</div>\
</div>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Slave Room Manager]]>><<set $slave_room_list[$cur_slave_num] to $cur_slave>><<unset $slaveroom_page, $cur_slave, $cur_slave_num>><</button>></span>
</div>\<<silently>>
* Rep Lost *
<<set _rep_lost to Math.clamp(Math.round($captured_girl_list[$cur_slave_num].reputation * setup.rep_mult) * $dungeon_rank, setup.min_rep, setup.max_rep)>>
* Set Threat Gained *
<<set _threat_gained to Math.clamp(Math.round($captured_girl_list[$cur_slave_num].threat * setup.threat_mult * $diffThreatMod), setup.min_threat, setup.max_threat)>>
DRAGON ATTACK EVENT
<<if $current_event.event === true && $current_event.name === setup.dragon_attack.name>>
<<set _threat_gained to Math.round(_threat_gained * setup.dragon_attack.float)>>
<</if>>
* Slave Regulator *
<<if $pc_blessing_list.includes("Slave Regulator")>>
<<set _regulator_amount to Math.round($cur_slave.cur_stress * setup.blessing_00_1.float)>>
<<else>>
<<set _regulator_amount to 0>>
<</if>>
*Find Next Open Index*
<<set _index_list to []>>
<<for _z = 0; _z < $slave_room_list.length; _z++>>
<<if $slave_room_list[_z].room_type === "Slave">>
<<set _index_list.push($slave_room_list[_z].index)>>
<</if>>
<</for>>
<<for _z = 0; _z < setup.index_limit; _z++>>
<<if !_index_list.includes(_z)>>
<<set $cur_slave.index to _z>>
INDEX SET TO _z
<<break>>
<</if>>
<</for>>
<</silently>>\
<div class="section">\
<div class="cardholder-picside">\
<div class="picbox-inforoom-violet">\
<div class="buttonbox-slaveroom">\
</div>\
<div class="titlebox-abovepic-slaveroom">\
Enslaving Raider
</div>\
<div class="buttonbox-slaveroom">\
</div>\
<div class="textbox-abovepic-slaveroom">\
<strong>$cur_slave.name</strong>
</div>\
<div class="textbox-abovepic-slaveroom">\
Upkeep: <span class="gold">$cur_slave.upkeep Gold</span>
</div>\
<div class="picbox-slaveroom">\
$cur_slave.body_pic
</div>\
<div class="statusbox-belowpic-slaveroom">\
<<if $cur_slave.injured === true>>\
<<hovertip "<<-setup.slave_statuses.injured.tooltip>>">><<-setup.slave_statuses.injured.icon>><</hovertip>>\
<</if>>\
<<if $cur_slave.disobedient === true>>\
<<hovertip "<<-setup.slave_statuses.disobedient.tooltip>>">><<-setup.slave_statuses.disobedient.icon>><</hovertip>>\
<</if>>\
<<if $cur_slave.scolded_bool === true>>\
<<hovertip "<<-setup.slave_statuses.scolded.tooltip>>">><<-setup.slave_statuses.scolded.icon>><</hovertip>>\
<</if>>\
<<if $cur_slave.dayoff_bool === true>>\
<<hovertip "<<-setup.slave_statuses.dayoff.tooltip>>">><<-setup.slave_statuses.dayoff.icon>><</hovertip>>\
<</if>>\
</div>\
</div>\
</div>\
<div class="cardholder-infoside">\
<div class="textbox-inforoom-violet">\
<div class="status-textbox-slave">\
WORDS WORDS WORDS
</div>\
<div class="stats-container-slave">\
<div class="stats-titlebox-slave">\
Stats
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.love.tooltip>>">><<-setup.slave_stats.love.icon>><</hovertip>>
<<hovertip "Max Love: <<-$cur_slave.love_limit>>">><span style="color:crimson">$cur_slave.love</span><</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.obedience.tooltip>>">><<-setup.slave_stats.obedience.icon>><</hovertip>>
<<hovertip "Max Obedience: <<-$cur_slave.obedience_limit>>">><span style="color:cyan">$cur_slave.obedience</span><</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.libido.tooltip>>">><<-setup.slave_stats.libido.icon>><</hovertip>>
<<hovertip "Max Libido: <<-$cur_slave.libido_limit>>">><span style="color:fuchsia">$cur_slave.libido</span><</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.strength.tooltip>>">><<-setup.slave_stats.strength.icon>><</hovertip>>
<<hovertip "Max Strength: <<-$cur_slave.strength_limit>>">><span style="color:orange">$cur_slave.strength</span><</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.intelligence.tooltip>>">><<-setup.slave_stats.intelligence.icon>><</hovertip>>
<<hovertip "Max Intelligence: <<-$cur_slave.intelligence_limit>>">><span style="color:darkorchid">$cur_slave.intelligence</span><</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.stress.tooltip>>">><<-setup.slave_stats.stress.icon>><</hovertip>>
<strong><span style="color:slategray"><<- $cur_slave.cur_stress - _regulator_amount>></span></strong>
</div>\
<div class="stats-titlebox-slave">\
Traits
</div>\
<div class="stats-bigcell-slave">\
<<for _t = 0; _t < $cur_slave.traits.length; _t++>>\
<<print '<span style="color:'+$cur_slave.traits[_t].color+'"><<hovertip "$cur_slave.traits[_t].tooltip">>$cur_slave.traits[_t].name<</hovertip>></span>'>><<if _t + 1 < $cur_slave.traits.length>>, <</if>>\
<</for>>\
</div>\
</div>\
<div class="rec-skill-container-slave">\
<div class="rec-titlebox-slave">\
Sex Skills
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.handjob_tracker / $cur_slave.handjob_tracker_limit<br>Max: $cur_slave.handjob_limit">>Handjobs
$cur_slave.handjob<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.blowjob_tracker / $cur_slave.blowjob_tracker_limit<br>Max: $cur_slave.blowjob_limit">>Blowjobs
$cur_slave.blowjob<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.titjob_tracker / $cur_slave.titjob_tracker_limit<br>Max: $cur_slave.titjob_limit">>Titjobs
$cur_slave.titjob<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.footjob_tracker / $cur_slave.footjob_tracker_limit<br>Max: $cur_slave.footjob_limit">>Footjobs
$cur_slave.footjob<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.missionary_tracker / $cur_slave.missionary_tracker_limit<br>Max: $cur_slave.missionary_limit">>Missionary
$cur_slave.missionary<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.cowgirl_tracker / $cur_slave.cowgirl_tracker_limit<br>Max: $cur_slave.cowgirl_limit">>Cowgirl
$cur_slave.cowgirl<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.doggy_tracker / $cur_slave.doggy_tracker_limit<br>Max: $cur_slave.doggy_limit">>Doggy
$cur_slave.doggy<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.anal_tracker / $cur_slave.anal_tracker_limit<br>Max: $cur_slave.anal_limit">>Anal
$cur_slave.anal<</hovertip>>
</div>\
</div>\
</div>\
<div class="linkbox-stats">\
<div class="linkbox-text">\
<u><strong>Enslave $cur_slave.name?</strong></u>
Enslaving her will lower your Reputation by <span style="color:red">_rep_lost</span> and increase your Threat by <span style="color:red">_threat_gained</span>.
<<silently>>\
SET LINKS
<<if $slave_girl_list.length === 1>>
<<set _link to "Daily Summary">>
<<else>>
<<set _link to "Slave List">>
<</if>>
<</silently>>\
<span id="forward"><<button [[Yes|_link]]>>\
<<silently>>\
SLAVE REGULATOR
<<set $cur_slave.cur_stress -= _regulator_amount>>
SET AS ENSLAVE BOOL TO TRUE
<<set $cur_slave.enslave_bool to true>>
CREATE REPORT
<<SlaveReport>>
ADD REPORT
<<set $cur_slave.report to clone(_report)>>
UPDATE REPORT
<<set $cur_slave.report.type to "Enslaved">>
ASSIGN TO ROOM
<<set $slave_room_list[$open_room] to $cur_slave>>
ASSIGN REP AND THREAT AMOUNTS
<<set $captured_girl_list[$cur_slave_num].threat to _threat_gained>>
<<set $captured_girl_list[$cur_slave_num].reputation to _rep_lost>>
SET ENSLAVED GIRL
<<set $enslaved_bool to true>>
<<set $enslaved_index to $open_room>>
<<set $enslaved_girl to $captured_girl_list[$cur_slave_num]>>
REMOVE FROM OTHER ARRAYS
<<set _removed to $slave_girl_list.deleteAt($cur_slave_num)>>
<<set _removed to $captured_girl_list.deleteAt($cur_slave_num)>>
UPDATE PLAYER STATS
<<set $pc_slaves_enslaved++>>
UNSET VARIABLES
<<unset $cur_slave, $cur_slave_num, $open_room>>
<</silently>>\
<</button>></span> <span id="back"><<button [[No|Slave List]]>><<unset $cur_slave, $cur_slave_num, $open_room>><</button>></span>
</div>\
</div>\
</div>\
</div>\<<if $visited_tasks === false>>\
<<silently>>\
* Variables *
<<set $visited_tasks to true>>
* Display *
<</silently>>\
<div id="section">\
<div id="tutorial-box">\
<div id="tutorial-pic">\
<div class="pic-tutorial">\
[img[images/mistress/face.jpg]]
</div>\
</div>\
<div id="tutorial-text">\
Tasks can be assigned to Slaves to to earn a variety of rewards as well as improve her own stats. They range from servicing you or your creatures to earn exp, working for others, prostituting, and exploring other dungeons. Most have to be claimed at the Adventurer's Guild before you can assign your slaves to them. There are a lot of things to go over about Slave's Task so check the Guidebook to learn all about them. Otherwise, experiment and have fun!
</div>\
</div>\
<div class="exit-link-right">\
[[Continue|Assign Slave Task]]
</div>\
</div>\
<<elseif $visited_tasks === true>>\
<<silently>>\
*Variables*
<<set _gold_mod to 0.1>> increase or decrease the amount of gold earned based on difficulty
<<set _exp_mod to 0.15>> increase or decrease the amount of exp earned based on difficulty
*Slave Trait Info*
<<set _cur_slave_trait_names to []>>
<<for _i = 0; _i < $cur_slave.positive_traits.length; _i++>>
<<set _trait to $cur_slave.positive_traits[_i].name>>
<<set _cur_slave_trait_names.push(_trait)>>
<</for>>
<<for _i = 0; _i < $cur_slave.negative_traits.length; _i++>>
<<set _trait to $cur_slave.negative_traits[_i].name>>
<<set _cur_slave_trait_names.push(_trait)>>
<</for>>
*Set Room List*
<<set $dungeon_floor_list to [$dungeon_room_1, $dungeon_room_2, $dungeon_room_3, $dungeon_room_4, $dungeon_room_5, $dungeon_room_6, $dungeon_room_7, $dungeon_room_8, $dungeon_room_9, $dungeon_room_10, $dungeon_room_11, $dungeon_room_12]>>
<</silently>>\
<<if $filter_tasks === false>>\
<div id="section">\
<div id="titlebox-tasklist">\
Available Tasks for $cur_slave.name
</div>\
<div id="linkbox-tasklist">\
<label><<checkbox "$service_filter" false true autocheck>> <span style="color:mediumseagreen">Service Tasks</span></label> | <label><<checkbox "$prostitution_filter" false true autocheck>> <span style="color:darkred">Prostitution Tasks</span></label> | <label><<checkbox "$escort_filter" false true autocheck>> <span style="color:rebeccapurple">Escort Tasks</span></label> | <label><<checkbox "$work_filter" false true autocheck>> <span style="color:dodgerblue">Work Tasks</span></label> | <label><<checkbox "$special_filter" false true autocheck>> <span style="color:gold">Special Tasks</span></label>
<<link [[Filter|Assign Slave Task]]>><<set $filter_tasks to true>><</link>>\
</div>\
<<for _i = 0; _i < $slave_task_service_list.length; _i++>>\
<<silently>>\
<<set _energy_req to $slave_task_service_list[_i].energy_req>>
<<set _love_req to $slave_task_service_list[_i].love_req>>
*Approximate EXP min and max values*
<<set _min_exp to Math.round($slave_task_service_list[_i].min_exp + ($slave_task_service_list[_i].exp_per_love * $cur_slave.love) + ($slave_task_service_list[_i].exp_per_libido * $cur_slave.libido))>>
<<set _max_exp to Math.round($slave_task_service_list[_i].max_exp + ($slave_task_service_list[_i].exp_per_love * $cur_slave.love) + ($slave_task_service_list[_i].exp_per_libido * $cur_slave.libido))>>
<<set _min_base_exp to Math.round($slave_task_service_list[_i].min_exp + ($slave_task_service_list[_i].exp_per_love * $cur_slave.love) + ($slave_task_service_list[_i].exp_per_libido * $cur_slave.libido))>>
<<set _max_base_exp to Math.round($slave_task_service_list[_i].max_exp + ($slave_task_service_list[_i].exp_per_love * $cur_slave.love) + ($slave_task_service_list[_i].exp_per_libido * $cur_slave.libido))>>
DIFFICULTY MOD
<<switch $difficulty>>
<<case "casual">>
<<set _amount to Math.round(_min_exp * _exp_mod)>>
<<set _min_exp += _amount>>
<<set _amount to Math.round(_min_base_exp * _exp_mod)>>
<<set _min_base_exp += _amount>>
<<set _amount to Math.round(_max_exp * _exp_mod)>>
<<set _max_exp += _amount>>
<<set _amount to Math.round(_max_base_exp * _exp_mod)>>
<<set _max_base_exp += _amount>>
<<case "brutal">>
<<set _amount to Math.round(_min_exp * _exp_mod)>>
<<set _min_exp -= _amount>>
<<set _amount to Math.round(_min_base_exp * _exp_mod)>>
<<set _min_base_exp -= _amount>>
<<set _amount to Math.round(_max_exp * _exp_mod)>>
<<set _max_exp -= _amount>>
<<set _amount to Math.round(_max_base_exp * _exp_mod)>>
<<set _max_base_exp -= _amount>>
<</switch>>
*Positive Service Traits*
SEXY
<<if _cur_slave_trait_names.includes("Sexy")>>
<<set _amount to Math.round(_min_exp * setup.sexy.float)>>
<<set _min_exp += _amount>>
<<set _amount to Math.round(_max_exp * setup.sexy.float)>>
<<set _max_exp += _amount>>
<</if>>
ENERGETIC
<<if _cur_slave_trait_names.includes("Energetic")>>
<<set _energy_req -= setup.energetic.int>>
<</if>>
LOVER
<<if _cur_slave_trait_names.includes("Lover")>>
<<set _min_exp *= setup.lover.mult>>
<<set _max_exp *=setup.lover.mult>>
<</if>>
*Negative Service Traits*
RUDE
<<if _cur_slave_trait_names.includes("Rude")>>
<<set _amount to Math.round(_min_exp * setup.rude.float)>>
<<set _min_exp -= _amount>>
<<set _amount to Math.round(_max_exp * setup.rude.float)>>
<<set _max_exp -= _amount>>
<</if>>
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _amount to Math.round(_min_exp * setup.loathing.float)>>
<<set _min_exp -= _amount>>
<<set _amount to Math.round(_max_exp * setup.loathing.float)>>
<<set _max_exp -= _amount>>
<</if>>
*Set Minimum Requirements*
<<if _love_req < 1>>
<<set _love_req to 1>>
<</if>>
<<if _energy_req < 1>>
<<set _energy_req to 1>>
<</if>>
<<if _min_exp < 1>>
<<set _mix_exp to 1>>
<</if>>
<<if _max_exp < 1>>
<<set _max_exp to 1>>
<</if>>
*Display*
<</silently>>\
<div id="cellholder-tasklist">\
<div id="cell-service-tasklist">\
<div id="cell-reqbox-tasklist">\
<<if _love_req < $slave_task_service_list[_i].love_req>>\
<span style="color:green">_love_req Love</span>
<<elseif _love_req > $slave_task_service_list[_i].love_req>>\
<span style="color:red">_love_req Love</span>
<<else>>\
_love_req Love
<</if>>\
</div>\
<div id="cell-energybox-tasklist">\
<<if _energy_req < $slave_task_service_list[_i].energy_req>>\
<span style="color:green">_energy_req Energy</span>
<<elseif _energy_req > $slave_task_service_list[_i].energy_req>>\
<span style="color:red">_energy_req Energy</span>
<<else>>\
_energy_req Energy
<</if>>\
</div>\
<div id="cell-titlebox-tasklist">\
$slave_task_service_list[_i].name
</div>\
<div id="cell-textbox-tasklist">\
Type: Service
Difficulty: $slave_task_service_list[_i].difficulty
<<if _min_exp > _min_base_exp>>\
Exp Given: <span style="color:green">_min_exp</span> ~ <span style="color:green">_max_exp</span>
<<elseif _min_exp < _min_base_exp>>\
EXP Given: <span style="color:red">_min_exp</span> ~ <span style="color:red">_max_exp</span>
<<else>>\
EXP Given: _min_exp ~ _max_exp
<</if>>\
</div>\
<div id="cell-linkbox-tasklist">\
<<capture _i>>\
<<link [[View Details|Service Task Details]]>><<set $cur_task to $slave_task_service_list[_i]>><</link>>
<</capture>>\
</div>\
<div id="cell-linkbox-tasklist">\
<<if _cur_slave_trait_names.includes("Insane") || _cur_slave_trait_names.includes("Lewd")>>\
<span style="color:red">Cannot Be Assigned</span>
<<elseif $cur_slave.love < _love_req>>\
<span style="color:red">Not Enough Love</span>\
<<elseif $cur_slave.cur_energy < _energy_req>>\
<span style="color:red">Not Enough Energy</span>\
<<else>>\
<<capture _i, _energy_req>>\
<<link [[Assign Task|$slave_task_service_list[_i].passage]]>><<set $cur_task to $slave_task_service_list[_i]>><<set $cur_slave.cur_energy -= _energy_req>><</link>>
<</capture>>\
<</if>>\
</div>\
</div>\
</div>\
<</for>>\
<<for _i = 0; _i < $dungeon_floor_list.length; _i++>>\
<<if $dungeon_floor_list[_i].type === "Monsters" || $dungeon_room_type === "Beasts" || $dungeon_floor_list[_i].type === "Insects" || $dungeon_floor_list[_i].type === "Humanoids">>\
<<silently>>\
*Variables*
<<set _obedience_req to $dungeon_floor_list[_i].obedience_req>>
<<set _energy_req to $dungeon_floor_list[_i].energy_req>>
<<set _base_min_exp to Math.round($dungeon_floor_list[_i].min_base_service_exp + ($cur_slave.libido * $dungeon_floor_list[_i].exp_per_libido))>>
<<set _base_max_exp to Math.round($dungeon_floor_list[_i].max_base_service_exp + ($cur_slave.libido * $dungeon_floor_list[_i].exp_per_libido))>>
<<set _min_exp to Math.round($dungeon_floor_list[_i].min_base_service_exp + ($cur_slave.libido * $dungeon_floor_list[_i].exp_per_libido))>>
<<set _max_exp to Math.round($dungeon_floor_list[_i].max_base_service_exp + ($cur_slave.libido * $dungeon_floor_list[_i].exp_per_libido))>>
DIFFICULTY MOD
<<switch $difficulty>>
<<case "casual">>
<<set _amount to Math.round(_min_exp * _exp_mod)>>
<<set _min_exp += _amount>>
<<set _amount to Math.round(_base_min_exp * _exp_mod)>>
<<set _base_min_exp += _amount>>
<<set _amount to Math.round(_max_exp * _exp_mod)>>
<<set _max_exp += _amount>>
<<set _amount to Math.round(_base_max_exp * _exp_mod)>>
<<set _base_max_exp += _amount>>
<<case "brutal">>
<<set _amount to Math.round(_min_exp * _exp_mod)>>
<<set _min_exp -= _amount>>
<<set _amount to Math.round(_base_min_exp * _exp_mod)>>
<<set _base_min_exp -= _amount>>
<<set _amount to Math.round(_max_exp * _exp_mod)>>
<<set _max_exp -= _amount>>
<<set _amount to Math.round(_base_max_exp * _exp_mod)>>
<<set _base_max_exp -= _amount>>
<</switch>>
*Positive Traits*
CARING
<<if _cur_slave_trait_names.includes("Caring")>>
<<set _obedience_req -= setup.caring.int>>
<<set _min_exp *= setup.caring.mult>>
<<set _max_exp *= setup.caring.mult>>
<</if>>
DISCIPLINED
<<if _cur_slave_trait_names.includes("Disciplined")>>
<<set _obedience_req -= setup.disciplined.int>>
<</if>>
ENERGETIC
<<if _cur_slave_trait_names.includes("Energetic")>>
<<set _energy_req -= setup.energetic.int>>
<</if>>
SEXY
<<if _cur_slave_trait_names.includes("Sexy")>>
<<set _amount to Math.round(_min_exp * setup.sexy.float)>>
<<set _min_exp += _amount>>
<<set _amount to Math.round(_max_exp * setup.sexy.float)>>
<<set _max_exp += _amount>>
<</if>>
*Negative Service Traits*
RUDE
<<if _cur_slave_trait_names.includes("Rude")>>
<<set _amount to Math.round(_min_exp * setup.rude.float)>>
<<set _min_exp -= _amount>>
<<set _amount to Math.round(_max_exp * setup.rude.float)>>
<<set _max_exp -= _amount>>
<</if>>
SCARED
<<if _cur_slave_trait_names.includes("Scared")>>
<<set _obedience_req += setup.scared.int>>
<</if>>
*Set Minimum Requirements*
<<if _obedience_req < 1>>
<<set _obedience_req to 1>>
<</if>>
<<if _energy_req < 1>>
<<set _energy_req to 1>>
<</if>>
<<if _min_exp < 1>>
<<set _mix_exp to 1>>
<</if>>
<<if _max_exp < 2>>
<<set _max_exp to 2>>
<</if>>
*Display*
<</silently>>\
<div id="cellholder-tasklist">\
<div id="cell-service-tasklist">\
<div id="cell-reqbox-tasklist">\
<<if _obedience_req < $dungeon_floor_list[_i].obedience_req>>\
<span style="color:green">_obedience_req Obedience</span>
<<elseif _obedience_req > $dungeon_floor_list[_i].obedience_req>>\
<span style="color:red">_obedience_req Obedience</span>
<<else>>\
_obedience_req Obedience
<</if>>\
</div>\
<div id="cell-energybox-tasklist">\
<<if _energy_req < $dungeon_floor_list[_i].energy_req>>\
<span style="color:green">_energy_req Energy</span>
<<elseif _energy_req > $dungeon_floor_list[_i].energy_req>>\
<span style="color:red">_energy_req Energy</span>
<<else>>\
_energy_req Energy
<</if>>\
</div>\
<div id="cell-titlebox-tasklist">\
<<switch _i>>\
<<case 0>>\
$dungeon_floor_list[_i].name Room One
<<case 1>>\
$dungeon_floor_list[_i].name Room Two
<<case 2>>\
$dungeon_floor_list[_i].name Room Three
<<case 3>>\
$dungeon_floor_list[_i].name Room Four
<<case 4>>\
$dungeon_floor_list[_i].name Room Five
<<case 5>>\
$dungeon_floor_list[_i].name Room Six
<<case 6>>\
$dungeon_floor_list[_i].name Room Seven
<<case 7>>\
$dungeon_floor_list[_i].name Room Eight
<<case 8>>\
$dungeon_floor_list[_i].name Room Nine
<<case 9>>\
$dungeon_floor_list[_i].name Room Ten
<<case 10>>\
$dungeon_floor_list[_i].name Room Eleven
<<case 11>>\
$dungeon_floor_list[_i].name Room Twelve
<</switch>>\
</div>\
<div id="cell-textbox-tasklist">\
Type: Service
Difficulty: $dungeon_floor_list[_i].difficulty
<<if _base_min_exp < _min_exp>>\
EXP Given: <span style="color:green">_min_exp</span> ~ <span style="color:green">_max_exp</span>
<<elseif _base_min_exp > _min_exp>>\
EXP Given: <span style="color:red">_min_exp</span> ~ <span style="color:red">_max_exp</span>
<<else>>\
EXP Given: _min_exp ~ _max_exp
<</if>>\
</div>\
<div id="cell-linkbox-tasklist">\
<<capture _i>>\
<<link [[View Details|Creature Service Task Details]]>><<set $cur_task to $dungeon_floor_list[_i]>><</link>>
<</capture>>\
</div>\
<div id="cell-linkbox-tasklist">\
<<if _cur_slave_trait_names.includes("Insane") || _cur_slave_trait_names.includes("Lewd")>>\
<span style="color:red">Cannot Be Assigned</span>
<<elseif $cur_slave.cur_energy < _energy_req>>\
<span style="color:red">Not Enough Energy</span>
<<elseif $cur_slave.obedience < _obedience_req>>\
<span style="color:red">Not Enough Obedience</span>
<<elseif $dungeon_floor_list[_i].level === $creature_levelcap>>\
<span style="color:red">Reached Max Level</span>
<<else>>\
<<capture _i, _energy_req>>\
<<link [[Assign Task|$dungeon_floor_list[_i].service_passage]]>><<set $cur_room to $dungeon_floor_list[_i]>><<set $room_num to _i + 1>><<set $cur_slave.cur_energy -= _energy_req>><</link>>\
<</capture>>\
<</if>>\
</div>\
</div>\
</div>\
<</if>>\
<</for>>\
<<for _i = 0; _i < $slave_task_prostitution_list.length; _i++>>\
<<silently>>\
<<set _energy_req to $slave_task_prostitution_list[_i].energy_req>>
<<set _obedience_req to $slave_task_prostitution_list[_i].obedience_req>>
*Positive Prostitution Traits*
DISCIPLINED
<<if _cur_slave_trait_names.includes("Disciplined")>>
<<set _obedience_req -= setup.disciplined.int>>
<</if>>
ENERGETIC
<<if _cur_slave_trait_names.includes("Energetic")>>
<<set _energy_req -= setup.energetic.int>>
<</if>>
*Negative Prostitution Traits*
*Set Minimum Requirements*
<<if _obedience_req < 1>>
<<set _obedience_req to 1>>
<</if>>
<<if _energy_req < 1>>
<<set _energy_req to 1>>
<</if>>
*Calc Earning Amount*
<<switch $slave_task_prostitution_list[_i].seeking>>
<<case "Love">>
<<set _slave_stat to $cur_slave.love>>
<<case "Obedience">>
<<set _slave_stat to $cur_slave.obedience>>
<<case "Intelligence">>
<<set _slave_stat to $cur_slave.intelligence>>
<<case "Libido">>
<<set _slave_stat to $cur_slave.libido>>
<</switch>>
<<set _gold_amount to Math.round($slave_task_prostitution_list[_i].gold_per_libido * _slave_stat)>>
<<set _base_min_gold to _gold_amount + $slave_task_prostitution_list[_i].min_gold>>
<<set _base_max_gold to _gold_amount + $slave_task_prostitution_list[_i].max_gold>>
<<set _min_gold to _gold_amount + $slave_task_prostitution_list[_i].min_gold>>
<<set _max_gold to _gold_amount + $slave_task_prostitution_list[_i].max_gold>>
* Calc Traits *
BEAUTIFUL TRAIT
<<if _cur_slave_trait_names.includes("Beautiful")>>
<<set _min_gold *= setup.beautiful.mult>>
<<set _max_gold *= setup.beautiful.mult>>
<</if>>
AWKWARD TRAIT
<<if _cur_slave_trait_names.includes("Awkward")>>
<<set _amount to Math.round(_base_min_gold * setup.awkward.float)>>
<<set _min_gold -= _amount>>
<<set _amount to Math.round(_base_max_gold * setup.awkward.float)>>
<<set _max_gold -= _amount>>
<</if>>
DIFFICULTY MOD
<<set _amount to Math.round(_base_max_gold * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _base_max_gold += _amount>>
<<case "brutal">>
<<set _base_max_gold -= _amount>>
<</switch>>
<<set _amount to Math.round(_base_min_gold * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _base_min_gold += _amount>>
<<case "brutal">>
<<set _base_min_gold -= _amount>>
<</switch>>
<<set _amount to Math.round(_max_gold * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _max_gold += _amount>>
<<case "brutal">>
<<set _max_gold -= _amount>>
<</switch>>
<<set _amount to Math.round(_min_gold * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _min_gold += _amount>>
<<case "brutal">>
<<set _min_gold -= _amount>>
<</switch>>
<</silently>>\
<div id="cellholder-tasklist">\
<div id="cell-prostitution-tasklist">\
<div id="cell-reqbox-tasklist">\
<<if _obedience_req < $slave_task_prostitution_list[_i].obedience_req>>\
<span style="color:green">_obedience_req Obedience</span>
<<elseif _obedience_req > $slave_task_prostitution_list[_i].obedience_req>>\
<span style="color:red">_obedience_req Obedience</span>
<<else>>\
_obedience_req Obedience
<</if>>\
</div>\
<div id="cell-energybox-tasklist">\
<<if _energy_req < $slave_task_prostitution_list[_i].energy_req>>\
<span style="color:green">_energy_req Energy</span>
<<elseif _energy_req > $slave_task_prostitution_list[_i].energy_req>>\
<span style="color:red">_energy_req Energy</span>
<<else>>\
_energy_req Energy
<</if>>\
</div>\
<div id="cell-titlebox-tasklist">\
$slave_task_prostitution_list[_i].name
</div>\
<div id="cell-textbox-tasklist">\
Type: $slave_task_prostitution_list[_i].type
Difficulty: $slave_task_prostitution_list[_i].difficulty
<<if _base_min_gold > _min_gold>>\
Gold Earned: <span style="color:red">_min_gold</span> ~ <span style="color:red">_max_gold</span>
<<elseif _base_min_gold < _min_gold>>\
Gold Earned: <span style="color:green">_min_gold</span> ~ <span style="color:green">_max_gold</span>
<<else>>\
Gold Earned: _min_gold ~ _max_gold
<</if>>\
</div>\
<div id="cell-linkbox-tasklist">\
<<capture _i>>\
<<link [[View Details|Prostitution Task Details]]>><<set $cur_task to $slave_task_prostitution_list[_i]>><</link>>
<</capture>>\
</div>\
<div id="cell-linkbox-tasklist">\
<<if _cur_slave_trait_names.includes("Snobby")>>\
<span style="color:red">Cannot Be Assigned</span>\
<<elseif $cur_slave.obedience < _obedience_req>>\
<span style="color:red">Not Enough Obedience</span>\
<<elseif $cur_slave.cur_energy < _energy_req>>\
<span style="color:red">Not Enough Energy</span>\
<<else>>\
<<capture _i, _energy_req>>\
<<link [[Assign Task|$slave_task_prostitution_list[_i].passage]]>><<set $cur_task to $slave_task_prostitution_list[_i]>><<set $cur_slave.cur_energy -= _energy_req>><</link>>
<</capture>>\
<</if>>\
</div>\
</div>\
</div>\
<</for>>\
<<for _i = 0; _i < $slave_task_escort_list.length; _i++>>\
<<silently>>\
<<set _energy_req to $slave_task_escort_list[_i].energy_req>>
<<set _obedience_req to $slave_task_escort_list[_i].obedience_req>>
*Positive Escort Traits*
DISCIPLINED
<<if _cur_slave_trait_names.includes("Disciplined")>>
<<set _obedience_req -= setup.disciplined.int>>
<</if>>
ENERGETIC
<<if _cur_slave_trait_names.includes("Energetic")>>
<<set _energy_req -= setup.energetic.int>>
<</if>>
*Negative Prostitution Traits*
*Set Minimum Requirements*
<<if _obedience_req < 1>>
<<set _obedience_req to 1>>
<</if>>
<<if _energy_req < 1>>
<<set _energy_req to 1>>
<</if>>
*Calc Earning Amount*
<<switch $slave_task_escort_list[_i].seeking>>
<<case "Love">>
<<set _slave_stat to $cur_slave.love>>
<<case "Obedience">>
<<set _slave_stat to $cur_slave.obedience>>
<<case "Intelligence">>
<<set _slave_stat to $cur_slave.intelligence>>
<<case "Strength">>
<<set _slave_stat to $cur_slave.strength>>
<<case "Libido">>
<<set _slave_stat to $cur_slave.libido>>
<<case "Energy">>
<<set _slave_stat to $cur_slave.energy>>
<</switch>>
<<set _gold_amount to Math.round($slave_task_escort_list[_i].gold_per_stat * _slave_stat)>>
<<set _base_min_gold to _gold_amount + $slave_task_escort_list[_i].min_gold>>
<<set _base_max_gold to _gold_amount + $slave_task_escort_list[_i].max_gold>>
<<set _min_gold to _gold_amount + $slave_task_escort_list[_i].min_gold>>
<<set _max_gold to _gold_amount + $slave_task_escort_list[_i].max_gold>>
* Calc Traits *
BEAUTIFUL TRAIT
<<if _cur_slave_trait_names.includes("Beautiful")>>
<<set _min_gold *= setup.beautiful.mult>>
<<set _max_gold *= setup.beautiful.mult>>
<</if>>
INSECURE TRAIT
<<if _cur_slave_trait_names.includes("Insecure")>>
<<set _amount to Math.round(_base_min_gold * setup.insecure.float)>>
<<set _min_gold -= _amount>>
<<set _amount to Math.round(_base_max_gold * setup.insecure.float)>>
<<set _max_gold -= _amount>>
<</if>>
DIFFICULTY MOD
<<set _amount to Math.round(_base_max_gold * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _base_max_gold += _amount>>
<<case "brutal">>
<<set _base_max_gold -= _amount>>
<</switch>>
<<set _amount to Math.round(_base_min_gold * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _base_min_gold += _amount>>
<<case "brutal">>
<<set _base_min_gold -= _amount>>
<</switch>>
<<set _amount to Math.round(_max_gold * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _max_gold += _amount>>
<<case "brutal">>
<<set _max_gold -= _amount>>
<</switch>>
<<set _amount to Math.round(_min_gold * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _min_gold += _amount>>
<<case "brutal">>
<<set _min_gold -= _amount>>
<</switch>>
GROUP MULT
<<if $slave_task_escort_list[_i].num_of_clients > 1>>
<<set _base_min_gold *= $slave_task_escort_list[_i].num_of_clients>>
<<set _base_max_gold *= $slave_task_escort_list[_i].num_of_clients>>
<<set _min_gold *= $slave_task_escort_list[_i].num_of_clients>>
<<set _max_gold *= $slave_task_escort_list[_i].num_of_clients>>
<</if>>
<</silently>>\
<div id="cellholder-tasklist">\
<div id="cell-escort-tasklist">\
<div id="cell-reqbox-tasklist">\
<<if _obedience_req < $slave_task_escort_list[_i].obedience_req>>\
<span style="color:green">_obedience_req Obedience</span>
<<elseif _obedience_req > $slave_task_escort_list[_i].obedience_req>>\
<span style="color:red">_obedience_req Obedience</span>
<<else>>\
_obedience_req Obedience
<</if>>\
</div>\
<div id="cell-energybox-tasklist">\
<<if _energy_req < $slave_task_escort_list[_i].energy_req>>\
<span style="color:green">_energy_req Energy</span>
<<elseif _energy_req > $slave_task_escort_list[_i].energy_req>>\
<span style="color:red">_energy_req Energy</span>
<<else>>\
_energy_req Energy
<</if>>\
</div>\
<div id="cell-titlebox-tasklist">\
$slave_task_escort_list[_i].name
</div>\
<div id="cell-textbox-tasklist">\
Type: $slave_task_escort_list[_i].type
Difficulty: $slave_task_escort_list[_i].difficulty
<<if _base_min_gold > _min_gold>>\
Gold Earned: <span style="color:red">_min_gold</span> ~ <span style="color:red">_max_gold</span>
<<elseif _base_min_gold < _min_gold>>\
Gold Earned: <span style="color:green">_min_gold</span> ~ <span style="color:green">_max_gold</span>
<<else>>\
Gold Earned: _min_gold ~ _max_gold
<</if>>\
</div>\
<div id="cell-linkbox-tasklist">\
<<capture _i>>\
<<link [[View Details|Escort Task Details]]>><<set $cur_task to $slave_task_escort_list[_i]>><</link>>
<</capture>>\
</div>\
<div id="cell-linkbox-tasklist">\
<<if _cur_slave_trait_names.includes("Lewd")>>\
<span style="color:red">Cannot Be Assigned</span>\
<<elseif $cur_slave.obedience < _obedience_req>>\
<span style="color:red">Not Enough Obedience</span>\
<<elseif $cur_slave.cur_energy < _energy_req>>\
<span style="color:red">Not Enough Energy</span>\
<<else>>\
<<capture _i, _energy_req>>\
<<link [[Assign Task|Slave Room]]>><<set $cur_slave.busy to true>><<set $cur_slave.cur_task to $slave_task_escort_list[_i]>><<set $cur_slave.cur_task_cd to $slave_task_escort_list[_i].days>><<set $cur_slave.cur_energy -= _energy_req>><<set $guild_task_list.push($slave_task_escort_list[_i])>><<set _delete to $slave_task_escort_list.deleteAt(_i)>>\
<<switch $cur_slave_num>>\
<<case 0>>\
<<set $pc_bedroom to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 1>>\
<<set $slave_room_1 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 2>>\
<<set $slave_room_2 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 3>>\
<<set $slave_room_3 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 4>>\
<<set $slave_room_4 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 5>>\
<<set $slave_room_5 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 6>>\
<<set $slave_room_6 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 7>>\
<<set $slave_room_7 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 8>>\
<<set $slave_room_8 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 9>>\
<<set $slave_room_9 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 10>>\
<<set $slave_room_10 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<</switch>>\
<</link>>\
<</capture>>\
<</if>>\
</div>\
</div>\
</div>\
<</for>>\
<<for _i = 0; _i < $slave_task_work_list.length; _i++>>\
<<silently>>\
<<set _energy_req to $slave_task_work_list[_i].energy_req>>
<<set _obedience_req to $slave_task_work_list[_i].obedience_req>>
*Positive Prostitution Traits*
DISCIPLINED
<<if _cur_slave_trait_names.includes("Disciplined")>>
<<set _obedience_req -= setup.disciplined.int>>
<</if>>
ENERGETIC
<<if _cur_slave_trait_names.includes("Energetic")>>
<<set _energy_req -= setup.energetic.int>>
<</if>>
*Negative Prostitution Traits*
LAZY
<<if _cur_slave_trait_names.includes("Lazy")>>
<<set _energy_req += setup.lazy.int>>
<</if>>
*Set Minimum Requirements*
<<if _obedience_req < 1>>
<<set _obedience_req to 1>>
<</if>>
<<if _energy_req < 1>>
<<set _energy_req to 1>>
<</if>>
*Calc Earning Amount*
<<switch $slave_task_work_list[_i].seeking>>
<<case "Love">>
<<set _slave_stat to $cur_slave.love>>
<<case "Obedience">>
<<set _slave_stat to $cur_slave.obedience>>
<<case "Libido">>
<<set _slave_stat to $cur_slave.libido>>
<<case "Strength">>
<<set _slave_stat to $cur_slave.strength>>
<<case "Intelligence">>
<<set _slave_stat to $cur_slave.intelligence>>
<<case "Energy">>
<<set _slave_stat to $cur_slave.energy>>
<</switch>>
<<set _gold_amount to Math.round($slave_task_work_list[_i].gold_per_stat * _slave_stat)>>
<<set _base_min_gold to _gold_amount + $slave_task_work_list[_i].min_gold>>
<<set _base_max_gold to _gold_amount + $slave_task_work_list[_i].max_gold>>
<<set _min_gold to _gold_amount + $slave_task_work_list[_i].min_gold>>
<<set _max_gold to _gold_amount + $slave_task_work_list[_i].max_gold>>
* Calc Traits *
BRIGHT TRAIT
<<if _cur_slave_trait_names.includes("Bright")>>
<<set _amount to Math.round(_base_min_gold * setup.bright.float)>>
<<set _min_gold += _amount>>
<<set _amount to Math.round(_base_max_gold * setup.bright.float)>>
<<set _max_gold += _amount>>
<</if>>
DIFFICULTY MOD
<<set _amount to Math.round(_base_max_gold * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _base_max_gold += _amount>>
<<case "brutal">>
<<set _base_max_gold -= _amount>>
<</switch>>
<<set _amount to Math.round(_base_min_gold * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _base_min_gold += _amount>>
<<case "brutal">>
<<set _base_min_gold -= _amount>>
<</switch>>
<<set _amount to Math.round(_max_gold * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _max_gold += _amount>>
<<case "brutal">>
<<set _max_gold -= _amount>>
<</switch>>
<<set _amount to Math.round(_min_gold * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _min_gold += _amount>>
<<case "brutal">>
<<set _min_gold -= _amount>>
<</switch>>
<</silently>>\
<div id="cellholder-tasklist">\
<div id="cell-work-tasklist">\
<div id="cell-reqbox-tasklist">\
<<if _obedience_req < $slave_task_work_list[_i].obedience_req>>\
<span style="color:green">_obedience_req Obedience</span>
<<elseif _obedience_req > $slave_task_work_list[_i].obedience_req>>\
<span style="color:red">_obedience_req Obedience</span>
<<else>>\
_obedience_req Obedience
<</if>>\
</div>\
<div id="cell-energybox-tasklist">\
<<if _energy_req < $slave_task_work_list[_i].energy_req>>\
<span style="color:green">_energy_req Energy</span>
<<elseif _energy_req > $slave_task_work_list[_i].energy_req>>\
<span style="color:red">_energy_req Energy</span>
<<else>>\
_energy_req Energy
<</if>>\
</div>\
<div id="cell-titlebox-tasklist">\
$slave_task_work_list[_i].name
</div>\
<div id="cell-textbox-tasklist">\
Type: $slave_task_work_list[_i].type
Difficulty: $slave_task_work_list[_i].difficulty
<<if _base_min_gold > _min_gold>>\
Gold Earned: <span style="color:red">_min_gold</span> ~ <span style="color:red">_max_gold</span>
<<elseif _base_min_gold < _min_gold>>\
Gold Earned: <span style="color:green">_min_gold</span> ~ <span style="color:green">_max_gold</span>
<<else>>\
Gold Earned: _min_gold ~ _max_gold
<</if>>\
</div>\
<div id="cell-linkbox-tasklist">\
<<capture _i>>\
<<link [[View Details|Work Task Details]]>><<set $cur_task to $slave_task_work_list[_i]>><</link>>
<</capture>>\
</div>\
<div id="cell-linkbox-tasklist">\
<<if _cur_slave_trait_names.includes("Lewd")>>\
<span style="color:red">Cannot Be Assigned</span>\
<<elseif $cur_slave.obedience < _obedience_req>>\
<span style="color:red">Not Enough Obedience</span>\
<<elseif $cur_slave.cur_energy < _energy_req>>\
<span style="color:red">Not Enough Energy</span>\
<<else>>\
<<if $slave_task_work_list[_i].days > 0>>\
<<capture _i, _energy_req>>\
<<link [[Assign Task|Slave Room]]>><<set $cur_slave.busy to true>><<set $cur_slave.cur_task to $slave_task_work_list[_i]>><<set $cur_slave.cur_task_cd to $slave_task_work_list[_i].days>><<set $cur_slave.cur_energy -= _energy_req>><<set $guild_task_list.push($slave_task_work_list[_i])>><<set _delete to $slave_task_work_list.deleteAt(_i)>>\
<<switch $cur_slave_num>>\
<<case 1>>\
<<set $slave_room_1 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 2>>\
<<set $slave_room_2 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 3>>\
<<set $slave_room_3 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 4>>\
<<set $slave_room_4 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 5>>\
<<set $slave_room_5 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 6>>\
<<set $slave_room_6 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 7>>\
<<set $slave_room_7 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 8>>\
<<set $slave_room_8 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 9>>\
<<set $slave_room_9 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 10>>\
<<set $slave_room_10 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<</switch>>\
<</link>>\
<</capture>>\
<<else>>\
<<capture _i, _energy_req>>\
<<link [[Assign Task|$slave_task_work_list[_i].passage]]>><<set $cur_task to $slave_task_work_list[_i]>><<set $cur_slave.cur_energy -= _energy_req>><<set $guild_task_list.push($slave_task_work_list[_i])>><<set _delete to $slave_task_work_list.deleteAt(_i)>><</link>>
<</capture>>\
<</if>>\
<</if>>\
</div>\
</div>\
</div>\
<</for>>\
</div>\
<<else>>\
<div id="section">\
<div id="titlebox-tasklist">\
Available Tasks for $cur_slave.name
</div>\
<div id="linkbox-tasklist">\
<<link [[Reset Filter|Assign Slave Task]]>><<set $filter_tasks to false>><</link>>\
</div>\
<<if $service_filter === true>>\
<<for _i = 0; _i < $slave_task_service_list.length; _i++>>\
<<silently>>\
<<set _energy_req to $slave_task_service_list[_i].energy_req>>
<<set _love_req to $slave_task_service_list[_i].love_req>>
*Approximate EXP min and max values*
<<set _min_exp to Math.round($slave_task_service_list[_i].min_exp + ($slave_task_service_list[_i].exp_per_love * $cur_slave.love) + ($slave_task_service_list[_i].exp_per_libido * $cur_slave.libido))>>
<<set _max_exp to Math.round($slave_task_service_list[_i].max_exp + ($slave_task_service_list[_i].exp_per_love * $cur_slave.love) + ($slave_task_service_list[_i].exp_per_libido * $cur_slave.libido))>>
<<set _min_base_exp to Math.round($slave_task_service_list[_i].min_exp + ($slave_task_service_list[_i].exp_per_love * $cur_slave.love) + ($slave_task_service_list[_i].exp_per_libido * $cur_slave.libido))>>
<<set _max_base_exp to Math.round($slave_task_service_list[_i].max_exp + ($slave_task_service_list[_i].exp_per_love * $cur_slave.love) + ($slave_task_service_list[_i].exp_per_libido * $cur_slave.libido))>>
DIFFICULTY MOD
<<switch $difficulty>>
<<case "casual">>
<<set _amount to Math.round(_min_exp * _exp_mod)>>
<<set _min_exp += _amount>>
<<set _amount to Math.round(_min_base_exp * _exp_mod)>>
<<set _min_base_exp += _amount>>
<<set _amount to Math.round(_max_exp * _exp_mod)>>
<<set _max_exp += _amount>>
<<set _amount to Math.round(_max_base_exp * _exp_mod)>>
<<set _max_base_exp += _amount>>
<<case "brutal">>
<<set _amount to Math.round(_min_exp * _exp_mod)>>
<<set _min_exp -= _amount>>
<<set _amount to Math.round(_min_base_exp * _exp_mod)>>
<<set _min_base_exp -= _amount>>
<<set _amount to Math.round(_max_exp * _exp_mod)>>
<<set _max_exp -= _amount>>
<<set _amount to Math.round(_max_base_exp * _exp_mod)>>
<<set _max_base_exp -= _amount>>
<</switch>>
*Positive Service Traits*
SEXY
<<if _cur_slave_trait_names.includes("Sexy")>>
<<set _amount to Math.round(_min_exp * setup.sexy.float)>>
<<set _min_exp += _amount>>
<<set _amount to Math.round(_max_exp * setup.sexy.float)>>
<<set _max_exp += _amount>>
<</if>>
ENERGETIC
<<if _cur_slave_trait_names.includes("Energetic")>>
<<set _energy_req -= setup.energetic.int>>
<</if>>
LOVER
<<if _cur_slave_trait_names.includes("Lover")>>
<<set _min_exp *= setup.lover.mult>>
<<set _max_exp *=setup.lover.mult>>
<</if>>
*Negative Service Traits*
RUDE
<<if _cur_slave_trait_names.includes("Rude")>>
<<set _amount to Math.round(_min_exp * setup.rude.float)>>
<<set _min_exp -= _amount>>
<<set _amount to Math.round(_max_exp * setup.rude.float)>>
<<set _max_exp -= _amount>>
<</if>>
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _amount to Math.round(_min_exp * setup.loathing.float)>>
<<set _min_exp -= _amount>>
<<set _amount to Math.round(_max_exp * setup.loathing.float)>>
<<set _max_exp -= _amount>>
<</if>>
*Set Minimum Requirements*
<<if _love_req < 1>>
<<set _love_req to 1>>
<</if>>
<<if _energy_req < 1>>
<<set _energy_req to 1>>
<</if>>
<<if _min_exp < 1>>
<<set _mix_exp to 1>>
<</if>>
<<if _max_exp < 1>>
<<set _max_exp to 1>>
<</if>>
*Display*
<</silently>>\
<div id="cellholder-tasklist">\
<div id="cell-service-tasklist">\
<div id="cell-reqbox-tasklist">\
<<if _love_req < $slave_task_service_list[_i].love_req>>\
<span style="color:green">_love_req Love</span>
<<elseif _love_req > $slave_task_service_list[_i].love_req>>\
<span style="color:red">_love_req Love</span>
<<else>>\
_love_req Love
<</if>>\
</div>\
<div id="cell-energybox-tasklist">\
<<if _energy_req < $slave_task_service_list[_i].energy_req>>\
<span style="color:green">_energy_req Energy</span>
<<elseif _energy_req > $slave_task_service_list[_i].energy_req>>\
<span style="color:red">_energy_req Energy</span>
<<else>>\
_energy_req Energy
<</if>>\
</div>\
<div id="cell-titlebox-tasklist">\
$slave_task_service_list[_i].name
</div>\
<div id="cell-textbox-tasklist">\
Type: Service
Difficulty: $slave_task_service_list[_i].difficulty
<<if _min_exp > _min_base_exp>>\
Exp Given: <span style="color:green">_min_exp</span> ~ <span style="color:green">_max_exp</span>
<<elseif _min_exp < _min_base_exp>>\
EXP Given: <span style="color:red">_min_exp</span> ~ <span style="color:red">_max_exp</span>
<<else>>\
EXP Given: _min_exp ~ _max_exp
<</if>>\
</div>\
<div id="cell-linkbox-tasklist">\
<<capture _i>>\
<<link [[View Details|Service Task Details]]>><<set $cur_task to $slave_task_service_list[_i]>><</link>>
<</capture>>\
</div>\
<div id="cell-linkbox-tasklist">\
<<if _cur_slave_trait_names.includes("Insane") || _cur_slave_trait_names.includes("Lewd")>>\
<span style="color:red">Cannot Be Assigned</span>
<<elseif $cur_slave.love < _love_req>>\
<span style="color:red">Not Enough Love</span>\
<<elseif $cur_slave.cur_energy < _energy_req>>\
<span style="color:red">Not Enough Energy</span>\
<<else>>\
<<capture _i, _energy_req>>\
<<link [[Assign Task|$slave_task_service_list[_i].passage]]>><<set $cur_task to $slave_task_service_list[_i]>><<set $cur_slave.cur_energy -= _energy_req>><</link>>
<</capture>>\
<</if>>\
</div>\
</div>\
</div>\
<</for>>\
<<for _i = 0; _i < $dungeon_floor_list.length; _i++>>\
<<if $dungeon_floor_list[_i].type === "Monsters" || $dungeon_room_type === "Beasts" || $dungeon_floor_list[_i].type === "Insects" || $dungeon_floor_list[_i].type === "Humanoids">>\
<<silently>>\
*Variables*
<<set _obedience_req to $dungeon_floor_list[_i].obedience_req>>
<<set _energy_req to $dungeon_floor_list[_i].energy_req>>
<<set _base_min_exp to Math.round($dungeon_floor_list[_i].min_base_service_exp + ($cur_slave.libido * $dungeon_floor_list[_i].exp_per_libido))>>
<<set _base_max_exp to Math.round($dungeon_floor_list[_i].max_base_service_exp + ($cur_slave.libido * $dungeon_floor_list[_i].exp_per_libido))>>
<<set _min_exp to Math.round($dungeon_floor_list[_i].min_base_service_exp + ($cur_slave.libido * $dungeon_floor_list[_i].exp_per_libido))>>
<<set _max_exp to Math.round($dungeon_floor_list[_i].max_base_service_exp + ($cur_slave.libido * $dungeon_floor_list[_i].exp_per_libido))>>
DIFFICULTY MOD
<<switch $difficulty>>
<<case "casual">>
<<set _amount to Math.round(_min_exp * _exp_mod)>>
<<set _min_exp += _amount>>
<<set _amount to Math.round(_base_min_exp * _exp_mod)>>
<<set _base_min_exp += _amount>>
<<set _amount to Math.round(_max_exp * _exp_mod)>>
<<set _max_exp += _amount>>
<<set _amount to Math.round(_base_max_exp * _exp_mod)>>
<<set _base_max_exp += _amount>>
<<case "brutal">>
<<set _amount to Math.round(_min_exp * _exp_mod)>>
<<set _min_exp -= _amount>>
<<set _amount to Math.round(_base_min_exp * _exp_mod)>>
<<set _base_min_exp -= _amount>>
<<set _amount to Math.round(_max_exp * _exp_mod)>>
<<set _max_exp -= _amount>>
<<set _amount to Math.round(_base_max_exp * _exp_mod)>>
<<set _base_max_exp -= _amount>>
<</switch>>
*Positive Traits*
CARING
<<if _cur_slave_trait_names.includes("Caring")>>
<<set _obedience_req -= setup.caring.int>>
<<set _min_exp *= setup.caring.mult>>
<<set _max_exp *= setup.caring.mult>>
<</if>>
DISCIPLINED
<<if _cur_slave_trait_names.includes("Disciplined")>>
<<set _obedience_req -= setup.disciplined.int>>
<</if>>
ENERGETIC
<<if _cur_slave_trait_names.includes("Energetic")>>
<<set _energy_req -= setup.energetic.int>>
<</if>>
SEXY
<<if _cur_slave_trait_names.includes("Sexy")>>
<<set _amount to Math.round(_min_exp * setup.sexy.float)>>
<<set _min_exp += _amount>>
<<set _amount to Math.round(_max_exp * setup.sexy.float)>>
<<set _max_exp += _amount>>
<</if>>
*Negative Service Traits*
RUDE
<<if _cur_slave_trait_names.includes("Rude")>>
<<set _amount to Math.round(_min_exp * setup.rude.float)>>
<<set _min_exp -= _amount>>
<<set _amount to Math.round(_max_exp * setup.rude.float)>>
<<set _max_exp -= _amount>>
<</if>>
SCARED
<<if _cur_slave_trait_names.includes("Scared")>>
<<set _obedience_req += setup.scared.int>>
<</if>>
*Set Minimum Requirements*
<<if _obedience_req < 1>>
<<set _obedience_req to 1>>
<</if>>
<<if _energy_req < 1>>
<<set _energy_req to 1>>
<</if>>
<<if _min_exp < 1>>
<<set _mix_exp to 1>>
<</if>>
<<if _max_exp < 2>>
<<set _max_exp to 2>>
<</if>>
*Display*
<</silently>>\
<div id="cellholder-tasklist">\
<div id="cell-service-tasklist">\
<div id="cell-reqbox-tasklist">\
<<if _obedience_req < $dungeon_floor_list[_i].obedience_req>>\
<span style="color:green">_obedience_req Obedience</span>
<<elseif _obedience_req > $dungeon_floor_list[_i].obedience_req>>\
<span style="color:red">_obedience_req Obedience</span>
<<else>>\
_obedience_req Obedience
<</if>>\
</div>\
<div id="cell-energybox-tasklist">\
<<if _energy_req < $dungeon_floor_list[_i].energy_req>>\
<span style="color:green">_energy_req Energy</span>
<<elseif _energy_req > $dungeon_floor_list[_i].energy_req>>\
<span style="color:red">_energy_req Energy</span>
<<else>>\
_energy_req Energy
<</if>>\
</div>\
<div id="cell-titlebox-tasklist">\
<<switch _i>>\
<<case 0>>\
$dungeon_floor_list[_i].name Room One
<<case 1>>\
$dungeon_floor_list[_i].name Room Two
<<case 2>>\
$dungeon_floor_list[_i].name Room Three
<<case 3>>\
$dungeon_floor_list[_i].name Room Four
<<case 4>>\
$dungeon_floor_list[_i].name Room Five
<<case 5>>\
$dungeon_floor_list[_i].name Room Six
<<case 6>>\
$dungeon_floor_list[_i].name Room Seven
<<case 7>>\
$dungeon_floor_list[_i].name Room Eight
<<case 8>>\
$dungeon_floor_list[_i].name Room Nine
<<case 9>>\
$dungeon_floor_list[_i].name Room Ten
<<case 10>>\
$dungeon_floor_list[_i].name Room Eleven
<<case 11>>\
$dungeon_floor_list[_i].name Room Twelve
<</switch>>\
</div>\
<div id="cell-textbox-tasklist">\
Type: Service
Difficulty: $dungeon_floor_list[_i].difficulty
<<if _base_min_exp < _min_exp>>\
EXP Given: <span style="color:green">_min_exp</span> ~ <span style="color:green">_max_exp</span>
<<elseif _base_min_exp > _min_exp>>\
EXP Given: <span style="color:red">_min_exp</span> ~ <span style="color:red">_max_exp</span>
<<else>>\
EXP Given: _min_exp ~ _max_exp
<</if>>\
</div>\
<div id="cell-linkbox-tasklist">\
<<capture _i>>\
<<link [[View Details|Creature Service Task Details]]>><<set $cur_task to $dungeon_floor_list[_i]>><</link>>
<</capture>>\
</div>\
<div id="cell-linkbox-tasklist">\
<<if _cur_slave_trait_names.includes("Insane") || _cur_slave_trait_names.includes("Lewd")>>\
<span style="color:red">Cannot Be Assigned</span>
<<elseif $cur_slave.cur_energy < _energy_req>>\
<span style="color:red">Not Enough Energy</span>
<<elseif $cur_slave.obedience < _obedience_req>>\
<span style="color:red">Not Enough Obedience</span>
<<elseif $dungeon_floor_list[_i].level === $creature_levelcap>>\
<span style="color:red">Reached Max Level</span>
<<else>>\
<<capture _i, _energy_req>>\
<<link [[Assign Task|$dungeon_floor_list[_i].service_passage]]>><<set $cur_room to $dungeon_floor_list[_i]>><<set $room_num to _i + 1>><<set $cur_slave.cur_energy -= _energy_req>><</link>>\
<</capture>>\
<</if>>\
</div>\
</div>\
</div>\
<</if>>\
<</for>>\
<</if>>\
<<if $prostitution_filter === true>>\
<<for _i = 0; _i < $slave_task_prostitution_list.length; _i++>>\
<<silently>>\
<<set _energy_req to $slave_task_prostitution_list[_i].energy_req>>
<<set _obedience_req to $slave_task_prostitution_list[_i].obedience_req>>
*Positive Prostitution Traits*
DISCIPLINED
<<if _cur_slave_trait_names.includes("Disciplined")>>
<<set _obedience_req -= setup.disciplined.int>>
<</if>>
ENERGETIC
<<if _cur_slave_trait_names.includes("Energetic")>>
<<set _energy_req -= setup.energetic.int>>
<</if>>
*Negative Prostitution Traits*
*Set Minimum Requirements*
<<if _obedience_req < 1>>
<<set _obedience_req to 1>>
<</if>>
<<if _energy_req < 1>>
<<set _energy_req to 1>>
<</if>>
*Calc Earning Amount*
<<switch $slave_task_prostitution_list[_i].seeking>>
<<case "Love">>
<<set _slave_stat to $cur_slave.love>>
<<case "Obedience">>
<<set _slave_stat to $cur_slave.obedience>>
<<case "Strength">>
<<set _slave_stat to $cur_slave.strength>>
<<case "Intelligence">>
<<set _slave_stat to $cur_slave.intelligence>>
<<case "Libido">>
<<set _slave_stat to $cur_slave.libido>>
<<case "Energy">>
<<set _slave_stat to $cur_slave.energy>>
<</switch>>
<<set _gold_amount to Math.round($slave_task_prostitution_list[_i].gold_per_libido * _slave_stat)>>
<<set _base_min_gold to _gold_amount + $slave_task_prostitution_list[_i].min_gold>>
<<set _base_max_gold to _gold_amount + $slave_task_prostitution_list[_i].max_gold>>
<<set _min_gold to _gold_amount + $slave_task_prostitution_list[_i].min_gold>>
<<set _max_gold to _gold_amount + $slave_task_prostitution_list[_i].max_gold>>
* Calc Traits *
BEAUTIFUL TRAIT
<<if _cur_slave_trait_names.includes("Beautiful")>>
<<set _min_gold *= setup.beautiful.mult>>
<<set _max_gold *= setup.beautiful.mult>>
<</if>>
AWKWARD TRAIT
<<if _cur_slave_trait_names.includes("Awkward")>>
<<set _amount to Math.round(_base_min_gold * setup.awkward.float)>>
<<set _min_gold -= _amount>>
<<set _amount to Math.round(_base_max_gold * setup.awkward.float)>>
<<set _max_gold -= _amount>>
<</if>>
DIFFICULTY MOD
<<set _amount to Math.round(_base_max_gold * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _base_max_gold += _amount>>
<<case "brutal">>
<<set _base_max_gold -= _amount>>
<</switch>>
<<set _amount to Math.round(_base_min_gold * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _base_min_gold += _amount>>
<<case "brutal">>
<<set _base_min_gold -= _amount>>
<</switch>>
<<set _amount to Math.round(_max_gold * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _max_gold += _amount>>
<<case "brutal">>
<<set _max_gold -= _amount>>
<</switch>>
<<set _amount to Math.round(_min_gold * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _min_gold += _amount>>
<<case "brutal">>
<<set _min_gold -= _amount>>
<</switch>>
<</silently>>\
<div id="cellholder-tasklist">\
<div id="cell-prostitution-tasklist">\
<div id="cell-reqbox-tasklist">\
<<if _obedience_req < $slave_task_prostitution_list[_i].obedience_req>>\
<span style="color:green">_obedience_req Obedience</span>
<<elseif _obedience_req > $slave_task_prostitution_list[_i].obedience_req>>\
<span style="color:red">_obedience_req Obedience</span>
<<else>>\
_obedience_req Obedience
<</if>>\
</div>\
<div id="cell-energybox-tasklist">\
<<if _energy_req < $slave_task_prostitution_list[_i].energy_req>>\
<span style="color:green">_energy_req Energy</span>
<<elseif _energy_req > $slave_task_prostitution_list[_i].energy_req>>\
<span style="color:red">_energy_req Energy</span>
<<else>>\
_energy_req Energy
<</if>>\
</div>\
<div id="cell-titlebox-tasklist">\
$slave_task_prostitution_list[_i].name
</div>\
<div id="cell-textbox-tasklist">\
Type: $slave_task_prostitution_list[_i].type
Difficulty: $slave_task_prostitution_list[_i].difficulty
<<if _base_min_gold > _min_gold>>\
Gold Earned: <span style="color:red">_min_gold</span> ~ <span style="color:red">_max_gold</span>
<<elseif _base_min_gold < _min_gold>>\
Gold Earned: <span style="color:green">_min_gold</span> ~ <span style="color:green">_max_gold</span>
<<else>>\
Gold Earned: _min_gold ~ _max_gold
<</if>>\
</div>\
<div id="cell-linkbox-tasklist">\
<<capture _i>>\
<<link [[View Details|Prostitution Task Details]]>><<set $cur_task to $slave_task_prostitution_list[_i]>><</link>>
<</capture>>\
</div>\
<div id="cell-linkbox-tasklist">\
<<if _cur_slave_trait_names.includes("Snobby")>>\
<span style="color:red">Cannot Be Assigned</span>\
<<elseif $cur_slave.obedience < _obedience_req>>\
<span style="color:red">Not Enough Obedience</span>\
<<elseif $cur_slave.cur_energy < _energy_req>>\
<span style="color:red">Not Enough Energy</span>\
<<else>>\
<<capture _i, _energy_req>>\
<<link [[Assign Task|$slave_task_prostitution_list[_i].passage]]>><<set $cur_task to $slave_task_prostitution_list[_i]>><<set $cur_slave.cur_energy -= _energy_req>><</link>>
<</capture>>\
<</if>>\
</div>\
</div>\
</div>\
<</for>>\
<</if>>\
<<if $escort_filter === true>>\
<<for _i = 0; _i < $slave_task_escort_list.length; _i++>>\
<<silently>>\
<<set _energy_req to $slave_task_escort_list[_i].energy_req>>
<<set _obedience_req to $slave_task_escort_list[_i].obedience_req>>
*Positive Escort Traits*
DISCIPLINED
<<if _cur_slave_trait_names.includes("Disciplined")>>
<<set _obedience_req -= setup.disciplined.int>>
<</if>>
ENERGETIC
<<if _cur_slave_trait_names.includes("Energetic")>>
<<set _energy_req -= setup.energetic.int>>
<</if>>
*Negative Prostitution Traits*
*Set Minimum Requirements*
<<if _obedience_req < 1>>
<<set _obedience_req to 1>>
<</if>>
<<if _energy_req < 1>>
<<set _energy_req to 1>>
<</if>>
*Calc Earning Amount*
<<switch $slave_task_escort_list[_i].seeking>>
<<case "Love">>
<<set _slave_stat to $cur_slave.love>>
<<case "Obedience">>
<<set _slave_stat to $cur_slave.obedience>>
<<case "Intelligence">>
<<set _slave_stat to $cur_slave.intelligence>>
<<case "Strength">>
<<set _slave_stat to $cur_slave.strength>>
<<case "Libido">>
<<set _slave_stat to $cur_slave.libido>>
<<case "Energy">>
<<set _slave_stat to $cur_slave.energy>>
<</switch>>
<<set _gold_amount to Math.round($slave_task_escort_list[_i].gold_per_stat * _slave_stat)>>
<<set _base_min_gold to _gold_amount + $slave_task_escort_list[_i].min_gold>>
<<set _base_max_gold to _gold_amount + $slave_task_escort_list[_i].max_gold>>
<<set _min_gold to _gold_amount + $slave_task_escort_list[_i].min_gold>>
<<set _max_gold to _gold_amount + $slave_task_escort_list[_i].max_gold>>
* Calc Traits *
BEAUTIFUL TRAIT
<<if _cur_slave_trait_names.includes("Beautiful")>>
<<set _min_gold *= setup.beautiful.mult>>
<<set _max_gold *= setup.beautiful.mult>>
<</if>>
INSECURE TRAIT
<<if _cur_slave_trait_names.includes("Insecure")>>
<<set _amount to Math.round(_base_min_gold * setup.insecure.float)>>
<<set _min_gold -= _amount>>
<<set _amount to Math.round(_base_max_gold * setup.insecure.float)>>
<<set _max_gold -= _amount>>
<</if>>
DIFFICULTY MOD
<<set _amount to Math.round(_base_max_gold * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _base_max_gold += _amount>>
<<case "brutal">>
<<set _base_max_gold -= _amount>>
<</switch>>
<<set _amount to Math.round(_base_min_gold * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _base_min_gold += _amount>>
<<case "brutal">>
<<set _base_min_gold -= _amount>>
<</switch>>
<<set _amount to Math.round(_max_gold * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _max_gold += _amount>>
<<case "brutal">>
<<set _max_gold -= _amount>>
<</switch>>
<<set _amount to Math.round(_min_gold * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _min_gold += _amount>>
<<case "brutal">>
<<set _min_gold -= _amount>>
<</switch>>
GROUP MULT
<<if $slave_task_escort_list[_i].num_of_clients > 1>>
<<set _base_min_gold *= $slave_task_escort_list[_i].num_of_clients>>
<<set _base_max_gold *= $slave_task_escort_list[_i].num_of_clients>>
<<set _min_gold *= $slave_task_escort_list[_i].num_of_clients>>
<<set _max_gold *= $slave_task_escort_list[_i].num_of_clients>>
<</if>>
<</silently>>\
<div id="cellholder-tasklist">\
<div id="cell-escort-tasklist">\
<div id="cell-reqbox-tasklist">\
<<if _obedience_req < $slave_task_escort_list[_i].obedience_req>>\
<span style="color:green">_obedience_req Obedience</span>
<<elseif _obedience_req > $slave_task_escort_list[_i].obedience_req>>\
<span style="color:red">_obedience_req Obedience</span>
<<else>>\
_obedience_req Obedience
<</if>>\
</div>\
<div id="cell-energybox-tasklist">\
<<if _energy_req < $slave_task_escort_list[_i].energy_req>>\
<span style="color:green">_energy_req Energy</span>
<<elseif _energy_req > $slave_task_escort_list[_i].energy_req>>\
<span style="color:red">_energy_req Energy</span>
<<else>>\
_energy_req Energy
<</if>>\
</div>\
<div id="cell-titlebox-tasklist">\
$slave_task_escort_list[_i].name
</div>\
<div id="cell-textbox-tasklist">\
Type: $slave_task_escort_list[_i].type
Difficulty: $slave_task_escort_list[_i].difficulty
<<if _base_min_gold > _min_gold>>\
Gold Earned: <span style="color:red">_min_gold</span> ~ <span style="color:red">_max_gold</span>
<<elseif _base_min_gold < _min_gold>>\
Gold Earned: <span style="color:green">_min_gold</span> ~ <span style="color:green">_max_gold</span>
<<else>>\
Gold Earned: _min_gold ~ _max_gold
<</if>>\
</div>\
<div id="cell-linkbox-tasklist">\
<<capture _i>>\
<<link [[View Details|Escort Task Details]]>><<set $cur_task to $slave_task_escort_list[_i]>><</link>>
<</capture>>\
</div>\
<div id="cell-linkbox-tasklist">\
<<if _cur_slave_trait_names.includes("Lewd")>>\
<span style="color:red">Cannot Be Assigned</span>\
<<elseif $cur_slave.obedience < _obedience_req>>\
<span style="color:red">Not Enough Obedience</span>\
<<elseif $cur_slave.cur_energy < _energy_req>>\
<span style="color:red">Not Enough Energy</span>\
<<else>>\
<<capture _i, _energy_req>>\
<<link [[Assign Task|Slave Room]]>><<set $cur_slave.busy to true>><<set $cur_slave.cur_task to $slave_task_escort_list[_i]>><<set $cur_slave.cur_task_cd to $slave_task_escort_list[_i].days>><<set $cur_slave.cur_energy -= _energy_req>><<set $guild_task_list.push($slave_task_escort_list[_i])>><<set _delete to $slave_task_escort_list.deleteAt(_i)>>\
<<switch $cur_slave_num>>\
<<case 0>>\
<<set $pc_bedroom to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 1>>\
<<set $slave_room_1 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 2>>\
<<set $slave_room_2 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 3>>\
<<set $slave_room_3 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 4>>\
<<set $slave_room_4 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 5>>\
<<set $slave_room_5 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 6>>\
<<set $slave_room_6 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 7>>\
<<set $slave_room_7 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 8>>\
<<set $slave_room_8 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 9>>\
<<set $slave_room_9 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 10>>\
<<set $slave_room_10 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<</switch>>\
<</link>>\
<</capture>>\
<</if>>\
</div>\
</div>\
</div>\
<</for>>\
<</if>>\
<<if $work_filter === true>>\
<<for _i = 0; _i < $slave_task_work_list.length; _i++>>\
<<silently>>\
<<set _energy_req to $slave_task_work_list[_i].energy_req>>
<<set _obedience_req to $slave_task_work_list[_i].obedience_req>>
*Positive Prostitution Traits*
DISCIPLINED
<<if _cur_slave_trait_names.includes("Disciplined")>>
<<set _obedience_req -= setup.disciplined.int>>
<</if>>
ENERGETIC
<<if _cur_slave_trait_names.includes("Energetic")>>
<<set _energy_req -= setup.energetic.int>>
<</if>>
*Negative Prostitution Traits*
LAZY
<<if _cur_slave_trait_names.includes("Lazy")>>
<<set _energy_req += setup.lazy.int>>
<</if>>
*Set Minimum Requirements*
<<if _obedience_req < 1>>
<<set _obedience_req to 1>>
<</if>>
<<if _energy_req < 1>>
<<set _energy_req to 1>>
<</if>>
*Calc Earning Amount*
<<switch $slave_task_work_list[_i].seeking>>
<<case "Love">>
<<set _slave_stat to $cur_slave.love>>
<<case "Obedience">>
<<set _slave_stat to $cur_slave.obedience>>
<<case "Libido">>
<<set _slave_stat to $cur_slave.libido>>
<<case "Strength">>
<<set _slave_stat to $cur_slave.strength>>
<<case "Intelligence">>
<<set _slave_stat to $cur_slave.intelligence>>
<<case "Energy">>
<<set _slave_stat to $cur_slave.energy>>
<</switch>>
<<set _gold_amount to Math.round($slave_task_work_list[_i].gold_per_stat * _slave_stat)>>
<<set _base_min_gold to _gold_amount + $slave_task_work_list[_i].min_gold>>
<<set _base_max_gold to _gold_amount + $slave_task_work_list[_i].max_gold>>
<<set _min_gold to _gold_amount + $slave_task_work_list[_i].min_gold>>
<<set _max_gold to _gold_amount + $slave_task_work_list[_i].max_gold>>
* Calc Traits *
BRIGHT TRAIT
<<if _cur_slave_trait_names.includes("Bright")>>
<<set _amount to Math.round(_base_min_gold * setup.bright.float)>>
<<set _min_gold += _amount>>
<<set _amount to Math.round(_base_max_gold * setup.bright.float)>>
<<set _max_gold += _amount>>
<</if>>
DIFFICULTY MOD
<<set _amount to Math.round(_base_max_gold * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _base_max_gold += _amount>>
<<case "brutal">>
<<set _base_max_gold -= _amount>>
<</switch>>
<<set _amount to Math.round(_base_min_gold * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _base_min_gold += _amount>>
<<case "brutal">>
<<set _base_min_gold -= _amount>>
<</switch>>
<<set _amount to Math.round(_max_gold * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _max_gold += _amount>>
<<case "brutal">>
<<set _max_gold -= _amount>>
<</switch>>
<<set _amount to Math.round(_min_gold * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _min_gold += _amount>>
<<case "brutal">>
<<set _min_gold -= _amount>>
<</switch>>
<</silently>>\
<div id="cellholder-tasklist">\
<div id="cell-work-tasklist">\
<div id="cell-reqbox-tasklist">\
<<if _obedience_req < $slave_task_work_list[_i].obedience_req>>\
<span style="color:green">_obedience_req Obedience</span>
<<elseif _obedience_req > $slave_task_work_list[_i].obedience_req>>\
<span style="color:red">_obedience_req Obedience</span>
<<else>>\
_obedience_req Obedience
<</if>>\
</div>\
<div id="cell-energybox-tasklist">\
<<if _energy_req < $slave_task_work_list[_i].energy_req>>\
<span style="color:green">_energy_req Energy</span>
<<elseif _energy_req > $slave_task_work_list[_i].energy_req>>\
<span style="color:red">_energy_req Energy</span>
<<else>>\
_energy_req Energy
<</if>>\
</div>\
<div id="cell-titlebox-tasklist">\
$slave_task_work_list[_i].name
</div>\
<div id="cell-textbox-tasklist">\
Type: $slave_task_work_list[_i].type
Difficulty: $slave_task_work_list[_i].difficulty
<<if _base_min_gold > _min_gold>>\
Gold Earned: <span style="color:red">_min_gold</span> ~ <span style="color:red">_max_gold</span>
<<elseif _base_min_gold < _min_gold>>\
Gold Earned: <span style="color:green">_min_gold</span> ~ <span style="color:green">_max_gold</span>
<<else>>\
Gold Earned: _min_gold ~ _max_gold
<</if>>\
</div>\
<div id="cell-linkbox-tasklist">\
<<capture _i>>\
<<link [[View Details|Work Task Details]]>><<set $cur_task to $slave_task_work_list[_i]>><</link>>
<</capture>>\
</div>\
<div id="cell-linkbox-tasklist">\
<<if _cur_slave_trait_names.includes("Lewd")>>\
<span style="color:red">Cannot Be Assigned</span>\
<<elseif $cur_slave.obedience < _obedience_req>>\
<span style="color:red">Not Enough Obedience</span>\
<<elseif $cur_slave.cur_energy < _energy_req>>\
<span style="color:red">Not Enough Energy</span>\
<<else>>\
<<if $slave_task_work_list[_i].days > 0>>\
<<capture _i, _energy_req>>\
<<link [[Assign Task|Slave Room]]>><<set $cur_slave.busy to true>><<set $cur_slave.cur_task to $slave_task_work_list[_i]>><<set $cur_slave.cur_task_cd to $slave_task_work_list[_i].days>><<set $cur_slave.cur_energy -= _energy_req>><<set $guild_task_list.push($slave_task_work_list[_i])>><<set _delete to $slave_task_work_list.deleteAt(_i)>>\
<<switch $cur_slave_num>>\
<<case 1>>\
<<set $slave_room_1 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 2>>\
<<set $slave_room_2 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 3>>\
<<set $slave_room_3 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 4>>\
<<set $slave_room_4 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 5>>\
<<set $slave_room_5 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 6>>\
<<set $slave_room_6 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 7>>\
<<set $slave_room_7 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 8>>\
<<set $slave_room_8 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 9>>\
<<set $slave_room_9 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<<case 10>>\
<<set $slave_room_10 to $cur_slave>>\
<<set $display_slave to $cur_slave>>\
<</switch>>\
<</link>>\
<</capture>>\
<<else>>\
<<capture _i, _energy_req>>\
<<link [[Assign Task|$slave_task_work_list[_i].passage]]>><<set $cur_task to $slave_task_work_list[_i]>><<set $cur_slave.cur_energy -= _energy_req>><<set $guild_task_list.push($slave_task_work_list[_i])>><<set _delete to $slave_task_work_list.deleteAt(_i)>><</link>>
<</capture>>\
<</if>>\
<</if>>\
</div>\
</div>\
</div>\
<</for>>\
<</if>>\
<<if $special_filter === true>>\
<</if>>\
</div>\
<</if>>\
<div class="exit-link-right">\
<<link [[Back|Slave Room]]>><<set $filter_task to false>><</link>> | <<link [[Quick Menu]]>><<set $filter_task to false>><</link>>
</div>\
<</if>>\<div id="section">\
<div id="titlebox">\
Release $cur_slave.name?
</div>\
<div class="centered">\
$cur_slave.body_pic
</div>\
<div id="textbox">\
Releasing her will unlock your Threat early but she will be gone forever.
Do you still want to release her?
<<link [[Release Her|Slave Room Manager]]>>\
<<set $threat_locked to false>>\
<<set $threat_locked_cd to 0>>\
<<switch $cur_slave_num>>\
<<case 1>>\
<<set $slave_room_1 to setup.empty_cell>>\
<<case 2>>\
<<set $slave_room_2 to setup.empty_cell>>\
<<case 3>>\
<<set $slave_room_3 to setup.empty_cell>>\
<<case 4>>\
<<set $slave_room_4 to setup.empty_cell>>\
<<case 5>>\
<<set $slave_room_5 to setup.empty_cell>>\
<<case 6>>\
<<set $slave_room_6 to setup.empty_cell>>\
<<case 7>>\
<<set $slave_room_7 to setup.empty_cell>>\
<<case 8>>\
<<set $slave_room_8 to setup.empty_cell>>\
<<case 9>>\
<<set $slave_room_9 to setup.empty_cell>>\
<<case 10>>\
<<set $slave_room_10 to setup.empty_cell>>\
<</switch>>\
<</link>> | [[Keep Her|Slave Room Manager]]
</div>\
</div>\<<silently>>\
* Variables *
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Slave Pack Menu
</div>\
<div class="textbox-packs-menu">\
Customize your game using Slave Packs! Slave Packs are folders containing images or gifs of a character that is used by Slaves. You can also assign each Slave Pack to one or multiple Classes in the game. If the Class and Body Type match the Slave Pack, that Raider will use images from that Slave Pack during the Raid and as a Slave. There is an example folder in the Slave folder with all the folders and a text file with instructions on how to make a Slave Pack. There are also plenty of Slave Packs you can download from the Discord and Slave Pack forum on f95zone if you do not want to make one yourself.
<strong>Edit</strong>: Here you can add and remove Slave Packs. To add a new Slave Pack, drop the Slave Pack in the Slaves folder next to the Dungeon Lord HTML, then simply type the Slave Pack folder name and click "Add". If done correctly, they will appear at the bottom of the list with an image next to their name. If the image is a question mark, double check the name you added matches the Slave Pack's name and that you dropped the Slave Pack in the Slaves folder. Once added, you can change their Body Type using the pulldown menu. To remove a Slave Pack, simply click the "Remove" button in the Slave Pack box you wish to remove from your game. Removing a Slave Pack only prevents new Slaves from using the Slave Pack. Existing Slaves will keep displaying images from the Slave Pack until they leave the game. For this reason, it is recommended to keep Slave Pack folders until all Slaves that are using the removed Slave Pack are no longer in the game.
<strong>Assign</strong>: View a chart of all the current Slave Packs in your game and all the different Class types. To allow a Class to use a Slave Pack's information during a Raid, check the box in that Slave Pack's row under the desired Class. You can assign Slave Packs to multiple Classes. Raiders will only use Slave Packs that match the Body Type of that Raider. Only the default image will use an image from the Slave Pack. If the Raider is attacked by a Creature or caught in a Trap, the image displayed will be from that Creature or Trap.
<strong>View</strong>: Search through all your added Slave Pack images in each folder, for testing or viewing purposes.
</div>\
<div class="linkbox-holder-menu">\
<div class="linkbox-packs-menu">\
<div class="purplebutton">\
<span id="1"><<button "Edit Packs ^^1^^" "Slave Pack Edit">><</button>></span>
</div>\
</div>\
<div class="linkbox-packs-menu">\
<div class="purplebutton">\
<span id="2"><<button "Assign Packs ^^2^^" "Slave Pack Classes">><</button>></span>
</div>\
</div>\
<div class="linkbox-packs-menu">\
<div class="purplebutton">\
<span id="3"><<button "View Packs ^^3^^" "View Slave Packs">><</button>></span>
</div>\
</div>\
<div class="linkbox-packs-menu">\
<<if $pregameAdd>>\
<div class="purplebutton">\
<span id="back"><<button [[Exit|New Game]]>><<unset $pregameAdd>><</button>></span>
</div>\
<<else>>\
<div class="purplebutton">\
<span id="back"><<button [[Exit|Player's Stats]]>><</button>></span>
</div>\
<</if>>
</div>\
</div>\
</div>\<<if $spell_targeting === true>>\
<<silently>>\
*Variables*
<<set _spell_percent_list to []>> Holds all the spell percent for each raider
* Overload Spellcheck *
<<if $overloadSpellBool === true>>
<<set $pc_spellbook[$spell_index].cur_check += (Math.round($pc_spellbook[$spell_index].cur_check * setup.blessing_02_12.float)).clamp(1, 1000000)>>
<</if>>
* Setup Raiders *
<<RaiderSetup $raiders>>
*Calc Percent for each Raider*
<<for _i = 0; _i < $raiders.length; _i++>>
BONUS IF ALONE
<<if $raiders.length === 1>>
<<set _base_check to Math.trunc($pc_spellbook[$spell_index].mult * $pc_spellbook[$spell_index].cur_check)>>
<<else>>
<<set _base_check to clone($pc_spellbook[$spell_index].cur_check)>>
<</if>>
CALC CHANCE
<<CalcSpellcheck $raiders[_i] _base_check "Player">>
COURAGEOUS PREVENTS SPELL FROM WORKING
<<if $raiders[_i].trait_names.includes("Courageous")>>
<<set _spellcheck to 0>>
<</if>>
SET RAIDERS SPELL PERCENT
<<set _spell_percent_list.push(_spellcheck)>>
<</for>>
* Display Info *
<<set _cardholderID to "cardholder-"+$raiders.length+"girls">>
<<set _cardinfoID to "cardinfo-"+$raiders.length+"girls">>
<<set _picboxID to "picbox-"+$raiders.length+"girls">>
<<set _textboxID to "textbox-"+$raiders.length+"girls">>
<<set _linkboxID to "linkbox-targeting-"+$raiders.length+"girls">>
<</silently>>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|View Spells]]>><<unset $mana_cost>><</button>></span>
</div>\
<div class="titlebox">\
Choose a Target
</div>\
<<for _r = 0; _r < $raiders.length; _r++>>\
<<set _hotKey to _r + 1>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
<div @class="_textboxID">\
Name: $raiders[_r].name
Class: $raiders[_r].subclass.name $raiders[_r].class
Role: $raiders[_r].role
Traits: <<for _i = 0; _i < $raiders[_r].traits.length; _i++>>\
<<if $raiders[_r].traits[_i].type === "Special">>\
<span style="color:gold"><<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>></span><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<<else>>\
<<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<</if>>\
<</for>>
Kinks: <<if $raiders[_r].kinks.length === 0>>None<<else>>$raiders[_r].kinks<</if>>
Turn-Offs: <<if $raiders[_r].turnoffs.length === 0>>None<<else>>$raiders[_r].turnoffs<</if>>
Statuses: <<if $raiders[_r].statuses.length == 0>>\
None
<<else>>\
<<for _i = 0; _i < $raiders[_r].statuses.length; _i++>>\
<<hovertip "$raiders[_r].statuses[_i].tooltip">>$raiders[_r].statuses[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].statuses.length>>, <</if>><</for>><</if>>
</div>\
</div>\
<div @class="_linkboxID">\
<<if _spell_percent_list[_r] <= 39>>\
<<set _color to "bad">>\
<<elseif _spell_percent_list[_r] <= 69>>\
<<set _color to "neutral">>\
<<else>>\
<<set _color to "good">>\
<</if>>\
$pc_spellbook[$spell_index].name Success Rate: <span @class="_color">_spell_percent_list[_r]%</span> \
<<if _spell_percent_list[_r] === 0>>\
<div class="offbutton">\
<<hovertip "Has Courageous and will not Abandon">><<button "Target Raider">><</button>><</hovertip>>
</div>\
<<else>>\
<<capture _r, _hotKey>>\
<span @id="_hotKey"><<button "Target Raider ^^_hotKey^^" $pc_spellbook[$spell_index].passage>><<unset $spell_targeting>><<set $target to _r>><<set $spell_percent to _spell_percent_list[_r]>><</button>></span>
<</capture>>\
<</if>>\
</div>\
</div>\
<</for>>\
<<else>>\
<<silently>>\
* Setup Raiders *
<<RaiderSetup $raiders>>
CASTING SPELL WIDGET
<<CastingSpell $pc_spellbook[$spell_index] $mana_cost>>
<<SimSpellcheck $raiders[$target] $spell_percent "Player">>
<<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[$target].index) || _text_triggers.check.spellcheck_failed.includes($raiders[$target].index)>>
SET GIF
<<set _gif to setup.terror_spell.gif>>
UPDATE GIRL INFO
<<set $raiders[$target].abandoned_by to $pc_spellbook[$spell_index].name>>
<<AddStatus $raiders[$target] setup.abandoned true>>
UPDATE REPORT
<<set _entry to "She was overwhelmed by fear from your Terror Spell, Abandoning her Raid.">>
<<set _lastLog to $raiders[$target].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[$target].report.log.push(_lastLog)>>
SET RAIDER REPORT RESULT
<<set _result to "She Abandoned her Raid after succumbing to your Terror Spell.">>
<<set _picArray to clone($pc_spellbook[$spell_index].abandon_pics)>>
<<set $raiders[$target].report.result to _result>>
<<set $raiders[$target].report.result_pic to _picArray.random()>>
PUSH REPORT TO LIST
<<set $raider_report_list.push($raiders[$target].report)>>
<<else>>
TRIGGER FAIL
<<set _success_bool to false>>
UPDATE REPORT
<<set _entry to "She resisted your Terror Spell.">>
<<set _lastLog to $raiders[$target].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[$target].report.log.push(_lastLog)>>
SET GIF
<<set _gif to setup.spell_failed_gif_list.random()>>
<</if>>
*Display*
<</silently>>\
<div class="section">\
<div class="titlebox">\
$pc_spellbook[$spell_index].name Spell
</div>\
<div class="imagebox">\
_gif
</div>\
<div class="textbox-center">\
<<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[$target].index) || _text_triggers.check.spellcheck_failed.includes($raiders[$target].index)>>\
<<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[$target].index)>><strong>Critical Failure!</strong> <</if>>She was filled with terror and fear, making her Abandon the Raid. \
<<elseif _text_triggers.check.spellcheck_crit_passed.includes($raiders[$target].index) || _text_triggers.check.spellcheck_passed.includes($raiders[$target].index)>>\
<<if _text_triggers.check.spellcheck_crit_passed.includes($raiders[$target].index)>><strong>Critical Success!</strong> <</if>>She was unaffected. \
<</if>>\
<<if _text_triggers.blessing.resourceful_sorcerer === true && $pc_blessing_list.includes("Resourceful Sorcerer I")>>\
<li>You recovered a portion of the spell's @@.mana;Mana Cost@@ after it failed.</li>\
<<elseif _text_triggers.blessing.resourceful_sorcerer === true && $pc_blessing_list.includes("Resourceful Sorcerer II")>>\
<li>You recovered all of the spell's @@.mana;Mana Cost@@ after it failed.</li>\
<</if>>\
</div>\
<<NextSpellButton>>\
</div>\
<</if>>\<<if $visited_ahris_quarters === false && $tutorial_guide === true>>\
<<silently>>\
* Variables *
<<set $visited_ahris_quarters to true>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Goddess's Quarters
</div>\
<div class="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/mistress/face.jpg]]
</div>\
<div class="dialogue-text">\
GODDESS'S QUARTERS TUTORIAL
</div>\
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<<button [[Continue|Ahri's Quarters]]>><</button>>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
</div>\
<<elseif $missionLog.goddess.unlocked === true && $missionLog.goddess.started === false>>\
<<if $missionLog.goddess.num === 0>>\
<<silently>>\
* Variables *
<<set $missionLog.goddess.started to true>>
<<set _misName to setup.goddessMisLine[$missionLog.goddess.num].name>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
_misName
</div>\
<div class="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/mistress/face.jpg]]
</div>\
<div class="dialogue-text">\
Hi there $pc_name, how are you doing? Getting more comfortable with your new life as my Dungeon Lord? I think you are doing great! You know what would make things more comfortable? An Onsen. No offense, but you could use a little clean up after what you have been up to. You can also use it to get closer to your Slaves, plus I'm sure they will be much happier having an Onsen too. You can build it in the Amenities Menu. I can't wait to be able to get cleaned up myself!
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="forward"><<button [[Continue|Ahri's Quarters]]>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
</div>\
</div>\
<</if>>\
<<elseif $missionLog.goddess.completed === true>>\
<<if $missionLog.goddess.num === 0>>\
<div class="section">\
<div class="titlebox">\
Goddess's Quarters
</div>\
<div class="imagebox">\
[img[images/rooms/ahris_quarters.jpg]]
</div>\
<div class="textbox-center">\
It doesn't look like Ahri is in her Quarters right now. Perhaps she is checking out the new Onsen.
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Leave|Amenities]]>><</button>></span>
</div>\
</div>\
<</if>>\
<<else>>\
<<silently>>\
*Variables*
*Dialogue*
*Display*
<</silently>>\
<div class="section">\
<div class="titlebox">\
Ahri's Quarters
</div>\
<div class="dialoguebox-townshops">\
<div class="dialoguepic-townshops">\
[img[images/mistress/face.jpg]]
</div>\
<div class="dialoguetext-townshops">\
Welcome $pc_name! Come in, come in!
_dialogue
</div>\
</div>\
<div class="cardholder-townshops">\
<div class="infobox-townshops">\
<div class="infobox-title-townshops">\
Buy Creatures
</div>\
<div class="infobox-body-townshops">\
Exchange for Lust Essence to unlock Creatures to summon in your Dungeon.
</div>\
<div class="infobox-link-townshops">\
<span id="1"><<button "Creatures ^^1^^" "Buy Creature">><<set $learning_room to "Creature">><</button>></span>
</div>\
</div>\
</div>\
<div class="cardholder-townshops">\
<div class="infobox-townshops">\
<div class="infobox-title-townshops">\
Buy Traps
</div>\
<div class="infobox-body-townshops">\
Exchange for Lust Essence to unlock Traps to construct in your Dungeon.
</div>\
<div class="infobox-link-townshops">\
<span id="2"><<button "Traps ^^2^^" "Buy Trap">><<set $learning_room to "Trap">><</button>></span>
</div>\
</div>\
</div>\
<div class="cardholder-townshops">\
<div class="infobox-townshops">\
<div class="infobox-title-townshops">\
Buy Blessings
</div>\
<div class="infobox-body-townshops">\
Exchange for Lust Essence to unlock Blessings that can have a variety of effects on you, Slaves, Creatures, or Traps.
</div>\
<div class="infobox-link-townshops">\
<span id="3"><<button "Blessings ^^3^^" "Buy Blessing">><<set $filter_blessing to []>><<set $filter_locked to true>><</button>></span>
</div>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Leave|Amenities]]>><</button>></span> <span id="q"><<button "<u>Q</u>uick Menu" "Quick Menu">><</button>></span>\
</div>\
</div>\
<</if>>\<<if $visited_training === false>>\
<<silently>>\
* Variables *
<<set $visited_training to true>>
* Display *
<</silently>>\
<div id="section">\
<div id="tutorial-box">\
<div id="tutorial-pic">\
<div class="pic-tutorial">\
_PIC
</div>\
</div>\
<div id="tutorial-text">\
You can train your Slaves to improve their stats. Training is faster at increasing their stats than by performing Tasks but doesn't offer any other rewards. You can choose to leave a Slave in your Training Hall to automatically improve the desired stat at the end of each night. You can also assign shorter training sessions with her to improve the desired stat but uses Energy. Be sure to check the Guidebook if you forget anything about Training your Slaves.
</div>\
</div>\
<div class="exit-link-right">\
[[Continue|Training Hall]]
</div>\
</div>\
<<elseif $visited_training === true>>\
<<silently>>\
* Variables *
* Dialogue List *
* Choose Dialogue *
* Display *
<</silently>>\
<div id="section">\
<div id="titlebox-training">\
Choose Type of Training
</div>\
<div id="dialoguebox-training">\
<div id="dialoguepic-training">\
<div class="pic-training">\
_PIC
</div>\
</div>\
<div id="dialoguetext-training">\
_TRAINER DIALOGUE
</div>\
</div>\
<div id="cardholder-training">\
<div id="infobox-training">\
<div id="infotitle-training">\
Quick Training
</div>\
<div id="infotext-training">\
Train a Slave to improve a desired stat but requires her to use Energy.
</div>\
<div id="infolink-training">\
</div>\
</div>\
</div>\
<div id="cardholder-training">\
<div id="infobox-training">\
<div id="infotitle-training">\
Leave a Slave
</div>\
<div id="infotext-training">\
Leave a Slave to be trained over time by your trainer.
</div>\
<div id="infolink-training">\
</div>\
</div>\
</div>\
<div id="cardholder-training">\
<div id="infobox-training">\
<div id="infotitle-training">\
View Slaves
</div>\
<div id="infotext-training">\
Check on current Slaves in the Training Hall.
</div>\
<div id="infolink-training">\
</div>\
</div>\
</div>\
<div class="exit-link-right">\
[[Back|Slave Room]]
</div>\
</div>\
<</if>>\Double-click this passage to edit it.Double-click this passage to edit it.<<silently>>\
* Variables *
<<set _floor_names to ["Floor One", "Floor Two", "Floor Three", "Floor Four", "Floor Five", "Floor Six", "Floor Seven", "Floor Eight", "Floor Nine", "Floor Ten", "Floor Eleven", "Floor Twelve"]>> Display name for each room
OVERLOAD SPELL
<<if $overloadSpellBool === true>>
SPELL OVERLOADED
<<set $pc_spellbook[$spell_index].cur_heal += (Math.round($pc_spellbook[$spell_index].cur_heal * setup.blessing_02_12.float)).clamp(1, 1000000)>>
<<set $overloadSpellBool to false>> prevents it from increasing stats again
<</if>>
* Display *
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<span id="back"><<button [[Back|View Spells]]>><<unset $mana_cost, $spell_index>><</button>></span>
</div>\
<div class="titlebox">\
$pc_spellbook[$spell_index].title
</div>\
<div class="tableholder-manager">\
<<for _i = 0; _i < $dungeon_floor_list.length; _i++>>\
<<set _hotKey to _i + 1>>\
<div class="cell-manager">\
<div class="cell-textholder-manager">\
_floor_names[_i]
<<if $dungeon_floor_list[_i].room_type === "Trap" || $dungeon_floor_list[_i].room_type === "Empty" || $pc_cur_mana < $mana_cost>>\
<div class="offbutton">\
<<button "Heal">><</button>>
</div>\
<<else>>\
<<if $dungeon_floor_list[_i].cur_hp <= 0>>\
<div class="offbutton">\
<span style="color:red">Health: $dungeon_floor_list[_i].cur_hp / $dungeon_floor_list[_i].max_hp</span> <<button "Heal">><</button>>
</div>\
<<elseif $dungeon_floor_list[_i].cur_hp >= $dungeon_floor_list[_i].max_hp>>\
<div class="offbutton">\
<span style="color:lime">Health: $dungeon_floor_list[_i].cur_hp / $dungeon_floor_list[_i].max_hp</span> <<button "Heal">><</button>>
</div>\
<<else>>\
<span style="color:lime">Health: $dungeon_floor_list[_i].cur_hp / $dungeon_floor_list[_i].max_hp</span> <<capture _i, _hotKey>><span @id="_hotKey"><<button "Heal ^^_hotKey^^" "View Spells">>\
<<silently>>\
HEAL ROOM
<<set $dungeon_floor_list[_i].cur_hp to Math.clamp($dungeon_floor_list[_i].cur_hp + $pc_spellbook[$spell_index].cur_heal, 1, $dungeon_floor_list[_i].max_hp)>>
CASTING SPELL WIDGET
<<CastingSpell $pc_spellbook[$spell_index] $mana_cost>>
UNSET
<<unset $mana_cost, $spell_index>>
<</silently>>\
<</button>></span><</capture>>\
<</if>>\
<</if>>\
</div>\
<div class="cell-picholder-manager">\
$dungeon_floor_list[_i].pic
</div>\
</div>\
<</for>>\
</div>\
</div>\
<<if $spell_targeting === true>>\
<<silently>>\
*Variables*
<<set _spell_percent_list to []>> Holds all the spell percent for each raider
* Overload Spellcheck *
<<if $overloadSpellBool === true>>
<<set $pc_spellbook[$spell_index].cur_check += (Math.round($pc_spellbook[$spell_index].cur_check * setup.blessing_02_12.float)).clamp(1, 1000000)>>
<</if>>
* Setup Raiders *
<<RaiderSetup $raiders>>
*Calc Percent for each Raider*
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].status_names.includes(setup.stimulated.id)>>
<<set _spell_percent_list.push(0)>>
<<else>>
CALC CHANCE
<<CalcSpellcheck $raiders[_i] $pc_spellbook[$spell_index].cur_check "Player">>
<<set _spell_percent_list.push(_spellcheck)>>
<</if>>
<</for>>
* Display Info *
<<set _cardholderID to "cardholder-"+$raiders.length+"girls">>
<<set _cardinfoID to "cardinfo-"+$raiders.length+"girls">>
<<set _picboxID to "picbox-"+$raiders.length+"girls">>
<<set _textboxID to "textbox-"+$raiders.length+"girls">>
<<set _linkboxID to "linkbox-targeting-"+$raiders.length+"girls">>
<</silently>>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|View Spells]]>><<unset $mana_cost, $spell_index>><</button>></span>
</div>\
<div class="titlebox">\
Choose a Target
</div>\
<<for _r = 0; _r < $raiders.length; _r++>>\
<<set _hotKey to _r + 1>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
<div @class="_textboxID">\
Name: $raiders[_r].name
Class: $raiders[_r].subclass.name $raiders[_r].class
Role: $raiders[_r].role
Traits: <<for _i = 0; _i < $raiders[_r].traits.length; _i++>>\
<<if $raiders[_r].traits[_i].type === "Special">>\
<span style="color:gold"><<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>></span><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<<else>>\
<<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<</if>>\
<</for>>
Kinks: <<if $raiders[_r].kinks.length === 0>>None<<else>>$raiders[_r].kinks<</if>>
Turn-Offs: <<if $raiders[_r].turnoffs.length === 0>>None<<else>>$raiders[_r].turnoffs<</if>>
Statuses: <<if $raiders[_r].statuses.length == 0>>\
None
<<else>>\
<<for _i = 0; _i < $raiders[_r].statuses.length; _i++>>\
<<hovertip "$raiders[_r].statuses[_i].tooltip">>$raiders[_r].statuses[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].statuses.length>>, <</if>><</for>><</if>>
</div>\
</div>\
<div @class="_linkboxID">\
<<if _spell_percent_list[_r] <= 39>>\
<<set _color to "bad">>\
<<elseif _spell_percent_list[_r] <= 69>>\
<<set _color to "neutral">>\
<<else>>\
<<set _color to "good">>\
<</if>>\
Jolt Effect Chance: <span @class="_color">_spell_percent_list[_r]%</span> \
<<if $raiders[_r].cur_hp === 1 && $raiders[_r].cur_lust === $raiders[_r].max_lust - 1 && _spell_percent_list[_r] === 0>>\
<div class="offbutton">\
<<hovertip "Will have no effect">><<button "Target Raider">><</button>><</hovertip>>
</div>\
<<else>>\
<<capture _r, _hotKey>>\
<span @id="_hotKey"><<button "Target Raider ^^_hotKey^^" $pc_spellbook[$spell_index].passage>><<unset $spell_targeting>><<set $target to _r>><<set $spell_percent to _spell_percent_list[_r]>><</button>></span>
<</capture>>\
<</if>>\
</div>\
</div>\
<</for>>\
<<else>>\
<<silently>>\
* Cast Spell *
<<CastingSpell $pc_spellbook[$spell_index] $mana_cost>>
OVERLOAD SPELL
<<if $overloadSpellBool === true>>
<<set $pc_spellbook[$spell_index].cur_dmg += (Math.round($pc_spellbook[$spell_index].cur_dmg * setup.blessing_02_12.float)).clamp(1, 1000000)>>
<<set $pc_spellbook[$spell_index].cur_sex += (Math.round($pc_spellbook[$spell_index].cur_sex * setup.blessing_02_12.float)).clamp(1, 1000000)>>
<</if>>
* Setup Raiders *
<<RaiderSetup $raiders>>
CREATE NEW SPELL VARIABLE
<<set _spellStats to clone(setup.newSpell)>>
UPDATE VARIABLE
<<set _spellStats.name to $pc_spellbook[$spell_index].name>>
<<set _spellStats.cast to $pc_spellbook[$spell_index].cast>>
<<set _spellStats.attack_type to "Magical">>
<<set _spellStats.mana to $mana_cost>>
<<set _spellStats.percent to $spell_percent>>
<<set _spellStats.dmg to $pc_spellbook[$spell_index].cur_dmg>>
<<set _spellStats.sex to $pc_spellbook[$spell_index].cur_sex>>
<<set _spellStats.pic to $pc_spellbook[$spell_index].img>>
* Jolt Raider *
MAGICAL DAMAGE
<<NormalAttack $raiders[$target] _spellStats _spellStats.dmg>>
SEXUAL DAMAGE
<<SexualAttack $raiders[$target] _spellStats _spellStats.sex>>
STIMULATED STATUS
<<if _spellStats.percent > 0>>
<<SimSpellcheck $raiders[$target] _spellStats.percent "Player">>
<<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[$target].index) || _text_triggers.check.spellcheck_failed.includes($raiders[$target].index)>>
<<AddStatus $raiders[$target] setup.stimulated true>>
<</if>>
<</if>>
POST COMBAT
<<PostCombat $raiders[$target] _spellStats>>
SET PIC
<<set _picArray to clone($pc_spellbook[$spell_index].raider_pics)>>
<<set _pic to _picArray[$raiders[$target].body_type].pluck()>>
UPDATE REPORT
<<if _text_triggers.status.stimulated.includes($raiders[$target].index)>>
<<set _entry to "She took @@.mag;"+$raiders[$target].dmg_taken+"@@ and @@.sex;"+$raiders[$target].sex_taken+"@@ damage and became Stimulated from your Jolt Spell.">>
<<else>>
<<set _entry to "She took @@.mag;"+$raiders[$target].dmg_taken+"@@ and @@.sex;"+$raiders[$target].sex_taken+"@@ damage from your Jolt Spell.">>
<</if>>
<<set _lastLog to $raiders[$target].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[$target].report.log.push(_lastLog)>>
* DISPLAY INFO *
<<set _raiderTargetArray to []>>
<<set _raiderTargetArray.push($raiders[$target])>>
<<set _cardholderID to "cardholder-raid-"+_raiderTargetArray.length+"raiders">>
<<set _cardinfoID to "cardinfo-raid-"+_raiderTargetArray.length+"raiders">>
<<set _picboxID to "picbox-raid-"+_raiderTargetArray.length+"raiders">>
<<set _textboxID to "textbox-raid-"+_raiderTargetArray.length+"raiders">>
<</silently>>\
<div class="section">\
<<NextSpellButton>>\
<div class="cardholder-raid-playerside">\
<div class="cardinfo-raid-spell">\
<div class="roomtitle-raid-player">\
$pc_name Attacks
</div>\
<div class="picbox-raid-player">\
_spellStats.pic
</div>\
<div class="namebox-raid-player">\
<span style="font-size: 125%;"><strong>_spellStats.name</strong></span>
---- Spellcheck: $pc_spellbook[$spell_index].cur_check ----
</div>\
<div class="textbox-raid-player">\
<ul>\
<<SpellRoomText _spellStats>>
</ul>\
</div>\
</div>\
</div>\
<div class="cardholder-raid-raiderside">\
<<for _r = 0; _r < _raiderTargetArray.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_textboxID">\
<ul>\
<li>Her body was shocked by electric magic, taking @@.mag;_raiderTargetArray[_r].dmg_taken Magical@@ damage and @@.sex;_raiderTargetArray[_r].sex_taken Sexual@@ damage.</li>\
<<RaiderFetishText _raiderTargetArray[_r] _spellStats>>
<<PostCombatText _raiderTargetArray[_r] _spellStats>>
</ul>\
</div>\
<div @class="_picboxID">\
_pic
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\
<</if>>\<<silently>>\
*Display*
<</silently>>\
<div class="section">\
<div class="titlebox">\
The Town
</div>\
<div class="cardholder-town">\
<div class="cardborder-town">\
<div class="textbox-town">\
<div class="textbox-title-town">\
Slave Market
</div>\
<div class="textbox-info-town">\
A bustling place full in interesting characters, eager to see what new slaves are available today.
</div>\
<div class="textbox-link-town">\
<span id="1"><<button "Enter ^^1^^" "Slave Market">><<set $entered_market_bool to true>><</button>></span>
</div>\
</div>\
<div class="picbox-town">\
<<link [img[images/town/slave_market.jpg][Slave Market]]>><<set $entered_market_bool to true>><</link>>
</div>\
</div>\
</div>\
<div class="cardholder-town">\
<div class="cardborder-town">\
<div class="textbox-town">\
<div class="textbox-title-town">\
Treasure Shop
</div>\
<div class="textbox-info-town">\
A small shop loaded with treasures for sale.
</div>\
<div class="textbox-link-town">\
<span id="2"><<button "Enter ^^2^^" "Treasure Shop">><<set $entered_treasureshop_bool to true>><</button>></span>
</div>\
</div>\
<div class="picbox-town">\
<<link [img[images/town/treasure_shop.jpg][Treasure Shop]]>><<set $entered_treasureshop_bool to true>><</link>>
</div>\
</div>\
</div>\
<div class="cardholder-town">\
<div class="cardborder-town">\
<div class="textbox-town">\
<div class="textbox-title-town">\
Arcane Emporium
</div>\
<div class="textbox-info-town">\
A small store with many magical books lining the shelves.
</div>\
<div class="textbox-link-town">\
<span id="3"><<button "Enter ^^3^^" "Arcane Emporium">><<set $entered_emporium_bool to true>><</button>></span>
</div>\
</div>\
<div class="picbox-town">\
<<link [img[images/town/arcane_emporium.jpg][Arcane Emporium]]>><<set $entered_emporium_bool to true>><</link>>
</div>\
</div>\
</div>\
<div class="cardholder-town">\
<div class="cardborder-town">\
<div class="textbox-town">\
<div class="textbox-title-town">\
Adventurer's Guild
</div>\
<div class="textbox-info-town">\
A meeting hall filled with all kinds of sexy adventurers.
</div>\
<div class="textbox-link-town">\
<span id="4"><<button "Enter ^^4^^" "Adventurer's Guild">><<set $entered_guild_bool to true>><</button>></span>
</div>\
</div>\
<div class="picbox-town">\
<<link [img[images/town/adventurers_guild.jpg][Adventurer's Guild]]>><<set $entered_guild_bool to true>><</link>>
</div>\
</div>\
</div>\
<div class="cardholder-town">\
<div class="cardborder-town">\
<<if $dungeon_rank < 100>>\
<div class="textbox-town">\
<div class="textbox-title-town">\
Unknown
</div>\
<div class="textbox-info-town">\
Currently under construction, I wonder what it could be?
</div>\
<div class="textbox-link-town">\
<div class="offbutton">\
<<button "Enter">><</button>>
</div>\
</div>\
</div>\
<div class="picbox-town">\
[img[images/misc/unknown.png]]
</div>\
<<else>>\
<div class="textbox-town">\
<div class="textbox-title-town">\
Dragonscale Forge
</div>\
<div class="textbox-info-town">\
A shop that crafts unique Equipment or upgrades any that you own.
</div>\
<div class="textbox-link-town">\
<span id="5"><<button "Enter ^^5^^" "Dragonscale Forge">><<set $entered_forge_bool to true>><</button>></span>
</div>\
</div>\
<div class="picbox-town">\
<<link [img[images/town/dragonscale_forge.jpg][Dragonscale Forge]]>><<set $entered_forge_bool to true>><</link>>
</div>\
<</if>>\
</div>\
</div>\
<div class="cardholder-town">\
<div class="cardborder-town">\
<div class="textbox-town">\
<div class="textbox-title-town">\
Unknown
</div>\
<div class="textbox-info-town">\
Currently under construction, I wonder what it could be?
</div>\
<div class="textbox-link-town">\
<div class="offbutton">\
<<button "Enter">><</button>>
</div>\
</div>\
</div>\
<div class="picbox-town">\
[img[images/misc/unknown.png]]
</div>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Main Menu]]>><</button>></span> <span id="q"><<button "<u>Q</u>uick Menu" "Quick Menu">><</button>></span>
</div>\
</div>\<<if $visited_players_room === false && $tutorial_guides === true>>\
<<silently>>\
* Variables *
<<set $visited_players_room to true>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
$pc_name's Quarters
</div>\
<div class="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/mistress/face.jpg]]
</div>\
<div class="dialogue-text">\
Welcome to your room, $pc_name. There is a lot you can do here in addition to sleeping. You can view various stats, including lifetime stats or yesterday's report. You can see your current Blessings, organize your Spellbook, view your current Missions, take inventory of your @@.gold;Treasures@@, and expand your Vault. You can also increase your Dungeon Rank here when you have met the @@.rep;Reputation Milestone@@.
Additionally, you access the Slave Pack Menu from here. There, you can add, remove, or view Slave Packs in your game. You can also edit your name or your Dungeon's name and change the game's difficulty. If you want to start a new game, please come here and start a new game to preserve the Slave Pack settings. Otherwise, they will be reset to the default list.
</div>\
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="forward"><<button [[Continue|Player's Stats]]>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
</div>\
<<else>>\
<<silently>>\
*Variables*
<<if $stats_display == null>>
<<set $stats_display to "dungeon">>
<</if>>
* Favorite Spell *
<<set _favorite_spell to "None">>
<<set _highest to 0>>
<<for _i = 0; _i < $pc_spellbook.length; _i++>>
<<if $pc_spellbook[_i].cast > _highest>>
<<set _favorite_spell to $pc_spellbook[_i].name>>
<<set _highest to $pc_spellbook[_i].cast>>
<</if>>
<</for>>
*Display*
<</silently>>\
<div class="section">\
<div class="titlebox">\
$pc_name's Quarters
</div>\
<div class="cardholder-study">\
<div class="cardholder-study-stats">\
<<if $stats_display === "dungeon">>\
<div class="namebox-study-stats">\
$dungeon_name's History
</div>\
<div class="textbox-study-stats">\
Gold Earned from Raiders: $pc_raid_gold_earned
Gold Stolen by Raiders: $pc_raid_gold_stolen
Treasures Earned from Raiders: $pc_raid_treasure_earned
Treasures Stolen by Raiders: $pc_raid_treasure_stolen
Raiders Entered Dungeon: $raider_entered_stats.total
Raiders Captured: $raider_captured_stats.total
Raiders Abandoned: $raider_abandoned_stats.total
Raiders Cleared: $raider_cleared_stats.total
<div align="center"><span id="r"><<button "<u>R</u>aider Chart" "Raider Chart">><</button>></span></div>\
</div>\
<<elseif $stats_display === "player">>\
<div class="namebox-study-stats">\
$pc_name's History
</div>\
<div class="textbox-study-stats">\
Total Gold Earned: <<print $pc_raid_gold_earned + $slaves_gold_earned + $pc_gold_earned_other>>
Total Treasures Earned/Bought: <<print $pc_raid_treasure_earned + $slaves_treasure_earned + $pc_treasure_bought>>
Gold Spent in Town: $pc_town_gold_spent
Gold Spent on Rooms: $pc_rooms_gold_spent
Gold Spent on Upkeeps: $pc_upkeep_gold_spent
Total Gold Spent: <<print $pc_town_gold_spent + $pc_rooms_gold_spent + $pc_upkeep_gold_spent>>
Lust Essence Gained: $pc_lust_gained
Lust Essence Used: $pc_lust_spent
Treasures Bought: $pc_treasure_bought
Treasures Sold: $pc_treasure_sold
Spells Cast: $pc_cast_spells
Favorite Spell: _favorite_spell
Slaves Trained: $pc_private_training
</div>\
<<elseif $stats_display === "slave">>\
<div class="namebox-study-stats">\
Slaves' History
</div>\
<div class="textbox-study-stats">\
Raiders Enslaved: $pc_slaves_enslaved
Slaves Bought: $pc_slaves_bought
Slaves Sold: $pc_slaves_sold
Most Expensive Slave Bought: $pc_highest_slave_bought
Most Expensive Slave Sold: $pc_highest_slave_sold
Gold Earned: $slaves_gold_earned
Treasures Earned: $slaves_treasure_earned
EXP Given: $slaves_exp_given
Reputation Gained: $slaves_reputation_earned
Services Offered: $slaves_task_stats.service
Nights Prostituted: $slaves_task_stats.prostitution
Creatures Attended: $slaves_task_stats.caretaker
Traps Maintained: $slaves_task_stats.maintenance
Quests Completed: $slaves_task_stats.quest
Quests Failed: $slaves_task_stats.quest_fail
Classes Passed: $slaves_task_stats.class
Classes Failed: $slaves_task_stats.class_fail
Times Trained: $slaves_task_stats.train
</div>\
<<elseif $stats_display === "sex">>\
<div class="namebox-study-stats">\
$pc_name's Sex History
</div>\
<div class="textbox-study-stats">\
Anal: $pc_sex_stats.anal
Blow Job: $pc_sex_stats.blowjob
Cow Girl: $pc_sex_stats.cowgirl
Doggy: $pc_sex_stats.doggy
Foot Job: $pc_sex_stats.footjob
Hand Job: $pc_sex_stats.handjob
Missionary: $pc_sex_stats.missionary
Tit Job: $pc_sex_stats.titjob
Total: $pc_sex_stats.total
</div>\
<</if>>\
<div class="buttonbox-study-stats">\
<span id="t"><<button "<u>T</u>oggle Stats" "Player's Stats">>\
<<silently>>\
<<switch $stats_display>>
<<case "dungeon">>
<<set $stats_display to "player">>
<<case "player">>
<<set $stats_display to "slave">>
<<case "slave">>
<<set $stats_display to "sex">>
<<case "sex">>
<<set $stats_display to "dungeon">>
<</switch>>
<</silently>>\
<</button>></span>\
</div>\
</div>\
</div>\
<div class="cardholder-study">\
<div class="cardholder-smallbox">\
<div class="smallbox-study">\
<div class="namebox-study-packs">\
Slave Packs
</div>\
<div class="textbox-study-packs">\
Dungeon Lord allows you to create Slave Packs and add them to your game, expanding the variety of girls you will see. They show up as Slaves in the Slave Market or as Raiders. To add, remove, or view your current packs, click the button below. You can learn the requirements to create your Slave Packs there as well.
</div>\
<div class="buttonbox-study-packs">\
<span id="s"><<button "<u>S</u>lave Pack Menu" "Slave Pack Menu">><</button>></span>
</div>\
</div>\
</div>\
<div class="cardholder-smallbox">\
<div class="smallbox-study">\
<div class="buttonbox-study">\
<<if $reputation_nextrank_trigger === true && $dungeon_rank < 2>>\
<div class="studybutton">\
<span id="1"><<button "Rank Up ^^1^^" "Next Rank">><</button>></span>
</div>\
<<else>>\
<div class="studybutton-off">\
<<button "Rank Up">><</button>>
</div>\
<</if>>\
</div>\
<div class="buttonbox-study">\
<<if $days > 1>>\
<div class="studybutton">\
<span id="2"><<button "Previous Report ^^2^^" "Daily Summary">><<set $previous_bool to true>><</button>></span>
</div>\
<<else>>\
<div class="studybutton-off">\
<<button "Previous Report">><</button>>
</div>\
<</if>>\
</div>\
<div class="buttonbox-study">\
<div class="studybutton">\
<span id="3"><<button "Blessings ^^3^^" "Player Blessing List">><<set $filter_blessing to []>><</button>></span>
</div>\
</div>\
<div class="buttonbox-study">\
<div class="studybutton">\
<span id="4"><<button "Spellbook ^^4^^" "Player Spells List">>\
<<set $filter_spell to []>>\
<<for _s = 0; _s < $pc_spellbook.length; _s++>>\
<<UpdateSpell $pc_spellbook[_s]>>\
<</for>>\
<</button>></span>\
</div>\
</div>\
<div class="buttonbox-study">\
<div class="studybutton">\
<span id="5"><<button "Vault ^^5^^" "View Treasure Inventory">><</button>></span>
</div>\
</div>\
<div class ="buttonbox-study">\
<div class="studybutton">\
<span id="6"><<button "Mission Log ^^6^^" "Mission Log">><</button>></span>
</div>\
</div>\
<div class="buttonbox-study">\
<div class="studybutton">\
<span id="7"><<button "Edit Info/Difficulty ^^7^^" "Edit Info">><</button>></span>
</div>\
</div>\
<div class="buttonbox-study">\
<div class="studybutton">\
<span id="8"><<button "Change Log ^^8^^" "Change Log">><</button>></span>
</div>\
</div>\
<div class="buttonbox-study">\
<div class="studybutton">\
<span id="9"><<button "New Game ^^9^^" "New Game Option">><</button>></span>
</div>\
</div>\
<div class="buttonbox-study">\
<div class="studybutton">\
<span id="0"><<button "View Credits ^^0^^" "Credits">><</button>></span>
</div>\
</div>\
</div>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Amenities]]>><<unset $stats_display, $dungeon_sub_stats>><</button>></span> <span id="q"><<button "<u>Q</u>uick Menu" "Quick Menu">><<unset $stats_display, $dungeon_sub_stats>><</button>></span>\
</div>\
</div>\
<</if>>\<div class="section">\
<div class="titlebox">\
Remove $delete_room_id.name
</div>\
<div class="imagebox">\
$delete_room_id.pic
</div>\
<div class="textbox-center">\
Do you want to remove $delete_room_id.name from your Dungeon?
<span id="forward"><<button [[Yes|Dungeon Floor Manager]]>>\
<<silently>>\
REMOVE CARETAKER OR MAITENANCE JOBS
<<for _z = 0; _z < $slave_room_list.length; _z++>>
<<if $slave_room_list[_z].room_type === "Slave">>
<<if $slave_room_list[_z].job.type === "Caretaker">>
<<if $slave_room_list[_z].job.creature_index === $dungeon_floor_list[$delete_room_num].index>>
<<set $slave_room_list[_z].job to "">>
<</if>>
<</if>>
<<if $slave_room_list[_z].job.type === "Maintenance">>
<<if $slave_room_list[_z].job.trap_index === $dungeon_floor_list[$delete_room_num].index>>
<<set $slave_room_list[_z].job to "">>
<</if>>
<</if>>
<<if $slave_room_list[_z].side_job.type === "Caretaker">>
<<if $slave_room_list[_z].side_job.creature_index === $dungeon_floor_list[$delete_room_num].index>>
<<set $slave_room_list[_z].side_job to "">>
<</if>>
<</if>>
<<if $slave_room_list[_z].side_job.type === "Maintenance">>
<<if $slave_room_list[_z].side_job.trap_index === $dungeon_floor_list[$delete_room_num].index>>
<<set $slave_room_list[_z].side_job to "">>
<</if>>
<</if>>
<</if>>
<</for>>
STORE UNIT
<<if !$pc_saved_list>>
<<set $pc_saved_list to []>>
<</if>>
<<set _bool to false>>
<<for _z = 0; _z < $pc_saved_list.length; _z++>>
<<if $pc_saved_list[_z].base_name === $dungeon_floor_list[$delete_room_num].base_name>>
<<set $pc_saved_list[_z] to clone($dungeon_floor_list[$delete_room_num])>>
<<set _bool to true>>
<<break>>
<</if>>
<</for>>
<<if _bool === false>>
<<set $pc_saved_list.push(clone($dungeon_floor_list[$delete_room_num]))>>
<</if>>
<<set _remove to $pc_owned_list.delete($dungeon_floor_list[$delete_room_num].base_name)>>
<<set $dungeon_floor_list[$delete_room_num] to setup.empty_room>>
<<unset $delete_room_id, $delete_room_num>>
<</silently>>\
<</button>></span> <span id="back"><<button "No" `previous()`>><</button>></span>
</div>\
</div>\ <<silently>>\
*Variables*
<<set _position to []>> holds which position the raider abandoning the dungeon is in
<<set $exhibitionist_trigger to false>> resets trigger
<<set $update_next_room to true>>
*Set Gif*
<<switch $exhibitionist_list.length>>
<<case 1>>
<<set _gif to "[img[gifs/events/exhibitionist_1.gif]]">>
<<set _text to 1>>
<<case 2>>
<<set _gif to "[img[gifs/events/exhibitionist_2.gif]]">>
<<set _text to 2>>
<<case 3>>
<<set _gif to "[img[gifs/events/exhibitionist_3.gif]]">>
<<set _text to 3>>
<</switch>>
*Find Raiders Position*
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $exhibitionist_list.includes($raiders[_i].index)>>
<<set _position.push(_i)>>
<<set $raiders[_i].abandoned to true>>
<<set $raiders[_i].abandoned_by to "Exhibitionist">>
<<set $raiders[_i].statuses.push(setup.abandoned)>>
<<set $raiders[_i].status_names.push(setup.abandoned.id)>>
SET REPUTATION GAINED
ADD REP AMOUNT
<<set _rep_amount to Math.round($raiders[_i].subclass.base_reputation * setup.abandoned_rep_mod)>>
INCREASE REP BASED ON NUMBER OF ABANDONS
<<set _rep_amount += Math.round(setup.abandoned_rep_constant * $abandoned_girl_list.length)>>
FAMOUS
<<if $raiders[_i].trait_names.includes("Famous")>>
<<set _rep_amount to Math.round(_rep_amount * setup.famous.mult)>>
<</if>>
SET REP AMOUNT AND ADD TO LIST
<<set $raiders[_i].reputation to _rep_amount>>
<<set $abandoned_girl_list.push($raiders[_i])>>
STATS
<<set $pc_total_raiders_abandoned++>>
UPDATE RAIDER REPORT
<<set _entry to "She felt the need to expose herself to the world and Abandoned her run.">>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[_i].report.log.push(_lastLog)>>
SET RAIDER REPORT RESULT
<<set _result to "Her Exhibitionist made her Abandon the Dungeon after getting too horny.">>
<<set $raiders[_i].report.result to clone(_result)>>
SET PIC
<<if $raiders[_i].body_type === "busty">>
<<set _exhPic to "[img[images/misc/exhibitionist/0.jpg]]">>
<<elseif $raiders[_i].body_type === "average">>
<<set _exhPic to "[img[images/misc/exhibitionist/1.jpg]]">>
<<elseif $raiders[_i].body_type === "slender">>
<<set _exhPic to "[img[images/misc/exhibitionist/2.jpg]]">>
<</if>>
<<set $raiders[_i].report.result_pic to clone(_exhPic)>>
PUSH REPORT TO LIST
<<set $raider_report_list.push($raiders[_i].report)>>
<</if>>
<</for>>
* Next Room Link *
<<BetweenRoomLink>>
*Display*
<</silently>>\
<div class="section">\
<div class="titlebox">\
The Need to be Seen
</div>\
<div class="imagebox">\
_gif
</div>\
<div class="textbox-center">\
<<switch _text>>\
<<case 1>>\
The Raider was overcome by lust and the feeling was too great to keep to herself, she need to show the world! She could not finish her goal today and left, stripping off her clothes as she went.
<<case 2>>\
The Raiders were overcome by their lust and shared the thrill of running around public naked. The thought of running through town with someone else only heightened the excitement as they both ran off, stripping off their clothes.
<<case 3>>\
The party was full of exhibitionists and wanted nothing more than to leave the dungeon and show off their sexy bodies. Before going they had some fun though, just for you!
<</switch>>\
<<if $raiders.length > _text>>\
<span id="forward"><<button [[Continue|_link]]>><<set _delete to $raiders.deleteAt(_position)>><</button>></span>
<<elseif $raiders.length === _text && $raiding_girls_list.length > 0>>\
The next party is entering now.
<span id="forward"><<button [[Next Group|Raiding Party]]>><<set _delete to $raiders.deleteAt(_position)>><</button>></span>
<<elseif $raiders.length === _text && $raiders.length > 1 && $raiding_girls_list.length === 0>>\
That was the last group for the night, time to check the reports.
<<if $captured_girl_list.length > 0>>\
<span id="forward"><<button [[End Raid|Captured Raiders]]>><<set _delete to $raiders.deleteAt(_position)>><</button>></span>
<<else>>\
<span id="forward"><<button [[End Raid|Daily Summary]]>><<set _delete to $raiders.deleteAt(_position)>><</button>></span>
<</if>>\
<<else>>\
She was the last Raider tonight, time to see how you did.
<<if $captured_girl_list.length > 0>>\
<span id="forward"><<button [[End Raid|Captured Raiders]]>><<set _delete to $raiders.deleteAt(_position)>><</button>></span>
<<else>>\
<span id="forward"><<button [[End Raid|Daily Summary]]>><<set _delete to $raiders.deleteAt(_position)>><</button>></span>
<</if>>\
<</if>>\
</div>\
</div>\<<if $spell_targeting === true>>\
<<silently>>\
*Variables*
<<set _spell_percent_list to []>> Holds all the spell percent for each raider
* Overload Spellcheck *
<<if $overloadSpellBool === true>>
<<set $pc_spellbook[$spell_index].cur_check += (Math.round($pc_spellbook[$spell_index].cur_check * setup.blessing_02_12.float)).clamp(1, 1000000)>>
<</if>>
* Setup Raiders *
<<RaiderSetup $raiders>>
*Calc Percent for each Raider*
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].status_names.includes(setup.stripped.id)>>
SET PERCENT TO 0
<<set _spell_percent_list.push(0)>>
<<else>>
CALC CHANCE
<<CalcSpellcheck $raiders[_i] $pc_spellbook[$spell_index].cur_check "Player">>
<<set _spell_percent_list.push(_spellcheck)>>
<</if>>
<</for>>
* Display Info *
<<set _cardholderID to "cardholder-"+$raiders.length+"girls">>
<<set _cardinfoID to "cardinfo-"+$raiders.length+"girls">>
<<set _picboxID to "picbox-"+$raiders.length+"girls">>
<<set _textboxID to "textbox-"+$raiders.length+"girls">>
<<set _linkboxID to "linkbox-targeting-"+$raiders.length+"girls">>
<</silently>>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|View Spells]]>><<unset $mana_cost, $spell_index>><</button>></span>
</div>\
<div class="titlebox">\
Choose a Target
</div>\
<<for _r = 0; _r < $raiders.length; _r++>>\
<<set _hotKey to _r + 1>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
<div @class="_textboxID">\
Name: $raiders[_r].name
Class: $raiders[_r].subclass.name $raiders[_r].class
Role: $raiders[_r].role
Traits: <<for _i = 0; _i < $raiders[_r].traits.length; _i++>>\
<<if $raiders[_r].traits[_i].type === "Special">>\
<span style="color:gold"><<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>></span><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<<else>>\
<<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<</if>>\
<</for>>
Kinks: <<if $raiders[_r].kinks.length === 0>>None<<else>>$raiders[_r].kinks<</if>>
Turn-Offs: <<if $raiders[_r].turnoffs.length === 0>>None<<else>>$raiders[_r].turnoffs<</if>>
Statuses: <<if $raiders[_r].statuses.length == 0>>\
None
<<else>>\
<<for _i = 0; _i < $raiders[_r].statuses.length; _i++>>\
<<hovertip "$raiders[_r].statuses[_i].tooltip">>$raiders[_r].statuses[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].statuses.length>>, <</if>><</for>><</if>>
</div>\
</div>\
<div @class="_linkboxID">\
<<if _spell_percent_list[_r] <= 39>>\
<<set _color to "bad">>\
<<elseif _spell_percent_list[_r] <= 69>>\
<<set _color to "neutral">>\
<<else>>\
<<set _color to "good">>\
<</if>>\
Shatter Effect Chance: <span @class="_color">_spell_percent_list[_r]%</span> \
<<if $raiders[_r].cur_hp === 1 && _spell_percent_list[_r] === 0>>\
<div class="offbutton">\
<<hovertip "Will have no effect">><<button "Target Raider">><</button>><</hovertip>>
</div>\
<<else>>\
<<capture _r, _hotKey>>\
<span @id="_hotKey"><<button "Target Raider ^^_hotKey^^" $pc_spellbook[$spell_index].passage>><<unset $spell_targeting>><<set $target to _r>><<set $spell_percent to _spell_percent_list[_r]>><</button>></span>
<</capture>>\
<</if>>\
</div>\
</div>\
<</for>>\
<<else>>\
<<silently>>\
*Setup Spell*
OVERLOAD SPELL
<<if $overloadSpellBool === true>>
<<set $pc_spellbook[$spell_index].cur_dmg += (Math.round($pc_spellbook[$spell_index].cur_dmg * setup.blessing_02_12.float)).clamp(1, 1000000)>>
<</if>>
* Setup Raiders *
<<RaiderSetup $raiders>>
SET EFFECT SPELLCHECK
<<set _spell_percent to Math.trunc($pc_spellbook[$spell_index].base_percent + ($pc_spellbook[$spell_index].percent_per_level * $pc_level))>>
CREATE NEW SPELL VARIABLE
<<set _spellStats to setup.newSpell>>
CASTING SPELL WIDGET
<<CastingSpell $pc_spellbook[$spell_index] $mana_cost "Player" true>>
UPDATE VARIABLE
<<set _spellStats.name to $pc_spellbook[$spell_index].name>>
<<set _spellStats.cast to $pc_spellbook[$spell_index].cast>>
<<set _spellStats.attack_type to "Magical">>
<<set _spellStats.mana to $mana_cost>>
<<set _spellStats.percent to $spell_percent>>
<<set _spellStats.dmg to $pc_spellbook[$spell_index].cur_dmg>>
<<set _spellStats.pic to $pc_spellbook[$spell_index].img>>
* Apply Damage *
<<NormalAttack $raiders[$target] _spellStats _spellStats.dmg>>
* Spell Effect Check *
<<if _spellStats.percent > 0>>
<<SimSpellcheck $raiders[$target] _spellStats.percent "Player">>
<<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[$target].index) || _text_triggers.check.spellcheck_failed.includes($raiders[$target].index)>>
<<AddStatus $raiders[$target] setup.stripped>>
<</if>>
<</if>>
* Post Combat *
<<PostCombat $raiders[$target] _spellStats>>
SET PIC
<<set _picArray to clone($pc_spellbook[$spell_index].raider_pics)>>
<<set _pic to _picArray[$raiders[$target].body_type].pluck()>>
UPDATE REPORT
<<if _text_triggers.status.stripped.includes($raiders[$target].index)>>
<<set _entry to "She took @@.mag;"+$raiders[$target].dmg_taken+"@@ damage and became Stripped from your Shattering Blast Spell.">>
<<else>>
<<set _entry to "She took @@.mag;"+$raiders[$target].dmg_taken+"@@ damage from your Shattering Blast Spell.">>
<</if>>
<<set _lastLog to $raiders[$target].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[$target].report.log.push(_lastLog)>>
* DISPLAY INFO *
<<set _raiderTargetArray to []>>
<<set _raiderTargetArray.push($raiders[$target])>>
<<set _cardholderID to "cardholder-raid-"+_raiderTargetArray.length+"raiders">>
<<set _cardinfoID to "cardinfo-raid-"+_raiderTargetArray.length+"raiders">>
<<set _picboxID to "picbox-raid-"+_raiderTargetArray.length+"raiders">>
<<set _textboxID to "textbox-raid-"+_raiderTargetArray.length+"raiders">>
<</silently>>\
<div class="section">\
<<NextSpellButton>>\
<div class="cardholder-raid-playerside">\
<div class="cardinfo-raid-spell">\
<div class="roomtitle-raid-player">\
$pc_name Attacks
</div>\
<div class="picbox-raid-player">\
_spellStats.pic
</div>\
<div class="namebox-raid-player">\
<span style="font-size: 125%;"><strong>_spellStats.name</strong></span>
---- Spellcheck: $pc_spellbook[$spell_index].cur_check ----
</div>\
<div class="textbox-raid-player">\
<ul>\
<<SpellRoomText _spellStats>>
</ul>\
</div>\
</div>\
</div>\
<div class="cardholder-raid-raiderside">\
<<for _r = 0; _r < _raiderTargetArray.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_textboxID">\
<ul>\
<li>She was struck by a powerful blast of magic, taking @@.mag;_raiderTargetArray[_r].dmg_taken Magical@@ damage.</li>\
<<RaiderFetishText _raiderTargetArray[_r] _spellStats>>
<<PostCombatText _raiderTargetArray[_r] _spellStats>>
</ul>\
</div>\
<div @class="_picboxID">\
_pic
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\
<</if>>\<<if $cur_task.folder === "">>\
<div id="section">\
<div id="cardholder-sexlist">\
<div id="header-sexlist">\
Sex Options
</div>\
<<for _i = 0; _i < $cur_slave.slave_pack.service_positions.length; _i++>>\
<<set _current_service_position to $cur_slave.slave_pack.service_positions[_i]>>
<div id="cells-sexlist">\
<<link [[_current_service_position|Player Service Task Passage]]>><<set $cur_task.folder to _current_service_position>><</link>>
</div>\
<</for>>\
</div>\
<div id="picholder-sexlist">\
<div class="pic-sexlist">\
$cur_slave.body_pic
</div>\
</div>\
</div>\
<<else>>\
<<silently>>\
*Variables*
<<set _levelup_trigger to false>> set to true if player gained level
<<set _times_leveledup to 0>> number of times the player leveled up
<<set _love_trigger to false>> set to true if slave loves stat increased
<<set _libido_trigger to false>> set to true if slave libido stat increased
<<set _energy_trigger to false>> set to true if slave energy increased
<<set _virgin_neg_trigger to false>> set to true if slave virginity is broken and replaced with a negative trait
<<set _virgin_pos_trigger to false>> set to true if slave virginity is broken and replaced with a positive trait
<<set _exp_mod to 0.15>> increase or decreased amount of exp earned based on difficulty
*Set Pic*
<<set _pic to $cur_slave.slave_pack[$cur_task.folder].random()>>
*Get Slave Info*
<<set _cur_slave_trait_names to []>>
<<for _i = 0; _i < $cur_slave.positive_traits.length; _i++>>
<<set _trait to $cur_slave.positive_traits[_i].name>>
<<set _cur_slave_trait_names.push(_trait)>>
<</for>>
<<for _i = 0; _i < $cur_slave.negative_traits.length; _i++>>
<<set _trait to $cur_slave.negative_traits[_i].name>>
<<set _cur_slave_trait_names.push(_trait)>>
<</for>>
*Luck*
<<set _rng to random(1, 6)>>
<<if _rng === 6>>
<<set _luck to 1>>
<<elseif _rng === 1>>
<<set _luck to -1>>
<<else>>
<<set _luck to 0>>
<</if>>
*Base EXP Gained*
<<if $cur_slave.love >= $cur_slave.obedience>>
<<set _stat to $cur_slave.love>>
<<else>>
<<set _stat to $cur_slave.obedience>>
<</if>>
*Rating*
<<set _exp_amount to Math.round(random($cur_task.min_exp, $cur_task.max_exp) + ($cur_task.exp_per_love * $cur_slave.love) + ($cur_task.exp_per_libido * $cur_slave.libido))>>
<<if _stat + _luck >= $cur_task.best>>
<<set _rating to 3>>
<<set _exp_amount to Math.round(_exp_amount * setup.service_best_mod)>>
<<elseif _stat + _luck >= $cur_task.average>>
<<set _rating to 2>>
<<else>>
<<set _rating to 1>>
<<set _exp_amount to Math.round(_exp_amount * setup.service_worst_mod)>>
<</if>>
*Virgin Check*
<<if _cur_slave_trait_names.includes(setup.virginity.name)>>
<<if $cur_task.folder === "missionary" || $cur_task.folder === "cowgirl" || $cur_task.folder === "doggy">>
REMOVE VIRGINITY TRAIT
<<for _i = 0; _i < $cur_slave.positive_traits.length; _i++>>
<<if $cur_slave.positive_traits[_i].name === setup.virginity.name>>
<<set _remove to $cur_slave.positive_traits.deleteAt(_i)>>
<<break>>
<</if>>
<</for>>
ADD POSITIVE VIRGIN TRAIT
<<if $cur_slave.love >= setup.virginity.int>>
<<set $cur_slave.positive_traits.push(setup.lover)>>
<<set $cur_slave.love_limit += setup.lover.int>>
<<set _virgin_pos_trigger to true>>
<<else>>
<<set $cur_slave.positive_traits.push(setup.loathing)>>
<<set _virgin_neg_trigger to true>>
<</if>>
<</if>>
<</if>>
* EXP MODIFIERS *
SEXY TRAIT
<<if _cur_slave_trait_names.includes("Sexy")>>
<<set _amount to Math.round(_exp_amount * setup.sexy.float)>>
<<set _exp_amount += _amount>>
<</if>>
LOVER TRAIT
<<if _cur_slave_trait_names.includes("Lover")>>
<<set _amount to Math.round(_exp_amount * setup.lover.mult)>>
<<set _exp_amount += _amount>>
<</if>>
RUDE TRAIT
<<if _cur_slave_trait_names.includes("Rude")>>
<<set _amount to Math.round(_exp_amount * setup.rude.float)>>
<<set _exp_amount -= _amount>>
<</if>>
LOATHING TRAIT
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _amount to Math.round(_exp_amount * setup.loathing.float)>>
<<set _exp_amount -= _amount>>
<</if>>
---ADD EXP---
DIFFICULTY MOD
<<set _amount to Math.round(_exp_amount * _exp_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _exp_amount += _amount>>
<<case "brutal">>
<<set _exp_amount -= _amount>>
<</switch>>
CLAMP MIN
<<if _exp_amount < 1>>
<<set _exp_amount to 1>>
<</if>>
ADD EXP AND STATS
<<if $pc_level < $pc_levelcap>>
<<set $pc_exp += _exp_amount>>
<</if>>
<<set $pc_total_sex++>>
<<set $cur_slave.total_exp_given += _exp_amount>>
<<set $cur_slave.total_tasks++>>
<<switch $cur_task.folder>>
<<case "handjob">>
<<set $pc_total_handjob++>>
<<case "missionary">>
<<set $pc_total_missionary++>>
<<case "cowgirl">>
<<set $pc_total_cowgirl++>>
<<case "blowjob">>
<<set $pc_total_blowjob++>>
<<case "doggy">>
<<set $pc_total_doggy++>>
<<case "anal">>
<<set $pc_total_anal++>>
<</switch>>
LEVEL UP CHECK
<<if $pc_exp >= $pc_nextlevel_exp>>
<<for _i = 0; _i < 1; _i++>>
<<set _levelup_trigger to true>>
<<set _times_leveledup++>>
<<set $pc_level++>>
<<set $pc_max_mana += $pc_mana_gain>>
<<set $pc_cur_mana += $pc_mana_gain>>
<<set $pc_nextlevel_exp to Math.trunc((setup.pc_nextlevel_constant * $pc_level * (1 + $pc_level)) + ((setup.pc_nextlevel_constant * 2) * $pc_level))>>
<<if $pc_exp >= $pc_nextlevel_exp>>
<<if $pc_level < $pc_levelcap>>
<<set _i-->>
<<else>>
<<set $pc_exp to Math.trunc((setup.pc_nextlevel_constant * ($pc_level - 1) * (1 + ($pc_level - 1))) + ((setup.pc_nextlevel_constant * 2) * ($pc_level - 1)))>>
<</if>>
<</if>>
<</for>>
<</if>>
*Calc Love Stat Growth*
<<if $cur_slave.love < $cur_slave.love_limit>>
---CALC AMOUNT---
<<set _love_growth to $cur_task.love_growth * $cur_slave.love_growth_rate>>
---STAT GROWTH MODIFIERS---
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _amount to _love_growth * setup.loathing.float>>
<<set _love_growth -= _amount>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.love_tracker += _love_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.love_tracker >= $cur_slave.love_tracker_limit>>
<<set _love_trigger to true>>
<<set $cur_slave.love++>>
<<set $cur_slave.love_tracker to 0>>
<<set $cur_slave.love_tracker_limit to Math.trunc(($cur_slave.love * $cur_slave.love * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
*Calc Libido Stat Growth*
<<if $cur_slave.libido < $cur_slave.libido_limit>>
---CALC AMOUNT---
<<set _libido_growth to $cur_task.libido_growth * $cur_slave.libido_growth_rate>>
---STAT GROWTH MODIFIERS---
LOYAL
<<if _cur_slave_trait_names.includes("Loyal")>>
<<if $cur_slave.love >= setup.loyal.love_req>>
<<set _libido_growth *= setup.loyal.mult>>
<</if>>
<</if>>
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _amount to _libido_growth * setup.loathing.float>>
<<set _libido_growth -= _amount>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.libido_tracker += _libido_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.libido_tracker >= $cur_slave.libido_tracker_limit>>
<<set _libido_trigger to true>>
<<set $cur_slave.libido++>>
<<set $cur_slave.libido_tracker to 0>>
<<set $cur_slave.libido_tracker_limit to Math.trunc(($cur_slave.libido * $cur_slave.libido * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
*Calc Energy Stat Growth*
<<if $cur_slave.energy < $cur_slave.energy_limit>>
---CALC AMOUNT---
<<set _energy_growth to $cur_task.energy_growth * $cur_slave.energy_growth_rate>>
---STAT GROWTH MODIFIERS---
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _amount to _energy_growth * setup.loathing.float>>
<<set _energy_growth -= _amount>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.energy_tracker += _energy_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.energy_tracker >= $cur_slave.energy_tracker_limit>>
<<set _energy_trigger to true>>
<<set $cur_slave.energy++>>
<<set $cur_slave.cur_energy++>>
<<set $cur_slave.energy_tracker to 0>>
<<set $cur_slave.energy_tracker_limit to Math.trunc(($cur_slave.energy * $cur_slave.energy * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
<<set _name to $cur_slave.name>>
*Display*
<</silently>>\
<div id="section">\
<div id="titlebox">\
_name
</div>\
<div class="centered">\
_pic
</div>\
<div id="textbox">\
<<if _luck === 1>>\
_name's service was very good. \
<<elseif _luck === 0>>\
_name's service was decent. \
<<else>>\
_name's service was terrible. \
<</if>>\
<<if _rating === 3>>\
$cur_task.best_text
You gained _exp_amount EXP.
<<elseif _rating === 2>>\
$cur_task.average_text
You gained _exp_amount EXP.
<<else>>\
$cur_task.worst_text
You only gained _exp_amount EXP.
<</if>>\
<<if _levelup_trigger === true>>\
You have gained _times_leveledup <<if _times_leveledup === 1>>level<<else>>levels<</if>>. <<if $pc_level === $pc_levelcap>>You cannot gain anymore levels in this Rank.<</if>>
<</if>>\
<<if _virgin_pos_trigger === true>>\
You have taken $cur_slave.name's virginity, because she loves you and wanted you to have it, <span style="color:green">she has gained a new positive Trait</span>.
<</if>>\
<<if _virgin_neg_trigger === true>>\
You have taken $cur_slave.name's virginity, because she did not want you to take it yet, <span style="color:red">she has gained a new negative Trait</span>.
<</if>>\
<<if _love_trigger === true>>\
$cur_slave.name's <span style="color:darkred">Love</span> stat has increased. <<if $cur_slave.love === $cur_slave.love_limit>>Her <span style="color:darkred">Love</span> cannot go any higher.<</if>>
<</if>>\
<<if _libido_trigger === true>>\
$cur_slave.name's <span style="color:fuchsia">Libido</span> stat has increased. <<if $cur_slave.libido === $cur_slave.libido_limit>>Her <span style="color:fuchsia">Libido</span> cannot go any higher.<</if>>
<</if>>\
<<if _energy_trigger === true>>\
$cur_slave.name's <span style="color:mediumseagreen">Energy</span> stat has increased. <<if $cur_slave.energy === $cur_slave.energy_limit>>Her <span style="color:mediumseagreen">Energy</span> cannot go any higher.<</if>>
<</if>>\
<<if $cur_slave.cur_energy === 0 || $cur_slave.injured === true>>\
[[Finish|Slave Room]]
<<else>>\
[[Finish|Assign Slave Task]]
<</if>>\
</div>\
</div>\
<<silently>>\
---UPDATE SLAVE---
<<switch $cur_slave_num>>
<<case 1>>
<<set $slave_room_1 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 2>>
<<set $slave_room_2 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 3>>
<<set $slave_room_3 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 4>>
<<set $slave_room_4 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 5>>
<<set $slave_room_5 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 6>>
<<set $slave_room_6 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 7>>
<<set $slave_room_7 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 8>>
<<set $slave_room_8 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 9>>
<<set $slave_room_9 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 10>>
<<set $slave_room_10 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<</switch>>
<</silently>>\
<</if>>\<<silently>>\
*Variables*
<<set _robust_trigger to false>> set to true if slave avoiding getting injured because of Robust trait, triggers text
<<set _virgin_neg_trigger to false>> set to true if virgin lost her virginity to show text
<<set _libido_trigger to false>> set to true if slaves libido increased to show text
<<set _obedience_trigger to false>> set to true if slaves obedience increased to show text
<<set _strength_trigger to false>> set to true if slaves strength increased to show text
<<set _energy_trigger to false>> set to true if slaves energy increased to show text
<<set _gold_mod to 0.1>> increase or decrease amount of gold earned depending on difficulty
<<set _best_risk_percent to 20>>
<<set _average_risk_percent to 40>>
<<set _worst_risk_percent to 90>>
RISK CLAMPS
<<set _max_risk to 95>>
<<set _min_risk to 5>>
*Get Slave Info*
<<set _cur_slave_trait_names to []>>
<<for _i = 0; _i < $cur_slave.positive_traits.length; _i++>>
<<set _trait to $cur_slave.positive_traits[_i].name>>
<<set _cur_slave_trait_names.push(_trait)>>
<</for>>
<<for _i = 0; _i < $cur_slave.negative_traits.length; _i++>>
<<set _trait to $cur_slave.negative_traits[_i].name>>
<<set _cur_slave_trait_names.push(_trait)>>
<</for>>
* Calc Luck *
<<set _rng to random(1, 6)>>
<<if _rng === 6>>
<<set _luck to 1>>
<<elseif _rng === 1>>
<<set _luck to -1>>
<<else>>
<<set _luck to 0>>
<</if>>
* Fail Check *
<<if _luck === 1>>
<<set _percent to $cur_task.success_rate + $cur_task.luck_rate>>
<<elseif _luck === -1>>
<<set _percent to $cur_task.success_rate - $cur_task.luck_rate>>
<<else>>
<<set _percent to $cur_task.success_rate>>
<</if>>
<<set _rng to random(1, 100)>>
SEDUCTIVE TRAIT
<<if _cur_slave_trait_names.includes("Seductive")>>
<<set _amount to Math.round(_percent * setup.seductive.float)>>
<<set _percent += _amount>>
<</if>>
<<if _percent >= _rng>>
<<set _failed to false>>
* Client Rating *
<<if $cur_slave.libido + _luck >= $cur_task.best>>
<<set _client_rating to 3>>
<<set _risk_percent to _best_risk_percent>>
<<elseif $cur_slave.libido + _luck >= $cur_task.average>>
<<set _client_rating to 2>>
<<set _risk_percent to _average_risk_percent>>
<<else>>
<<set _client_rating to 1>>
<<set _risk_percent to _worst_risk_percent>>
<</if>>
* Sex Type *
<<set _rng to random(1, 100)>>
<<if $cur_task.group_rate + _luck >= _rng>>
<<set _sex_type to "group">>
<<else>>
<<set _sex_type to setup.prostitution_sex_keys.random()>>
<</if>>
*Risk and Strength Check*
<<set _rng to random(1, 100)>>
<<if _risk_percent >= _rng>>
<<set _rng to random($cur_task.min_strength, $cur_task.max_strength)>>
<<if _rng > $cur_slave.strength + _luck>>
ROBUST CHECK
<<if _cur_slave_trait_names.includes("Robust")>>
<<set _rng to random(1, 100)>>
<<if _rng <= setup.robust.percent>>
<<set _robust_trigger to true>>
<<else>>
<<set $cur_slave.injured to true>>
<<set $cur_slave.injured_cd to random($cur_task.min_injured, $cur_task.max_injured)>>
SOFT TRAIT
<<if _cur_slave_trait_names.includes("Soft")>>
<<set $cur_slave.injured_cd *= setup.soft.mult>>
<</if>>
<</if>>
<<else>>
<<set $cur_slave.injured to true>>
<<set $cur_slave.injured_cd to random($cur_task.min_injured, $cur_task.max_injured)>>
SOFT TRAIT
<<if _cur_slave_trait_names.includes("Soft")>>
<<set $cur_slave.injured_cd *= setup.soft.mult>>
<</if>>
<</if>>
<</if>>
<</if>>
*Gold Earned*
<<set _gold_earned to Math.round(random($cur_task.min_gold, $cur_task.max_gold) + ($cur_task.gold_per_libido * $cur_slave.libido))>>
<<switch _client_rating>>
<<case 3>>
<<set _gold_earned to Math.round(_gold_earned * setup.prostitution_best_mod)>>
<<case 1>>
<<set _gold_earned to Math.round(_gold_earned * setup.prostitution_worst_mod)>>
<</switch>>
GROUP SEX
<<if _sex_type === "group">>
<<set _gold_earned *= $cur_task.group>>
<</if>>
BEAUTIFUL TRAIT
<<if _cur_slave_trait_names.includes("Beautiful")>>
<<set _gold_earned *= setup.beautiful.mult>>
<</if>>
AWKWARD TRAIT
<<if _cur_slave_trait_names.includes("Awkward")>>
<<set _amount to Math.round(_gold_earned * setup.awkward.float)>>
<<set _gold_earned -= _amount>>
<</if>>
DIFFICULTY MOD
<<set _amount to Math.round(_gold_earned * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _gold_earned += _amount>>
<<case "brutal">>
<<set _gold_earned -= _amount>>
<</switch>>
CLAMP MIN GOLD
<<if _gold_earned < 1>>
<<set _gold_earned to 1>>
<</if>>
ADD GOLD TO PLAYER
<<set $pc_gold += _gold_earned>>
<<set $pc_total_gold_earned += _gold_earned>>
*Update Slave Stats*
VIRGIN TRAIT
<<if _cur_slave_trait_names.includes(setup.virginity.name)>>
<<if setup.prostitution_sex_list[_sex_type].virgin_able>>
REMOVE VIRGINITY TRAIT
<<for _i = 0; _i < $cur_slave.positive_traits.length; _i++>>
<<if $cur_slave.positive_traits[_i].name === setup.virginity.name>>
<<set _remove to $cur_slave.positive_traits.deleteAt(_i)>>
<<break>>
<</if>>
<</for>>
<<set $cur_slave.positive_traits.push(setup.loathing)>>
<<set _virgin_neg_trigger to true>>
<</if>>
<</if>>
LIBIDO GROWTH
<<if $cur_slave.libido < $cur_slave.libido_limit && _client_rating > 0>>
---CALC AMOUNT---
<<set _libido_growth to $cur_task.libido_growth * $cur_slave.libido_growth_rate>>
---STAT GROWTH MODIFIERS---
LOYAL
<<if _cur_slave_trait_names.includes("Loyal")>>
<<if $cur_slave.love >= setup.loyal.love_req>>
<<set _libido_growth *= setup.loyal.mult>>
<</if>>
<</if>>
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _amount to _libido_growth * setup.loathing.float>>
<<set _libido_growth -= _amount>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.libido_tracker += _libido_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.libido_tracker >= $cur_slave.libido_tracker_limit>>
<<set _libido_trigger to true>>
<<set $cur_slave.libido++>>
<<set $cur_slave.libido_tracker to 0>>
<<set $cur_slave.libido_tracker_limit to Math.trunc(($cur_slave.libido * $cur_slave.libido * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
OBEDIENCE GROWTH
<<if $cur_slave.obedience < $cur_slave.obedience_limit>>
---CALC AMOUNT---
<<set _obedience_growth to $cur_task.obedience_growth * $cur_slave.obedience_growth_rate>>
---STAT GROWTH MODIFIERS---
LOYAL
<<if _cur_slave_trait_names.includes("Loyal")>>
<<if $cur_slave.love >= setup.loyal.love_req>>
<<set _obedience_growth *= setup.loyal.mult>>
<</if>>
<</if>>
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _amount to _obedience_growth * setup.loathing.float>>
<<set _obedience_growth -= _amount>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.obedience_tracker += _obedience_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.obedience_tracker >= $cur_slave.obedience_tracker_limit>>
<<set _obedience_trigger to true>>
<<set $cur_slave.obedience++>>
<<set $cur_slave.obedience_tracker to 0>>
<<set $cur_slave.obedience_tracker_limit to Math.trunc(($cur_slave.obedience * $cur_slave.obedience * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
STRENGTH GROWTH
<<if $cur_slave.strength < $cur_slave.strength_limit>>
---CALC AMOUNT---
<<set _strength_growth to $cur_task.strength_growth * $cur_slave.strength_growth_rate>>
---STAT GROWTH MODIFIERS---
MOTIVATED
<<if _cur_slave_trait_names.includes("Motivated")>>
<<if $cur_slave.love >= setup.motivated.love_req>>
<<set _strength_growth *= setup.motivated.mult>>
<</if>>
<</if>>
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _amount to _strength_growth * setup.loathing.float>>
<<set _strength_growth -= _amount>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.strength_tracker += _strength_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.strength_tracker >= $cur_slave.strength_tracker_limit>>
<<set _strength_trigger to true>>
<<set $cur_slave.strength++>>
<<set $cur_slave.strength_tracker to 0>>
<<set $cur_slave.strength_tracker_limit to Math.trunc(($cur_slave.strength * $cur_slave.strength * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
ENERGY GROWTH
<<if $cur_slave.energy < $cur_slave.energy_limit>>
---CALC AMOUNT---
<<set _energy_growth to $cur_task.energy_growth * $cur_slave.energy_growth_rate>>
---STAT GROWTH MODIFIERS---
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _amount to _energy_growth * setup.loathing.float>>
<<set _energy_growth -= _amount>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.energy_tracker += _energy_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.energy_tracker >= $cur_slave.energy_tracker_limit>>
<<set _energy_trigger to true>>
<<set $cur_slave.energy++>>
<<set $cur_slave.cur_energy++>>
<<set $cur_slave.energy_tracker to 0>>
<<set $cur_slave.energy_tracker_limit to Math.trunc(($cur_slave.energy * $cur_slave.energy * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
STATS
<<set $cur_slave.total_tasks++>>
<<set $cur_slave.total_gold_earned += _gold_earned>>
*Set Picture*
<<if true>>
<<set _folder to _sex_type>>
<<set _pic to $cur_slave[_folder].random()>>
<<else>>
<<set _pic to $cur_slave.body_pic>>
<</if>>
<<else>>
<<set _failed to true>>
<<set _pic to $cur_slave.body_pic>>
<<set $cur_slave.total_tasks++>>
<<set _gold_earned to 0>>
<</if>>
<<set _name to $cur_slave.name>>
*Display*
<</silently>>\
<div id="section">\
<div id="titlebox">\
_name
</div>\
<div class="centered">\
_pic
</div>\
<div id="textbox">\
<<if _failed === true>>\
$cur_task.fail_text
She earned <span style="color:gold">_gold_earned Gold</span> because she couldn't find anyone.
<<else>>\
<<if _luck === 1>>\
_name performed well on her task. \
<<elseif _luck === 0>>\
_name performed average on her task. \
<<else>>\
_name performed poorly on her task. \
<</if>>\
<<if _client_rating === 3>>\
$cur_task.best_text
She earned <span style="color:gold">_gold_earned Gold</span> from the client.
<<elseif _client_rating === 2>>\
$cur_task.average_text
She earned <span style="color:gold">_gold_earned Gold</span> from the client.
<<else>>\
$cur_task.worst_text
She only earned <span style="color:gold">_gold_earned Gold</span> from the client.
<</if>>\
<<if _robust_trigger === true>>\
Because she is <<hovertip "<<-setup.robust.tooltip>>">>Robust<</hovertip>>, she was not injured.
<<elseif $cur_slave.injured === true>>\
She has been injured and needs $cur_slave.injured_cd <<if $cur_slave.injured_cd === 1>>day<<else>>days<</if>> to recover.
<</if>>\
<<if _virgin_neg_trigger === true>>\
_name lost her virginity, because she wasn't ready to lose it, <span style="color:red">she has gained a new negative Trait</span>.
<</if>>\
<<if _libido_trigger === true>>\
_name's <span style="color:fuchsia">Libido</span> stat has increased. <<if $cur_slave.libido === $cur_slave.libido_limit>>Her <span style="color:fuchsia">Libido</span> cannot go any higher.<</if>>
<</if>>\
<<if _strength_trigger === true>>\
_name's <span style="color:orange">Strength</span> stat has increased. <<if $cur_slave.strength === $cur_slave.strength_limit>>Her <span style="color:orange">Strength</span> cannot go any higher.<</if>>
<</if>>\
<<if _obedience_trigger === true>>\
_name's <span style="color:cyan">Obedience</span> stat has increased. <<if $cur_slave.obedience === $cur_slave.obedience_limit>>Her <span style="color:cyan">Obedience</span> cannot go any higher.<</if>>
<</if>>\
<<if _energy_trigger === true>>\
_name's <span style="color:mediumseagreen">Energy</span> stat has increased. <<if $cur_slave.energy === $cur_slave.energy_limit>>Her <span style="color:mediumseagreen">Energy</span> cannot go any higher.<</if>>
<</if>>\
<</if>>\
<<if $cur_slave.cur_energy === 0 || $cur_slave.injured === true>>\
[[Finish|Slave Room]]
<<else>>\
[[Finish|Assign Slave Task]]
<</if>>\
</div>\
</div>\
<<silently>>\
---UPDATE SLAVE---
<<switch $cur_slave_num>>
<<case 1>>
<<set $slave_room_1 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 2>>
<<set $slave_room_2 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 3>>
<<set $slave_room_3 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 4>>
<<set $slave_room_4 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 5>>
<<set $slave_room_5 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 6>>
<<set $slave_room_6 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 7>>
<<set $slave_room_7 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 8>>
<<set $slave_room_8 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 9>>
<<set $slave_room_9 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 10>>
<<set $slave_room_10 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<</switch>>
<</silently>>\
<<silently>>\
*Variables*
<<set _robust_trigger to false>> set to true if robust triggered to show text
<<set _virgin_neg_trigger to false>> set to true if virgin lost her virginity to show text
<<set _libido_trigger to false>> set to true if slaves libido increased to show text
<<set _obedience_trigger to false>> set to true if slaves obedience increased to show text
<<set _intelligence_trigger to false>> set to true if slave intelligence increased to show text
<<set _energy_trigger to false>> set to true if slaves energy increased to show text
<<set _max_extra_time_trigger to false>> set to true if slave has enough energy to exhaust the client during extra time
<<set _energy_mod to 4>>
<<set _gold_mod to 0.1>> increase or decrease gold earned based on difficulty
<<set _best_risk_percent to 10>>
<<set _average_risk_percent to 30>>
<<set _worst_risk_percent to 60>>
*Get Slave Info*
<<set _cur_slave_trait_names to []>>
<<for _i = 0; _i < $cur_slave.positive_traits.length; _i++>>
<<set _trait to $cur_slave.positive_traits[_i].name>>
<<set _cur_slave_trait_names.push(_trait)>>
<</for>>
<<for _i = 0; _i < $cur_slave.negative_traits.length; _i++>>
<<set _trait to $cur_slave.negative_traits[_i].name>>
<<set _cur_slave_trait_names.push(_trait)>>
<</for>>
* Set Used Stat *
<<if $cur_task.seeking === "Love">>
<<set _slave_stat to $cur_slave.love>>
<<elseif $cur_task.seeking === "Obedience">>
<<set _slave_stat to $cur_slave.obedience>>
<<elseif $cur_task.seeking === "Libido">>
<<set _slave_stat to $cur_slave.libido>>
<<elseif $cur_task.seeking === "Strength">>
<<set _slave_stat to $cur_slave.strength>>
<<elseif $cur_task.seeking === "Intelligence">>
<<set _slave_stat to $cur_slave.intelligence>>
<<elseif $cur_task.seeking === "Energy">>
<<set _slave_stat to $cur_slave.energy>>
<</if>>
SOCIAL TRAIT
<<if _cur_slave_trait_names.includes("Social")>>
<<set _slave_stat += setup.social.int>>
<</if>>
* Calc Luck *
<<set _rng to random(1, 6)>>
<<if _rng === 6>>
<<set _luck to 1>>
<<elseif _rng === 1>>
<<set _luck to -1>>
<<else>>
<<set _luck to 0>>
<</if>>
* Convert Energy *
<<set _extra_energy to Math.round($cur_slave.cur_energy / _energy_mod)>>
* Client Rating *
<<if _slave_stat + _luck >= $cur_task.best>>
<<set _client_rating to 3>>
<<set _risk_percent to _best_risk_percent>>
<<elseif _slave_stat + _luck >= $cur_task.average>>
<<set _client_rating to 2>>
<<set _risk_percent to _average_risk_percent>>
<<else>>
<<set _client_rating to 1>>
<<set _risk_percent to _worst_risk_percent>>
<</if>>
* Escort Gold Earned *
<<set _escort_gold to Math.round(random($cur_task.min_gold, $cur_task.max_gold) + ($cur_task.gold_per_stat * _slave_stat))>>
<<if _client_rating === 3>>
<<set _escort_gold to Math.round(_escort_gold * setup.prostitution_best_mod)>>
<<elseif _client_rating === 1>>
<<set _escort_gold to Math.round(_escort_gold * setup.prostitution_worst_mod)>>
<</if>>
BEAUTIFUL TRAIT
<<if _cur_slave_trait_names.includes("Beautiful")>>
<<set _escort_gold *= setup.beautiful.mult>>
<</if>>
INSECURE TRAIT
<<if _cur_slave_trait_names.includes("Insecure")>>
<<set _amount to Math.round(_escort_gold * setup.insecure.float)>>
<<set _escort_gold -= _amount>>
<</if>>
DIFFICULTY MOD
<<set _amount to Math.round(_escort_gold * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _escort_gold += _amount>>
<<case "brutal">>
<<set _escort_gold -= _amount>>
<</switch>>
* Extra Time *
<<if _client_rating >= 2>>
* Risk and Strength Check *
<<set _rng to random(1, 100)>>
<<if _risk_percent >= _rng>>
<<set _rng to random($cur_task.min_strength, $cur_task.max_strength)>>
<<if _rng > $cur_slave.strength + _luck>>
ROBUST CHECK
<<if _cur_slave_trait_names.includes("Robust")>>
<<set _rng to random(1, 100)>>
<<if _rng <= setup.robust.percent>>
<<set _robust_trigger to true>>
<<else>>
<<set $cur_slave.injured to true>>
<<set $cur_slave.injured_cd to random($cur_task.min_injured, $cur_task.max_injured)>>
SOFT TRAIT
<<if _cur_slave_trait_names.includes("Soft")>>
<<set $cur_slave.injured_cd *= setup.soft.mult>>
<</if>>
<</if>>
<<else>>
<<set $cur_slave.injured to true>>
<<set $cur_slave.injured_cd to random($cur_task.min_injured, $cur_task.max_injured)>>
SOFT TRAIT
<<if _cur_slave_trait_names.includes("Soft")>>
<<set $cur_slave.injured_cd *= setup.soft.mult>>
<</if>>
<</if>>
<</if>>
<</if>>
*Gold Earned*
<<set _sex_gold to Math.round(($cur_task.gold_for_sex + ($cur_task.gold_per_libido * $cur_slave.libido)) * $cur_task.num_of_clients)>>
<<if _client_rating === 3>>
<<set _sex_gold to Math.round(_sex_gold * setup.prostitution_best_mod)>>
<</if>>
BEAUTIFUL TRAIT
<<if _cur_slave_trait_names.includes("Beautiful")>>
<<set _sex_gold *= setup.beautiful.mult>>
<</if>>
AWKWARD TRAIT
<<if _cur_slave_trait_names.includes("Awkward")>>
<<set _amount to Math.round(_sex_gold * setup.awkward.float)>>
<<set _sex_gold -= _amount>>
<</if>>
MULT GOLD BY EXTRA ENERGY
<<if _extra_energy >= $cur_task.max_mult>>
<<set _amount to Math.round(_sex_gold * $cur_task.max_mult)>>
<<set _sex_gold += _amount>>
<<set _max_energy_bonus to true>>
<<else>>
<<set _amount to Math.round(_sex_gold * _extra_energy)>>
<<set _sex_gold += _amount>>
<</if>>
DIFFICULTY MOD
<<set _amount to Math.round(_sex_gold * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _sex_gold += _amount>>
<<case "brutal">>
<<set _sex_gold -= _amount>>
<</switch>>
CLAMP GOLD MIN
<<if _sex_gold < 0>>
<<set _sex_gold to 0>>
<</if>>
*Update Slave Stats*
VIRGIN TRAIT
<<if _cur_slave_trait_names.includes(setup.virginity.name)>>
<<if setup.prostitution_sex_list[$cur_task.sex_wanted].virgin_able>>
REMOVE VIRGINITY TRAIT
<<for _i = 0; _i < $cur_slave.positive_traits.length; _i++>>
<<if $cur_slave.positive_traits[_i].name === setup.virginity.name>>
<<set _remove to $cur_slave.positive_traits.deleteAt(_i)>>
<<break>>
<</if>>
<</for>>
<<set $cur_slave.positive_traits.push(setup.loathing)>>
<<set _virgin_neg_trigger to true>>
<</if>>
<</if>>
LIBIDO GROWTH
<<if $cur_slave.libido < $cur_slave.libido_limit>>
---CALC AMOUNT---
<<set _libido_growth to $cur_task.libido_growth * $cur_slave.libido_growth_rate>>
---STAT GROWTH MODIFIERS---
LOYAL
<<if _cur_slave_trait_names.includes("Loyal")>>
<<if $cur_slave.love >= setup.loyal.love_req>>
<<set _libido_growth *= setup.loyal.mult>>
<</if>>
<</if>>
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _amount to _libido_growth * setup.loathing.float>>
<<set _libido_growth -= _amount>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.libido_tracker += _libido_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.libido_tracker >= $cur_slave.libido_tracker_limit>>
<<set _libido_trigger to true>>
<<set $cur_slave.libido++>>
<<set $cur_slave.libido_tracker to 0>>
<<set $cur_slave.libido_tracker_limit to Math.trunc(($cur_slave.libido * $cur_slave.libido * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
*Set Picture*
<<if true>>
<<set _folder to $cur_task.sex_wanted>>
<<set _pic to $cur_slave[_folder].random()>>
<<else>>
<<set _pic to $cur_slave.body_pic>>
<</if>>
<<else>>
* No Extra Time *
<<set _sex_gold to 0>>
* Set Picture *
<<set _pic to $cur_slave.body_pic>>
<</if>>
OBEDIENCE GROWTH
<<if $cur_slave.obedience < $cur_slave.obedience_limit>>
---CALC AMOUNT---
<<set _obedience_growth to $cur_task.obedience_growth * $cur_slave.obedience_growth_rate>>
---STAT GROWTH MODIFIERS---
LOYAL
<<if _cur_slave_trait_names.includes("Loyal")>>
<<if $cur_slave.love >= setup.loyal.love_req>>
<<set _obedience_growth *= setup.loyal.mult>>
<</if>>
<</if>>
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _amount to _obedience_growth * setup.loathing.float>>
<<set _obedience_growth -= _amount>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.obedience_tracker += _obedience_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.obedience_tracker >= $cur_slave.obedience_tracker_limit>>
<<set _obedience_trigger to true>>
<<set $cur_slave.obedience++>>
<<set $cur_slave.obedience_tracker to 0>>
<<set $cur_slave.obedience_tracker_limit to Math.trunc(($cur_slave.obedience * $cur_slave.obedience * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
INTELLIGENCE GROWTH
<<if $cur_slave.intelligence < $cur_slave.intelligence_limit>>
---CALC AMOUNT---
<<set _intelligence_growth to $cur_task.intelligence_growth * $cur_slave.intelligence_growth_rate>>
---STAT GROWTH MODIFIERS---
MOTIVATED
<<if _cur_slave_trait_names.includes("Motivated")>>
<<if $cur_slave.love >= setup.loyal.love_req>>
<<set _intelligence_growth *= setup.motivated.mult>>
<</if>>
<</if>>
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _amount to _intelligence_growth * setup.loathing.float>>
<<set _intelligence_growth -= _amount>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.intelligence_tracker += _intelligence_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.intelligence_tracker >= $cur_slave.intelligence_tracker_limit>>
<<set _intelligence_trigger to true>>
<<set $cur_slave.intelligence++>>
<<set $cur_slave.intelligence_tracker to 0>>
<<set $cur_slave.intelligence_tracker_limit to Math.trunc(($cur_slave.intelligence * $cur_slave.intelligence * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
ENERGY GROWTH
<<if $cur_slave.energy < $cur_slave.energy_limit>>
---CALC AMOUNT---
<<set _energy_growth to $cur_task.energy_growth * $cur_slave.energy_growth_rate>>
---STAT GROWTH MODIFIERS---
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _amount to _energy_growth * setup.loathing.float>>
<<set _energy_growth -= _amount>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.energy_tracker += _energy_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.energy_tracker >= $cur_slave.energy_tracker_limit>>
<<set _energy_trigger to true>>
<<set $cur_slave.energy++>>
<<set $cur_slave.cur_energy++>>
<<set $cur_slave.energy_tracker to 0>>
<<set $cur_slave.energy_tracker_limit to Math.trunc(($cur_slave.energy * $cur_slave.energy * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
ADD TOTAL GOLD
<<set _gold_earned to _escort_gold + _sex_gold>>
ADD GOLD TO PLAYER
<<set $pc_gold += _gold_earned>>
<<set $pc_total_gold_earned += _gold_earned>>
SLAVE STATS
<<set $cur_slave.total_tasks++>>
<<set $cur_slave.total_gold_earned += _gold_earned>>
RESTORE ENERGY
<<set $cur_slave.cur_energy to $cur_slave.energy>>
*Set Picture*
<<if true>>
<<set _folder to $cur_task.sex_wanted>>
<<set _pic to $cur_slave[_folder].random()>>
<<else>>
<<set _pic to $cur_slave.body_pic>>
<</if>>
<<set _name to $cur_slave.name>>
*Display*
<</silently>>\
<div id="section">\
<div id="titlebox">\
_name
</div>\
<div class="centered">\
_pic
</div>\
<div id="textbox">\
<<if _luck === 1>>\
_name performed well on her task. \
<<elseif _luck === 0>>\
_name performed average on her task. \
<<else>>\
_name performed poorly on her task. \
<</if>>\
<<if _client_rating === 3>>\
$cur_task.best_text
She earned <span style="color:gold">_escort_gold Gold</span> from the escort and <span style="color:gold">_sex_gold Gold</span> for her sexual services. <<if _max_extra_time_trigger === true>>She was even able to exhaust the client, earning a lot of extra <span style="color:gold">Gold</span>.<</if>>
<<elseif _client_rating === 2>>\
$cur_task.average_text
She earned <span style="color:gold">_escort_gold Gold</span> from the escort and <span style="color:gold">_sex_gold Gold</span> for her sexual services. <<if _max_extra_time_trigger === true>>She was even able to exhaust the client, earning a lot of extra <span style="color:gold">Gold</span>.<</if>>
<<else>>\
$cur_task.worst_text
She only earned <span style="color:gold">_escort_gold Gold</span> from the escort.
<</if>>\
<<if _robust_trigger === true>>\
Because she is <<hovertip "<<-setup.robust.tooltip>>">>Robust<</hovertip>>, she was not injured.
<<elseif $cur_slave.injured === true>>\
She has been injured and needs $cur_slave.injured_cd <<if $cur_slave.injured_cd === 1>>day<<else>>days<</if>> to recover.
<</if>>\
<<if _virgin_neg_trigger === true>>\
$cur_slave.name lost her virginity, because she wasn't ready to lose it, <span style="color:red">she has gained a new negative Trait</span>.
<</if>>\
<<if _libido_trigger === true>>\
$cur_slave.name's <span style="color:fuchsia">Libido</span> stat has increased. <<if $cur_slave.libido === $cur_slave.libido_limit>>Her <span style="color:fuchsia">Libido</span> cannot go any higher.<</if>>
<</if>>\
<<if _intelligence_trigger === true>>\
$cur_slave.name's <span style="color:darkorchid">Intelligence</span> stat has increased. <<if $cur_slave.intelligence === $cur_slave.intelligence_limit>>Her <span style="color:darkorchid">Intelligence</span> cannot go any higher.<</if>>
<</if>>\
<<if _obedience_trigger === true>>\
$cur_slave.name's <span style="color:cyan">Obedience</span> stat has increased. <<if $cur_slave.obedience === $cur_slave.obedience_limit>>Her <span style="color:cyan">Obedience</span> cannot go any higher.<</if>>
<</if>>\
<<if _energy_trigger === true>>\
$cur_slave.name's <span style="color:mediumseagreen">Energy</span> stat has increased. <<if $cur_slave.energy === $cur_slave.energy_limit>>Her <span style="color:mediumseagreen">Energy</span> cannot go any higher.<</if>>
<</if>>\
<<if $long_task_events.length > 0>>\
<<set $cur_task to $long_task_events.shift()>>\
<<set _slave_num to $task_events_room_num.shift()>>\
<<link [[Start Day|$cur_task.passage]]>>
<<silently>>\
<<switch _slave_num>>
<<case 1>>
<<set $cur_slave to $slave_room_1>>
<<set $cur_slave_num to 1>>
<<case 2>>
<<set $cur_slave to $slave_room_2>>
<<set $cur_slave_num to 2>>
<<case 3>>
<<set $cur_slave to $slave_room_3>>
<<set $cur_slave_num to 3>>
<<case 4>>
<<set $cur_slave to $slave_room_4>>
<<set $cur_slave_num to 4>>
<<case 5>>
<<set $cur_slave to $slave_room_5>>
<<set $cur_slave_num to 5>>
<<case 6>>
<<set $cur_slave to $slave_room_6>>
<<set $cur_slave_num to 6>>
<<case 7>>
<<set $cur_slave to $slave_room_7>>
<<set $cur_slave_num to 7>>
<<case 8>>
<<set $cur_slave to $slave_room_8>>
<<set $cur_slave_num to 8>>
<<case 9>>
<<set $cur_slave to $slave_room_9>>
<<set $cur_slave_num to 9>>
<<case 10>>
<<set $cur_slave to $slave_room_10>>
<<set $cur_slave_num to 10>>
<</switch>>
<</silently>>\
<</link>>\
<<else>>\
[[Start Day|Main Menu]]
<</if>>\
</div>\
</div>\
<<silently>>\
---UPDATE SLAVE---
<<switch $cur_slave_num>>
<<case 1>>
<<set $slave_room_1 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 2>>
<<set $slave_room_2 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 3>>
<<set $slave_room_3 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 4>>
<<set $slave_room_4 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 5>>
<<set $slave_room_5 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 6>>
<<set $slave_room_6 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 7>>
<<set $slave_room_7 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 8>>
<<set $slave_room_8 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 9>>
<<set $slave_room_9 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 10>>
<<set $slave_room_10 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<</switch>>
<</silently>>\
<<if $training_sex_type === "">>\
<<silently>>\
*Set Sex List*
<<set _list to $cur_slave.slave_pack.service_positions.concat($cur_slave.slave_pack.sex_positions)>>
ALPHABETIZE
<<set _list.sort(function (a, b) {
var
nameA = a.toUpperCase(),
nameB = b.toUpperCase();
if (nameA < nameB) {
return -1;
}
else if (nameA > nameB) {
return 1;
}
return 0;
});>>
<<if $cur_slave.last_sex_type != "">>
<<set $training_sex_type to $cur_slave.last_sex_type>>
<<else>>
<<set $training_sex_type to $last_sex_type>>
<</if>>
*Display Info*
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Slave Room]]>><<unset $training_sex_type>><</button>></span>
</div>\
<div class="titlebox">\
Training $cur_slave.name
</div>\
<div class="listbox-sexlist">\
<<listbox "$training_sex_type" autoselect>>\
<<optionsfrom _list>>
<</listbox>>\
<span id="forward"><<button [[Confirm|Private Training]]>><</button>></span>
</div>\
<div class="picbox-sexlist">\
$cur_slave.body_pic
</div>\
</div>\
<<else>>\
<<silently>>\
*Variables*
<<set _sex_countMod to 0.5>>
<<set _stress_countMod to 0.5>>
<<set _obedience_countMod to 0.5>>
<<set _LC_training_sex_type to $training_sex_type.toLowerCase()>> Lowercase sex type
<<set _disobedient_bool to false>> set to true if slave becomes disobedient
<<set _love_mod to 1.25>> modify love stat by this amount for obedience check
<<set _obedeince_mod to 2>> modify obedience stat by this amount for obedience check
<<set _sexskill_trigger to false>> set to true if slave gained sex skill point
<<set _sexskill_trigger_list to []>> list of sex skills that increased
<<set _baseSkillExp to 12>>
<<set _baseLoveExp to 6>>
<<set _baseObedienceExp to 6>>
<<set _baseObedienceRate to 25>>
<<set _minStress to 8>>
<<set _maxStress to 12>>
* Slave Setup *
<<SlaveSetup $cur_slave>>
*Choose Picture*
<<set _pic to $cur_slave.slave_pack[_LC_training_sex_type].random()>>
*Player Stats*
<<set $pc_sex_stats[_LC_training_sex_type]++>>
<<set $pc_sex_stats.total++>>
<<set $pc_private_training++>>
* Slave Stats *
<<set $slaves_task_stats.train++>>
<<set $cur_slave.total_trainings++>>
* Set Last Sex Type *
<<set $cur_slave.last_sex_type to $training_sex_type>>
<<set $last_sex_type to $training_sex_type>>
* Reduce Energy *
<<if $cur_slave.trait_names.includes("Tiresome")>>
<<set $pc_cur_energy -= setup.tiresome.int>>
<<else>>
<<set $pc_cur_energy -= 1>>
<</if>>
* Obedience Check *
<<set _countMod2 to (_obedience_countMod * $cur_slave.training_count) + 1>>
<<set _base_check to Math.round(_baseObedienceRate / _countMod2)>>
<<SlaveObedienceCheck $cur_slave _base_check>>
* Sex Skill EXP*
<<set _countMod to (_sex_countMod * $cur_slave.training_count) + 1>>
<<set _sex_exp to (Math.round(_baseSkillExp / _countMod)).clamp(1, 1000000)>>
PROFICIENT TRAIT
<<if $cur_slave.trait_names.includes("Proficient")>>
<<set _sex_exp += (Math.round(_sex_exp * setup.proficient.float)).clamp(1, 1000000)>>
<</if>>
GODDESS'S TECHNIQUE
<<set _blessing to $pc_blessing_list.delete("Goddess's Technique I", "Goddess's Technique II", "Goddess's Technique III", "Goddess's Technique IV", "Goddess's Technique V")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.technique.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.technique[_z].name)>>
<<set _info to clone(setup.allBlessingList.technique[_z])>>
INCREASE EXP
<<set _sex_exp += (Math.round(_sex_exp * _info.float)).clamp(1, 1000000)>>
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
OBEDIENCE CHECK
<<set _sex_exp to (Math.round(_sex_exp * setup.obedienceCheckOutcome[_obedience_result])).clamp(1, 1000000)>>
ADD EXP
<<SexSkillGrowth $cur_slave _sex_exp _LC_training_sex_type>>
* Love Stat Gained *
<<set _loveExp to (Math.round(_baseLoveExp / _countMod)).clamp(1, 1000000)>>
SUBORDINATE TRAIT
<<if $cur_slave.trait_names.includes("Subordinate")>>
<<set _loveExp += (Math.round(setup.subordinate.float * _loveExp)).clamp(1, 1000000)>>
<</if>>
GODDESS'S TECHNIQUE
<<set _blessing to $pc_blessing_list.delete("Goddess's Technique I", "Goddess's Technique II", "Goddess's Technique III", "Goddess's Technique IV", "Goddess's Technique V")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.technique.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.technique[_z].name)>>
<<set _info to clone(setup.allBlessingList.technique[_z])>>
INCREASE EXP
<<set _loveExp += (Math.round(_loveExp * _info.float)).clamp(1, 1000000)>>
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
OBEDIENCE CHECK
<<set _loveExp to (Math.round(_loveExp * setup.obedienceCheckOutcome[_obedience_result])).clamp(1, 1000000)>>
ADD EXP
<<SlaveLoveGrowth $cur_slave _loveExp>>
* Obedience Stat Gained *
<<set _obedienceExp to Math.round(_baseObedienceExp / _countMod)>>
SUBORDINATE TRAIT
<<if $cur_slave.trait_names.includes("Subordinate")>>
<<set _obedienceExp += (Math.round(setup.subordinate.float * _obedienceExp)).clamp(1, 1000000)>>
<</if>>
GODDESS'S TECHNIQUE
<<set _blessing to $pc_blessing_list.delete("Goddess's Technique I", "Goddess's Technique II", "Goddess's Technique III", "Goddess's Technique IV", "Goddess's Technique V")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.technique.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.technique[_z].name)>>
<<set _info to clone(setup.allBlessingList.technique[_z])>>
INCREASE EXP
<<set _obedienceExp += (Math.round(_obedienceExp * _info.float)).clamp(1, 1000000)>>
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
OBEDIENCE CHECK
<<set _obedienceExp to (Math.round(_obedienceExp * setup.obedienceCheckOutcome[_obedience_result])).clamp(1, 1000000)>>
ADD EXP
<<SlaveObedienceGrowth $cur_slave _obedienceExp>>
* Stress Increase *
SET BASE
<<set _countMod3 to (_stress_countMod * $cur_slave.training_count) + 1>>
<<set _stress_amount to Math.round(random(_minStress, _maxStress) * _countMod3)>>
<<- _stress_amount>>
NERVOUS TRAIT
<<if $cur_slave.trait_names.includes("Nervous")>>
<<set _stress_amount *= setup.nervous.mult>>
<</if>>
PLEASURABLE EDUCATION
<<set _blessing to $pc_blessing_list.delete("Pleasurable Education I", "Pleasurable Education II")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.technique.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.technique[_z].name)>>
<<set _info to clone(setup.allBlessingList.technique[_z])>>
REDUCE STRESS
<<set _stress_amount -= (Math.round(_stress_amount * _info.float)).clamp(1, 1000000)>>
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
ADD STRESS
<<SlaveStressCalc $cur_slave _stress_amount "Gained">>
* Virginity Check *
<<SlaveVirginCheck $cur_slave _LC_training_sex_type "Train">>
* Increase Training Count for the Day *
<<set $cur_slave.training_count++>>
* Text Display *
<<if _obedience_result === 1>>
<<set _outcome to "PASSED PLACEHOLDER">>
<<else>>
<<set _outcome to "FAILED PLACEHOLDER">>
<</if>>
*Display Info*
<</silently>>\
<div class="section">\
<div class="titlebox">\
Training $cur_slave.name
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[Continue|Slave Room]]>><<unset $training_sex_type>><</button>></span>
</div>\
<div class="imagebox">\
_pic
</div>\
<div class="textbox">\
_outcome
<<SlaveText $cur_slave>>
</div>\
</div>\
<</if>>\<<if $visited_slave_market === false && $tutorial_guides === true>>\
<<silently>>\
* Variables *
<<if $tutorial_page == null>>
<<set $tutorial_page to 1>>
<</if>>
* Dialogue Bools *
<<set $entered_market_bool to false>>
<<set $bought_slave_bool to false>>
<<set $sold_slave_bool to false>>
<<set $market_class_bool to false>>
* Display *
<</silently>>\
<<switch $tutorial_page>>\
<<case 1>>\
<div class="section">\
<div class="titlebox">\
Slave Market
</div>\
<div class="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/town/anna/face_0.jpg]]
</div>\
<div class="dialogue-text">\
Welcome in, you new in town? I know a rookie Dungeon Lord when I see one. I'm Anna and I manage the Slave Market. I run a tight ship, listen close and I'll teach you a thing or two.
This is the only place in town where you can buy and sell Slaves. You cannot buy a new Slave without first having a room for her. Slave prices fluctuate daily, the same with what Traits are sought after. I get new Slaves every <<- setup.refresh_slave_market_timer>> days. Oh, and no touching the girls before buying them or you'll lose a hand.
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="forward"><<button [[Continue|Slave Market]]>><<set $tutorial_page++>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
</div>\
</div>\
<<case 2>>\
<div class="section">\
<div class="titlebox">\
Slave Market
</div>\
<div class="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/town/anna/face_0.jpg]]
</div>\
<div class="dialogue-text">\
I also offer Classes for your Slaves. You can sign one of your Slaves up to attend a Class, assuming you have the @@.gold;Gold@@ for it. Classes increase one or more stats based on the Class and how well they did. I don't offer refunds if your Slave snoozes and fails the Class.
I think that's everything, I'll see you around rookie.
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="forward"><<button [[Continue|Slave Market]]>><<set $visited_slave_market to true>><<unset $tutorial_page>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
</div>\
</div>\
<</switch>>\
<<elseif $missionLog.anna.unlocked === true && $missionLog.anna.started === false>>\
<<if $missionLog.anna.num === 0>>\
<<silently>>\
* Variables *
<<set _missionName to setup.annaMisLine[$missionLog.anna.num].name>>
* Update Mission *
<<set $missionLog.anna.started to true>>
<<set $newMission_bool to true>>
* Create Runaway Slave *
<<set $descendantSlave to clone(setup.dancer)>>
<<set $descendantSlave.subclass to clone(setup.novice)>>
<<set $descendantSlave.special_trait to clone(setup.descendant)>>
<<set $descendantSlave.body_type to "busty">>
<<set $descendantSlave.pic_default to "[img[images/descendant/mission/raider.jpg]]">>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
_missionName
</div>\
<div class ="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/town/anna/face_0.jpg]]
</div>\
<div class="dialogue-text">\
Hey Rookie, got a second? One of my Slaves managed to escape and I could use your help. I believe she is trying to blend in as an Adventurer in the Guild, so she might show up at your Dungeon during a Raid. If she does, I'll make it worth your time if you bring her back. She is from a rare race called Descendant. They are mostly human with a few dragon-like features, like scales and a tail. She will be easy to spot if she shows up. I'll make it worth your time if you capture her. Just, please try not to mess her up too much.
</div>\
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="forward"><<button [[Continue|Slave Market]]>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
</div>\
<</if>>\
<<elseif $missionLog.anna.completed === true>>\
<<goto "Anna Reward">>\
<<else>>\
<<silently>>\
* Variables *
* Set First Quest *
<<if $missionLog.anna.num === "">>
<<set $missionLog.anna.num to 0>>
<</if>>
* Own a Slave Check *
<<set _owns_bool to false>>
<<for _z = 0; _z < $slave_room_list.length; _z++>>
<<if $slave_room_list[_z].room_type === "Slave">>
<<set _owns_bool to true>>
<<break>>
<</if>>
<</for>>
* Dialogue *
<<if $slave_market_news === true && $slave_class_news === true>>
<<set _options to ["Welcome in, I got new Slaves in as well as new Classes available.", "Rookie, got a new shipment of Slaves and updated my Class list. Be sure to check them out."]>>
<<elseif $slave_market_news === true>>
<<set _options to ["Welcome in, got some new Slaves in. I think you'll like a couple in particular.", "Finally decided to show up huh? Go on and check out the new Slaves.", "Hi rookie, got some new Slaves to check out. Remember, no touching without buying them first."]>>
<<elseif $slave_class_news === true>>
<<set _options to ["Welcome in, welcome in. I updated the list of Classes available. Be sure to check them out before it's too late.", "Rookie, just updated my Classes. Got any Slaves that need to be taught a lesson?", "Hey rookie. I'm swamped right now, but be sure to check out the new Classes available."]>>
<<elseif $entered_market_bool === true && $rare_slave_news === true>>
<<set _options to ["Welcome back rookie, you come to check out the new rare Slave? You and everyone else, better pick her up quick if you want her. And remember, no touching!"]>>
<<elseif $entered_market_bool === true && $high_demand_event === true>>
<<set _options to ["Welcome in. I got a shorted this shipment and demand is through the roof, so I'm paying extra coin for Slaves right now. If you got any Slaves you are thinking about selling, please sell them to me."]>>
<<elseif $entered_market_bool === true && $slave_market_list.length <= 0>>
<<set _options to ["Welcome in rookie, still don't have any Slaves for sale. Waiting on my next shipment. Feel free to sell me some or check out the list of available Classes."]>>
<<elseif $entered_market_bool === true>>
<<set _options to ["Come on in rookie, let me know if you need something.", "Welcome in, looking for a new Slave? Or maybe you have a Slave in need of Training?", "Hey rookie, did you forget something? I feel like I just saw you.", "Hey. Don't touch the Slaves before buying them. I already had to cut some hands today. I need to go clean up.", "Welcome in, got some good Classes available. Let me know if you want to sign up for any.", "Hey rookie, come to sell any of your Slaves? I'll pay good coin for them."]>>
<<elseif $bought_slave_bool === true>>
<<set _options to ["Thanks rookie, be sure to take good care of her and bring her back for Classes.", "Always a pleasure, remember to sign up for some Classes while you are here.", "Thanks, you can touch her now, but you better not bring her back hurt."]>>
<<elseif $sold_slave_bool === true>>
<<set _options to ["Thanks rookie, I'll make sure she stays safe while she is here.", "Thank you for this one. I'm sure she will be picked up quickly.", "Thanks, got any more Slaves to sell?"]>>
<<elseif $market_class_bool === true>>
<<set _options to ["Signing her up for that Class? Interesting choice.", "I'll take her for now. Don't worry though, she is safe with me.", "Thank you very much, come back once the Class is over to pick her up.", "Thanks, got any more Slaves that need tutoring?", "Good choice, I'll be sure to teach her well."]>>
<<else>>
<<set _options to ["Another busy day in the market. This town sure love their Slaves.", "Hey! No touching unless you want to lose a hand!", "I'll buy any Slave you are trying to sell, even if they are injured or disobedient.", "One day, I'll have enough Gold to get out of this town. Until then, I need to keep the market going.", "Rookie, are you going to sign up any of your Slaves for a Class? No offense, but I could teach them much more than you are able to.", "I wonder if I can use my whip during the next class? Oh, don't mind me rookie, let me know if you need anything."]>>
<</if>>
<<set _dialogue to _options.random()>>
* Dialogue and News Bools *
<<set $entered_market_bool to false>>
<<set $bought_slave_bool to false>>
<<set $sold_slave_bool to false>>
<<set $market_class_bool to false>>
<<set $slave_market_news to false>>
<<set $slave_class_news to false>>
<<set $rare_slave_news to false>>
*Display*
<</silently>>\
<div class="section">\
<div class="titlebox">\
Slave Market
</div>\
<div class="dialoguebox-townshops">\
<div class="dialoguepic-townshops">\
[img[images/town/anna/face_0.jpg]]
</div>\
<div class="dialoguetext-townshops">\
_dialogue
</div>\
</div>\
<div class="cardholder-townshops">\
<div class="infobox-townshops">\
<div class="infobox-title-townshops">\
Buy Slave
</div>\
<div class="infobox-body-townshops">\
View all the Slaves available at the Market for sale.
</div>\
<div class="infobox-link-townshops">\
<<if $slave_market_list.length <= 0>>\
<div class="offbutton">\
<<hovertip "Out of stock">><<button "Buy Slave">><</button>>
</div>\
<<else>>\
<span id="1"><<button "Buy Slave ^^1^^" "Buy Slave">><</button>></span>
<</if>>\
</div>\
</div>\
</div>\
<div class="cardholder-townshops">\
<div class="infobox-townshops">\
<div class="infobox-title-townshops">\
Slave Classes
</div>\
<div class="infobox-body-townshops">\
View list of available Slave Classes. You can sign up one of your Slaves to improve their stats based on the Class she takes.
</div>\
<div class="infobox-link-townshops">\
<<if _owns_bool === false>>\
<div class="offbutton">\
<<hovertip "Requires a Slave">><<button "Classes">><</button>><</hovertip>>
</div>\
<<else>>\
<span id="2"><<button "Classes ^^2^^" "Assign Slave Class">><<unset $cur_slave>><</button>></span>
<</if>>\
</div>\
</div>\
</div>\
<div class="cardholder-townshops">\
<div class="infobox-townshops">\
<div class="infobox-title-townshops">\
Sell Your Slaves
</div>\
<div class="infobox-body-townshops">\
Number of Slaves you can sell
</div>\
<div class="infobox-link-townshops">\
<<if _owns_bool === false>>\
<div class="offbutton">\
<<hovertip "Requires a Slave">><<button "Sell Slave">><</button>><</hovertip>>
</div>\
<<else>>\
<span id="3"><<button "Sell Slave ^^3^^" "Sell Slave">><</button>></span>
<</if>>\
</div>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Leave|Town Menu]]>><</button>></span> <span id="q"><<button "<u>Q</u>uick Menu" "Quick Menu">><</button>></span>
</div>\
</div>\
<</if>>\<<silently>>\
*Variables*
<<if $slave_info == null>>
<<set $slave_info to "Stats">>
<</if>>
* Set Slaves List *
<<set _slaves_list to []>>
<<for _z = 0; _z < $slave_room_list.length; _z++>>
<<if $slave_room_list[_z].room_type === "Slave">>
<<set _slaves_list.push($slave_room_list[_z])>>
<</if>>
<</for>>
<<set _slaves_per_page to 6>> the number of slaves that can be on each page, starting count from 0
<<if $slave_market_page == null>>
<<set $slave_market_page to 0>>
<</if>>
<<set _start_pos to _slaves_per_page * $slave_market_page>> Set where to start the list based on what the page is
<<if _start_pos + _slaves_per_page < _slaves_list.length>>
<<set _end_pos to _start_pos + _slaves_per_page>> Set where to end the list based on what the page is
<<else>>
<<set _end_pos to _slaves_list.length>>
<</if>>
*Display*
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Slave Market]]>><<unset $slave_market_page, $slave_info>><</button>></span> <span id="q"><<button "<u>Q</u>uick Menu" "Quick Menu">><<unset $slave_market_page, $slave_info>><</button>></span>\
</div>\
<div class="titlebox">\
Your Slaves
</div>\
<div class="container-marketstats">\
<div class="infobox-goldstat-buyslaves">\
<u>Most Valued Stat and Skill</u>
$most_valued_stat, $most_valued_skill
</div>\
<div class="infobox-redstat-buyslaves">\
<u>Hot Traits</u>
<<hovertip "<<print $hot_traits[0].tooltip>>">><<print $hot_traits[0].name>><</hovertip>>, <<hovertip "<<print $hot_traits[1].tooltip>>">><<print $hot_traits[1].name>><</hovertip>>, <<hovertip "<<print $hot_traits[2].tooltip>>">><<print $hot_traits[2].name>><</hovertip>>
</div>\
<div class="infobox-bluestat-buyslaves">\
<u>Least Valued Stat and Skill</u>
$least_valued_stat, $least_valued_skill
</div>\
</div>\
<div class="pagebox-buyslaves">\
<div class="pagecells-buyslaves">\
<span id="v">\
<<if $slave_info === "Stats">>\
<<button "<u>V</u>iew Skills" "Sell Slave">><<set $slave_info to "Skills">><</button>>
<<elseif $slave_info === "Skills">>\
<<button "<u>V</u>iew Stats" "Sell Slave">><<set $slave_info to "Stats">><</button>>
<</if>>\
</span>
</div>\
<div class="pagecells-buyslaves">\
<<if $slave_market_page > 0>>\
<span id="left"><<button [[Previous Page|Sell Slave]]>><<set $slave_market_page-->><</button>></span>
<</if>>\
</div>\
<div class="pagecells-buyslaves">\
<<set _cur_page to $slave_market_page + 1>>\
<<set _tot_pages to Math.trunc((_slaves_list.length / _slaves_per_page) + 0.99)>>\
<<if _tot_pages <= 0>>\
<<set _tot_pages to 0>>\
<</if>>\
Page _cur_page of _tot_pages
</div>\
<div class="pagecells-buyslaves">\
<<if _slaves_list.length > _end_pos>>\
<span id="right"><<button [[Next Page|Sell Slave]]>><<set $slave_market_page++>><</button>></span>
<</if>>\
</div>\
</div>\
<div class="slavebox-buyslaves">\
<<for _i = _start_pos; _i < _end_pos; _i++>>\
<<silently>>\
*Set HotKey*
<<set _hotKey to (_i % 6) + 1>>
*Find Cost*
<<SlaveValueCalc _slaves_list[_i] "Selling">>
<</silently>>\
<div class="cellholder-slaves-slavecard">\
<div class="cell-slaves-slavecard">\
<div class="picholder-cells-slavecard">\
_slaves_list[_i].pic
</div>\
<div class="textholder-cells-slavecard">\
<div class="title-cells-slavecard">\
<strong>_slaves_list[_i].name</strong>\
</div>\
<<if $slave_info === "Stats">>\
<div class="stats-cells-slavecard">\
<<hovertip "<<- setup.slave_stats.love.tooltip>>">><<-setup.slave_stats.love.icon>><</hovertip>>
<<hovertip "EXP: _slaves_list[_i].love_tracker / _slaves_list[_i].love_tracker_limit<br>Max: _slaves_list[_i].love_limit">><span style="color:crimson">_slaves_list[_i].love</span><</hovertip>>
</div>\
<div class="stats-cells-slavecard">\
<<hovertip "<<- setup.slave_stats.obedience.tooltip>>">><<-setup.slave_stats.obedience.icon>><</hovertip>>
<<hovertip "EXP: _slaves_list[_i].obedience_tracker / _slaves_list[_i].obedience_tracker_limit<br>Max: _slaves_list[_i].obedience_limit">><span style="color:cyan">_slaves_list[_i].obedience</span><</hovertip>>
</div>\
<div class="stats-cells-slavecard">\
<<hovertip "<<- setup.slave_stats.libido.tooltip>>">><<-setup.slave_stats.libido.icon>><</hovertip>>
<<hovertip "EXP: _slaves_list[_i].libido_tracker / _slaves_list[_i].libido_tracker_limit<br>Max: _slaves_list[_i].libido_limit">><span style="color:fuchsia">_slaves_list[_i].libido</span><</hovertip>>
</div>\
<div class="stats-cells-slavecard">\
<<hovertip "<<- setup.slave_stats.strength.tooltip>>">><<-setup.slave_stats.strength.icon>><</hovertip>>
<<hovertip "EXP: _slaves_list[_i].strength_tracker / _slaves_list[_i].strength_tracker_limit<br>Max: _slaves_list[_i].strength_limit">><span style="color:orange">_slaves_list[_i].strength</span><</hovertip>>
</div>\
<div class="stats-cells-slavecard">\
<<hovertip "<<- setup.slave_stats.intelligence.tooltip>>">><<-setup.slave_stats.intelligence.icon>><</hovertip>>
<<hovertip "EXP: _slaves_list[_i].intelligence_tracker / _slaves_list[_i].intelligence_tracker_limit<br>Max: _slaves_list[_i].intelligence_limit">><span style="color:darkorchid">_slaves_list[_i].intelligence</span><</hovertip>>
</div>\
<div class="stats-cells-slavecard">\
<<hovertip "<<- setup.slave_stats.stress.tooltip>>">><<-setup.slave_stats.stress.icon>><</hovertip>>
<strong><span style="color:slategray">_slaves_list[_i].cur_stress</span></strong>
</div>\
<div class="traits-cells-slavecard">\
<<for _t = 0; _t < _slaves_list[_i].traits.length; _t++>>\
<<print '<span style="color:'+_slaves_list[_i].traits[_t].color+'"><<hovertip "_slaves_list[_i].traits[_t].tooltip">>_slaves_list[_i].traits[_t].name<</hovertip>></span>'>><<if _t + 1 < _slaves_list[_i].traits.length>>, <</if>>\
<</for>>\
</div>\
<<elseif $slave_info === "Skills">>\
<div class="skills-cell-slavecard">\
<<hovertip "EXP: _slaves_list[_i].handjob_tracker / _slaves_list[_i].handjob_tracker_limit<br>Max: _slaves_list[_i].handjob_limit">>Handjob
_slaves_list[_i].handjob<</hovertip>>
</div>\
<div class="skills-cell-slavecard">\
<<hovertip "EXP: _slaves_list[_i].blowjob_tracker / _slaves_list[_i].blowjob_tracker_limit<br>Max: _slaves_list[_i].blowjob_limit">>Blowjob
_slaves_list[_i].blowjob<</hovertip>>
</div>\
<div class="skills-cell-slavecard">\
<<hovertip "EXP: _slaves_list[_i].titjob_tracker / _slaves_list[_i].titjob_tracker_limit<br>Max: _slaves_list[_i].titjob_limit">>Titjob
_slaves_list[_i].titjob<</hovertip>>
</div>\
<div class="skills-cell-slavecard">\
<<hovertip "EXP: _slaves_list[_i].footjob_tracker / _slaves_list[_i].footjob_tracker_limit<br>Max: _slaves_list[_i].footjob_limit">>Footjob
_slaves_list[_i].footjob<</hovertip>>
</div>\
<div class="skills-cell-slavecard">\
<<hovertip "EXP: _slaves_list[_i].missionary_tracker / _slaves_list[_i].missionary_tracker_limit<br>Max: _slaves_list[_i].missionary_limit">>Missionary
_slaves_list[_i].missionary<</hovertip>>
</div>\
<div class="skills-cell-slavecard">\
<<hovertip "EXP: _slaves_list[_i].cowgirl_tracker / _slaves_list[_i].cowgirl_tracker_limit<br>Max: _slaves_list[_i].cowgirl_limit">>Cowgirl
_slaves_list[_i].cowgirl<</hovertip>>
</div>\
<div class="skills-cell-slavecard">\
<<hovertip "EXP: _slaves_list[_i].doggy_tracker / _slaves_list[_i].doggy_tracker_limit<br>Max: _slaves_list[_i].doggy_limit">>Doggy
_slaves_list[_i].doggy<</hovertip>>
</div>\
<div class="skills-cell-slavecard">\
<<hovertip "EXP: _slaves_list[_i].anal_tracker / _slaves_list[_i].anal_tracker_limit<br>Max: _slaves_list[_i].anal_limit">>Anal
_slaves_list[_i].anal<</hovertip>>
</div>\
<</if>>\
<div class="value-cells-slavecard">\
Value: <span style="color:gold">_slaves_list[_i].value</span>\
</div>\
<div class="value-cells-slavecard">\
Upkeep: <span style="color:gold">_slaves_list[_i].upkeep</span>\
</div>\
<div class="button-cells-slavecard">\
<<if _slaves_list[_i].quest_cd > 0>>\
<div class="offbutton">\
<<hovertip "Can't Sell while on Quest">><<button "Sell Slave">><</button>><</hovertip>>
</div>\
<<elseif _slaves_list[_i].class_cd > 0>>\
<div class="offbutton">\
<<hovertip "Can't Sell while in Class">><<button "Sell Slave">><</button>><</hovertip>>
</div>\
<<elseif _slaves_list[_i].training_cd > 0>>\
<div class="offbutton">\
<<hovertip "Can't Sell While being Trained">><<button "Sell Slave">><</button>><</hovertip>>
</div>\
<<else>>\
<<capture _i, _hotKey>>\
<span @id="_hotKey"><<button "Sell Slave ^^_hotKey^^" "Confirm Sell Slave">>\
<<silently>>\
FIND CORRECT SLAVE
<<for _z = 0; _z < $slave_room_list.length; _z++>>
<<if $slave_room_list[_z].index === _slaves_list[_i].index>>
<<set $slave_room_list[_z].value to _slaves_list[_i].value>>
<<set $cur_slave to $slave_room_list[_z]>>
<<set $index to _z>>
<<break>>
<</if>>
<</for>>
<</silently>>\
<</button>></span>\
<</capture>>\
<</if>>\
</div>\
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\<<if $visited_arcane_emporium === false && $tutorial_guides === true>>\
<<silently>>\
* Variables *
<<set $visited_arcane_emporium to true>>
* Dialogue Bools *
<<set $bought_spell_bool to false>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Arcane Emporium
</div>\
<div class="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/town/patricia/face_0.jpg]]
</div>\
<div class="dialogue-text">\
Greetings and welcome to the Arcane Emporium, a store filled with magical books. Ummm, my name is Patricia and I'm here most of the time. I haven't seen you around before, what kind of magic are you studying?
Eeeep! The new Dungeon Lord?! W-w-well the books you are probably going to be interested in are in the back corner. You can find books that teach you about Infliction, Manipulation, Summoning, and Support spells. Just, please don't use any of them here. I only say this because other Dungeon Lords thought I was one of their perverted slaves and used me to try a new spell. I hope you aren't like the other Dungeon Lords...
</div>\
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="forward"><<button [[Continue|Arcane Emporium]]>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
</div>\
<<elseif $missionLog.patricia.unlocked === true && $missionLog.patricia.started === false>>\
<<if $missionLog.patricia.num === 0>>\
<<silently>>\
* Variables *
<<set _missionName to setup.patriciaMisLine[$missionLog.patricia.num].name>>
* Update Mission *
<<set $missionLog.patricia.started to true>>
* Learn Spell *
<<set $pc_spellbook.push(clone(setup.patricias_spell))>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
_missionName
</div>\
<div class ="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/town/patricia/face_0.jpg]]
</div>\
<div class="dialogue-text">\
Oh, hi again $pc_name. Ummmm, I have a favor to ask of you. You seem to be skilled at using magic so I was wondering if you can try a Spell I found in the basement. I can't find any information about what it does, but judging by the cover, it seems like it could be useful for your kind of work. I normally don't condone this kind of use of magic, but my curiosity is getting the better of me.
OH A CUSTOMER! Please take it and get out of here quickly, before we are seen together!
</div>\
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="forward"><<button [[Continue|Town Menu]]>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
</div>\
<</if>>\
<<elseif $missionLog.patricia.completed === true>>\
<<set $reward_page to 1>>\
<<goto "Patricia Reward">>\
<<else>>\
<<silently>>\
* Variables *
* Set First Quest *
<<if $missionLog.patricia.num === "">>
<<set $missionLog.patricia.num to 0>>
<</if>>
* Dialogue *
<<if $entered_emporium_bool === true>>
<<set _list to ["H-h-hello Dungeon Lord, what brings you here today?", "G-g-good afternoon Dungeon Lord.", "Welcome to the Arcane Emporium.", "It's nice to see you again Dungeon Lord. If you need any help, just let me know.", "Oh, hello Dungeon Lord. Let me know if you need help finding anything.", "Ummm, hi " + $pc_name + "."]>>
<<set _dialogue to _list.random()>>
<<elseif $bought_spell_bool === true>>
<<set _dialogue to "Thank you very much for your purchase. Let me know if you need anything else.">>
<<else>>
<<set _list to ["Eeep! Don't startle me like that when I'm reading!", "I can't believe we are required to carry such terrible spells for Dungeon Lords.", "Have you read any good books lately?", "Please don't mention what you are going to use these spells for.", "I'd love to be able to travel to some of the places I've read about. But also, outside is scary."]>>
<<set _dialogue to _list.random()>>
<</if>>
* Dialogue Bools *
<<set $bought_spell_bool to false>>
<<set $entered_emporium_bool to false>>
*Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Arcane Emporium
</div>\
<div class="dialoguebox-townshops">\
<div class="dialoguepic-townshops">\
[img[images/town/patricia/face_0.jpg]]
</div>\
<div class="dialoguetext-townshops">\
_dialogue
</div>\
</div>\
<div class="cardholder-townshops-4">\
<div class="infobox-townshops">\
<div class="infobox-title-townshops">\
Infliction Spells
</div>\
<div class="infobox-body-townshops">\
Spells that deal damage and inflict Statuses. Spellchecks for these Spells only affect any secondary effects, they will always deal damage.
</div>\
<div class="infobox-link-townshops">\
<<if $infliction_spell_sale_list.length > 0>>\
<span id="1"><<button "Infliction Spells ^^1^^" "Buy Spell">><<set $spell_type to "Infliction">>\
<<for _s = 0; _s < $infliction_spell_sale_list.length; _s++>>\
<<UpdateSpell $infliction_spell_sale_list[_s]>>\
<</for>>\
<</button>></span>
<<else>>\
<div class="offbutton">\
<<hovertip "Sold Out">><<button "Infliction Spells">><</button>><</hovertip>>
</div>\
<</if>>
</div>\
</div>\
</div>\
<div class="cardholder-townshops-4">\
<div class="infobox-townshops">\
<div class="infobox-title-townshops">\
Manipulation Spells
</div>\
<div class="infobox-body-townshops">\
Spells that have a wide variety of effects, including Capturing, teleporting, or modifying Kinks and Turn-Offs.
</div>\
<div class="infobox-link-townshops">\
<<if $manipulation_spell_sale_list.length > 0>>\
<span id="2"><<button "Manipulation Spells ^^2^^" "Buy Spell">><<set $spell_type to "Manipulation">>\
<<for _s = 0; _s < $manipulation_spell_sale_list.length; _s++>>\
<<UpdateSpell $manipulation_spell_sale_list[_s]>>\
<</for>>\
<</button>></span>
<<else>>\
<div class="offbutton">\
<<hovertip "Sold Out">><<button "Manipulation Spells">><</button>><</hovertip>>
</div>\
<</if>>
</div>\
</div>\
</div>\
<div class="cardholder-townshops-4">\
<div class="infobox-townshops">\
<div class="infobox-title-townshops">\
Summoning Spells
</div>\
<div class="infobox-body-townshops">\
Spells that summon Creatures to attack and Capture Raiders.
</div>\
<div class="infobox-link-townshops">\
<<if $summoning_spell_sale_list.length > 0>>\
<span id="3"><<button "Summoning Spells ^^3^^" "Buy Spell">><<set $spell_type to "Summoning">>\
<<for _s = 0; _s < $summoning_spell_sale_list.length; _s++>>\
<<UpdateSpell $summoning_spell_sale_list[_s]>>\
<</for>>\
<</button>></span>
<<else>>\
<div class="offbutton">\
<<hovertip "Sold Out">><<button "Summoning Spells">><</button>><</hovertip>>
</div>\
<</if>>
</div>\
</div>\
</div>\
<div class="cardholder-townshops-4">\
<div class="infobox-townshops">\
<div class="infobox-title-townshops">\
Supportive Spells
</div>\
<div class="infobox-body-townshops">\
Spells that heal or buff your Dungeon's Creatures or Traps.
</div>\
<div class="infobox-link-townshops">\
<<if $supportive_spell_sale_list.length > 0>>\
<span id="4"><<button "Supportive Spells ^^4^^" "Buy Spell">><<set $spell_type to "Supportive">>\
<<for _s = 0; _s < $supportive_spell_sale_list.length; _s++>>\
<<UpdateSpell $supportive_spell_sale_list[_s]>>\
<</for>>\
<</button>></span>
<<else>>\
<div class="offbutton">\
<<hovertip "Sold Out">><<button "Supportive Spells">><</button>><</hovertip>>
</div>\
<</if>>
</div>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Leave|Town Menu]]>><</button>></span> <span id="q"><<button "<u>Q</u>uick Menu" "Quick Menu">><</button>></span>
</div>\
</div>\
<</if>>\
<<if $choose_adventurer === false>>\
<<silently>>\
* Variables *
* Recommended Gold Amount *
<<switch $dungeon_rank>>
<<case 1>>
<<set _lowGold to 150>>
<<set _highGold to 300>>
<<case 2>>
<<set _lowGold to 200>>
<<set _highGold to 500>>
<<case 3>>
<<set _lowGold to 300>>
<<set _highGold to 750>>
<<default>>
<<set _lowGold to 500>>
<<set _highGold to 1000>>
<</switch>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Hiring an Adventurer
</div>\
<div class="dialoguebox-townshops">\
<div class="dialoguepic-townshops">\
[img[images/town/mallory/face_0.jpg]]
</div>\
<div class="dialoguetext-townshops">\
Choose a class you are interested in hiring. You can choose one of the three Adventurers who will come to Raid your Dungeon. For your Dungeon Rank, I recommend you have between <span style="color:gold">_lowGold</span> and <span style="color:gold">_highGold Gold</span> to hire them. <<if $cur_hire_count > 1>>Choosing a class will use one of your $cur_hire_count requests<<else>>Choosing a class will use your last request<</if>>, even if you choose not to hire one of them.
</div>\
</div>\
<div class="cellholder-guild">\
<div class="cell-class-guild">\
<span id="1"><label><<-setup.hunter.icon>>
<<button "Hunters ^^1^^" "Hire">><<set $cur_hire_count-->><<set $raiderChoice to clone(setup.hunter)>><<set $choose_adventurer to true>><</button>></label></span>
</div>\
<div class="cell-class-guild">\
<span id="2"><label><<-setup.sorcerer.icon>>
<<button "Sorcerers ^^2^^" "Hire">><<set $cur_hire_count-->><<set $raiderChoice to clone(setup.sorcerer)>><<set $choose_adventurer to true>><</button>></label></span>
</div>\
<div class="cell-class-guild">\
<span id="3"><label><<-setup.knight.icon>>
<<button "Knights ^^3^^" "Hire">><<set $cur_hire_count-->><<set $raiderChoice to clone(setup.knight)>><<set $choose_adventurer to true>><</button>></label></span>
</div>\
<div class="cell-class-guild">\
<span id="4"><label><<-setup.warrior.icon>>
<<button "Warriors ^^4^^" "Hire">><<set $cur_hire_count-->><<set $raiderChoice to clone(setup.warrior)>><<set $choose_adventurer to true>><</button>></label></span>
</div>\
<div class="cell-class-guild">\
<span id="5"><label><<-setup.priestess.icon>>
<<button "Priestesses ^^5^^" "Hire">><<set $cur_hire_count-->><<set $raiderChoice to clone(setup.priestess)>><<set $choose_adventurer to true>><</button>></label></span>
</div>\
<div class="cell-class-guild">\
<span id="6"><label><<-setup.thief.icon>>
<<button "Thieves ^^6^^" "Hire">><<set $cur_hire_count-->><<set $raiderChoice to clone(setup.thief)>><<set $choose_adventurer to true>><</button>></label></span>
</div>\
<div class="cell-class-guild">\
<span id="7"><label><<-setup.alchemist.icon>>
<<button "Alchemists ^^7^^" "Hire">><<set $cur_hire_count-->><<set $raiderChoice to clone(setup.alchemist)>><<set $choose_adventurer to true>><</button>></label></span>
</div>\
<div class="cell-class-guild">\
<span id="8"><label><<-setup.witch.icon>>
<<button "Witches ^^8^^" "Hire">><<set $cur_hire_count-->><<set $raiderChoice to clone(setup.witch)>><<set $choose_adventurer to true>><</button>></label></span>
</div>\
<div class="cell-class-guild">\
<span id="9"><label><<-setup.dancer.icon>>
<<button "Dancers ^^9^^" "Hire">><<set $cur_hire_count-->><<set $raiderChoice to clone(setup.dancer)>><<set $choose_adventurer to true>><</button>></label></span>
</div>\
<div class="cell-class-guild">\
<span id="0"><label><<-setup.brawler.icon>>
<<button "Brawlers ^^0^^" "Hire">><<set $cur_hire_count-->><<set $raiderChoice to clone(setup.brawler)>><<set $choose_adventurer to true>><</button>></label></span>
</div>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Adventurer's Guild]]>><<unset $choose_adventurer>><</button>></span> <span id="q"><<button "<u>Q</u>uick Menu" "Quick Menu">><<unset $choose_adventurer>><</button>></span> /*<<button [[TEST RAIDER|Hire]]>><<set $raiderChoice to clone(setup.neeko)>><<set $choose_adventurer to true>><</button>>*/
</div>\
</div>\
<<else>>\
<<silently>>\
* Variables *
* Set Adventure List *
<<set $adventurers to []>>
<<for _i = 0; _i < 3; _i++>>
<<set $adventurers.push(clone($raiderChoice))>>
<</for>>
<<unset $raiderChoice>>
* Hiring Prices *
<<set _rookie_price to 150>>
<<set _novice_price to 200>>
<<set _adept_price to 300>>
<<set _expert_price to 500>>
<<set _veteran_price to 750>>
<<set _master_price to 1000>>
* SLAVE PACK LIST *
<<set _available_class_list to ["Hunter","Sorcerer","Knight","Warrior","Priestess","Thief","Alchemist","Witch","Dancer","Brawler"]>>
<<set _class_list to []>>
<<for _i = 0; _i < _available_class_list.length; _i++>>
<<set _class_list[_available_class_list[_i]] to []>>
<</for>>
<<for _i = 0; _i < $slave_pack_array.length; _i++>>
<<for _c = 0; _c < $slave_pack_array[_i].classes.length; _c++>>
<<set _class_name to $slave_pack_array[_i].classes[_c]>>
<<if $slave_pack_array[_i][_class_name.toLowerCase()] == true>>
<<set _class_list[_class_name].push($slave_pack_array[_i])>>
<</if>>
<</for>>
<</for>>
<<for _i = 0; _i < _available_class_list.length; _i++>>
<<set _class_list[_available_class_list[_i]].shuffle()>>
<</for>>
* Subclass Options *
<<switch $dungeon_rank>>
<<case 1>>
<<set $adventurers[0].subclass to clone(setup.rookie)>>
<<set $adventurers[1].subclass to clone(setup.novice)>>
<<set $adventurers[2].subclass to clone(setup.adept)>>
<<case 2>>
<<set $adventurers[0].subclass to clone(setup.novice)>>
<<set $adventurers[1].subclass to clone(setup.adept)>>
<<set $adventurers[2].subclass to clone(setup.expert)>>
<<case 3>>
<<set $adventurers[0].subclass to clone(setup.adept)>>
<<set $adventurers[1].subclass to clone(setup.expert)>>
<<set $adventurers[2].subclass to clone(setup.veteran)>>
<<default>>
<<set $adventurers[0].subclass to clone(setup.expert)>>
<<set $adventurers[1].subclass to clone(setup.veteran)>>
<<set $adventurers[2].subclass to clone(setup.master)>>
<</switch>>
* Special Trait List *
<<set _special_trait_rng to 15>>
<<set _special_traits to [setup.virgin, setup.famous, setup.famous, setup.wealthy, setup.wealthy, setup.wealthy, setup.wealthy]>>
* Raider Grinder *
<<set _errorBool to false>>
<<for _i = 0; _i < $adventurers.length; _i++>>
<<if $adventurers[_i].grinded === false>>
<<RaiderGrinder $adventurers[_i]>>
<<else>>
<<set _errorBool to true>>
<</if>>
<</for>>
*Display*
<</silently>>\
<div class="section">\
<div class="titlebox">\
Chosen an Adventurer to Hire
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Hire Nobody|Adventurer's Guild]]>><</button>></span>
</div>\
<<for _a = 0; _a < $adventurers.length; _a++>>\
<div class="cardholder-3girls">\
<div class="cardinfo-3girls">\
<div class="picbox-3girls">\
$adventurers[_a].pic
</div>\
<div class="textbox-3girls">\
Name: $adventurers[_a].name
Class: $adventurers[_a].subclass.name $adventurers[_a].class
Role: $adventurers[_a].role
Traits: <<for _i = 0; _i < $adventurers[_a].traits.length; _i++>>\
<<if $adventurers[_a].traits[_i].type === "Special">>\
<span style="color:gold"><<hovertip "$adventurers[_a].traits[_i].type: $adventurers[_a].traits[_i].tooltip">>$adventurers[_a].traits[_i].name<</hovertip>></span><<if _i + 1 < $adventurers[_a].traits.length>>, <</if>>\
<<else>>\
<<hovertip "$adventurers[_a].traits[_i].type: $adventurers[_a].traits[_i].tooltip">>$adventurers[_a].traits[_i].name<</hovertip>><<if _i + 1 < $adventurers[_a].traits.length>>, <</if>>\
<</if>>\
<</for>>
Kinks: <<if $adventurers[_a].kinks.length === 0>>None<<else>>$adventurers[_a].kinks<</if>>
Turn-Offs: <<if $adventurers[_a].turnoffs.length === 0>>None<<else>>$adventurers[_a].turnoffs<</if>>
Statuses: <<if $adventurers[_a].statuses.length == 0>>\
None
<<else>>\
<<for _i = 0; _i < $adventurers[_a].statuses.length; _i++>>\
<<hovertip "$adventurers[_a].statuses[_i].tooltip">>$adventurers[_a].statuses[_i].name<</hovertip>><<if _i + 1 < $adventurers[_a].statuses.length>>, <</if>><</for>><</if>>
</div>\
</div>\
<div class="linkbox-targeting-3girls">\
<<silently>>\
<<switch $adventurers[_a].subclass.name>>
<<case "Rookie">>
<<set _cost to _rookie_price>>
<<case "Novice">>
<<set _cost to _novice_price>>
<<case "Adept">>
<<set _cost to _adept_price>>
<<case "Expert">>
<<set _cost to _expert_price>>
<<case "Veteran">>
<<set _cost to _veteran_price>>
<<case "Master">>
<<set _cost to _master_price>>
<</switch>>
<</silently>>\
<<if $pc_gold < _cost>>\
<div class="offbutton">\
<<hovertip "You don't have enough Gold">><<button "_cost Gold">><</button>><</hovertip>>
</div>\
<<else>>\
<<set _hotKey to _a + 1>>\
<<capture _cost, _a, _hotKey>>\
<span @id="_hotKey"><<button "_cost Gold ^^_hotKey^^" "Adventurer's Guild">><<set $pc_gold -= _cost>><<set $total_pc_gold_spent += _cost>><<set $hired_raiders.push($adventurers[_a])>><<unset $choose_adventurer, $adventurers>><</button>></span>
<</capture>>\
<</if>>\
</div>\
</div>\
<</for>>\
</div>\
<</if>>\<<if $visited_adventurers_guild === false && $tutorial_guides === true>>\
<<silently>>\
* Variables *
<<set $visited_adventurers_guild to true>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Adventurer's Guild
</div>\
<div class="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/town/mallory/face_0.jpg]]
</div>\
<div class="dialogue-text">\
Hiya and welcome to the Adventurer's Guild! My name is Mallory and I am the Guildmaster here. You must be the new Dungeon Lord, $pc_name. Don't worry, we have plenty of services for Dungeon Lords such as yourself.
First, you can increase or decrease the Threat level your Dungeon is currently at. You are more likely to see stronger adventurers when your Threat is high. Secondly, you can hire adventurers to come to your Dungeon. Lastly, you can pick up various tasks on the Quest Board if you are looking to earn some extra @@.gold;Gold@@ and @@.gold;Treasure@@. Every service we provide you has a small fee so keep this in mind. I look forward to seeing you around $pc_name!
</div>\
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="forward"><<button [[Continue|Adventurer's Guild]]>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
</div>\
<<elseif $missionLog.mallory.unlocked === true && $missionLog.mallory.started === false>>\
<<if $missionLog.mallory.num === 0>>\
<<silently>>\
* Start Mission *
<<set $missionLog.mallory.started to true>>
<<set _misName to setup.malloryMisLine[$missionLog.mallory.num].name>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
_misName
</div>\
<div class="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/town/mallory/face_0.jpg]]
</div>\
<div class="dialogue-text">\
Oh, $pc_name! Just the Dungeon Lord I was looking for. There have been a lot of new adventurers complaining about how boring the dungeons are around here. I know we don't have the best dungeon quests to offer, but it still makes me so mad! We have a lot of pride here and I don't like it when some new bloods come in and talk down on us. Do you think you could teach them a lesson for me? I'm sure they will start showing up to your dungeon soon. Just stopping them isn't enough, I want you to Capture them and teach them a lesson. Easy, right? Like, that's what you already do anyways, so you'll do this for me, yes? Great! Just be on the lookout for any Raiders with the @@.gold;New Blood@@ Trait! If you manage to get 3 of them, I'll give you something good!
</div>\
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="forward"><<button [[Continue|Adventurer's Guild]]>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
</div>\
<</if>>\
<<elseif $missionLog.mallory.completed === true>>\
<<set $reward_page to 1>>\
<<goto "Mallory Reward">>\
<<else>>\
<<silently>>\
* Variables *
* Set First Quest *
<<if $missionLog.mallory.num === "">>
<<set $missionLog.mallory.num to 0>>
<</if>>
* Own a Slave Check *
<<set _owns_bool to false>>
<<for _z = 0; _z < $slave_room_list.length; _z++>>
<<if $slave_room_list[_z].room_type === "Slave">>
<<set _owns_bool to true>>
<<break>>
<</if>>
<</for>>
* Dialogue *
<<if $refresh_quest_cd === 1>>
<<set _dialogue to "We are posting new tasks on the Quest Board tomorrow " + $pc_name + ".">>
<<elseif $new_quest_dialogue === true>>
<<set $new_quest_dialogue to false>>
<<set _dialogue to "We just finished putting up the new tasks on the Quest Board. Be sure to check it out.">>
<<else>>
<<set _list to ["Enjoying being a Dungeon Lord? I think you are doing great, keep up and good work and remember, we are here to help!", "If you Threat is locked, you cannot raise or lower it until the lock ends.", "As your Dungeon Rank increases, our services for you will improve too.", "Staying out of trouble I hope. Just kidding, it is your job to cause trouble.", "Without Dungeon Lords like yourself, we would be out of work.", "Hiring adventurers is a good way to guarantee you see a certain class that night.", "When hiring an adventurer, you get to see all their information. So you can choose someone who you think might have a hard time clearing your dungeon.", "Remember to keep gold and treasure stocked in your dungeon if you want to keep adventurers coming to your dungeon."]>>
<<set _dialogue to _list.random()>>
<</if>>
* Reset Dialogue & News Bools *
<<set $quest_board_news to false>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Adventurer's Guild
</div>\
<div class="dialoguebox-townshops">\
<div class="dialoguepic-townshops">\
[img[images/town/mallory/face_0.jpg]]
</div>\
<div class="dialoguetext-townshops">\
Welcome $pc_name! Come in, come in!
_dialogue
</div>\
</div>\
<div class="cardholder-townshops">\
<div class="infobox-townshops">\
<div class="infobox-title-townshops">\
Manage Threat
</div>\
<div class="infobox-body-townshops">\
Raise or lower your Dungeon's Threat level as long as your Threat is not Locked.
</div>\
<div class="infobox-link-townshops">\
<span id="1"><<button "Manage Threat ^^1^^" "Manage Threat">><</button>></span>
</div>\
</div>\
</div>\
<div class="cardholder-townshops">\
<div class="infobox-townshops">\
<div class="infobox-title-townshops">\
Quest Board
</div>\
<div class="infobox-body-townshops">\
Assign your Slaves Quests to earn @@.gold;Gold@@, @@.rep;Reputation@@, and Treasures. Rewards are earned based on how well the Quest was completed.
</div>\
<div class="infobox-link-townshops">\
<<if _owns_bool === false>>\
<div class="offbutton">\
<<hovertip "Requires a Slave">><<button "View Quest Board">><</button>><</hovertip>>
</div>\
<<else>>\
<span id="2"><<button "View Quest Board ^^2^^" "Quest Board">><<unset $cur_slave>><</button>></span>
<</if>>\
</div>\
</div>\
</div>\
<div class="cardholder-townshops">\
<div class="infobox-townshops">\
<div class="infobox-title-townshops">\
Hire Adventurer
</div>\
<div class="infobox-body-townshops">\
Enlist one of three Raiders to come to your Dungeon. You can request this service $max_hire_count times each night.
Requests left: $cur_hire_count
</div>\
<div class="infobox-link-townshops">\
<<if $cur_hire_count > 0>>\
<span id="3"><<button "Hire Adventurer ^^3^^" "Hire">><<set $choose_adventurer to false>><</button>></span>
<<else>>\
<div class="offbutton">\
<<hovertip "Out of Requests">><<button "Hire Adventurer">><</button>><</hovertip>>
</div>\
<</if>>\
</div>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Leave|Town Menu]]>><</button>></span> <span id="q"><<button "<u>Q</u>uick Menu" "Quick Menu">><</button>></span>
</div>\
</div>\
<</if>>\<<silently>>\
* Variables *
<<set _threat_amount to 20>> base value to increase or decrease threat
<<set _base_cost to 5>> base value cost per threat increase or decrease
<<set _cost_mod to 1.25>> increase or decrease cost amount based on current threat level
<<set _rank_mod to 0.5>> mult cost by this amount for each dungeon rank
* Calc raise Threat cost and amount *
SET COST PER THREAT
<<if $dungeon_threat >= 80>>
<<set _raise_cost to _base_cost - (_cost_mod * 2)>>
<<set _lower_cost to _base_cost + (_cost_mod * 2)>>
<<elseif $dungeon_threat >= 60>>
<<set _raise_cost to _base_cost - _cost_mod>>
<<set _lower_cost to _base_cost + _cost_mod>>
<<elseif $dungeon_threat >= 40>>
<<set _raise_cost to _base_cost>>
<<set _lower_cost to _base_cost>>
<<elseif $dungeon_threat >= 20>>
<<set _raise_cost to _base_cost + _cost_mod>>
<<set _lower_cost to _base_cost - _cost_mod>>
<<elseif $dungeon_threat >= 0>>
<<set _raise_cost to _base_cost + (_cost_mod * 2)>>
<<set _lower_cost to _base_cost - (_cost_mod * 2)>>
<</if>>
SET RAISED TOTAL COST
<<set _total_raised_cost to Math.round(_raise_cost * _threat_amount)>>
<<set _total_raised_cost += Math.round(_total_raised_cost * (_rank_mod * ($dungeon_rank - 1)))>>
SET LOWERED TOTAL COST
<<set _total_lowered_cost to Math.round(_lower_cost * _threat_amount)>>
<<set _total_lowered_cost += Math.round(_total_lowered_cost * (_rank_mod * ($dungeon_rank - 1)))>>
* Dialogue Options *
<<if $threat_locked === true>>
<<set _dialogue to "Looks like you will have to wait until your Threat is Unlocked before you can lower it.">>
<<else>>
<<set _dialogue_list to ["If things are becoming too easy, you can always increase your Threat to attract stronger Raiders.", "If you find your rooms struggling to keep up with the Raiders, you can lower your Threat level to lure in weaker Raiders.", "It higher your Dungeon Rank is, the most is costs to change your Threat."]>>
<<set _dialogue to _dialogue_list.random()>>
<</if>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Manage Threat
</div>\
<div class="dialoguebox-townshops">\
<div class="dialoguepic-townshops">\
[img[images/town/mallory/face_0.jpg]]
</div>\
<div class="dialoguetext-townshops">\
You wish to manage your Dungeon's Threat level?
_dialogue
</div>\
</div>\
<div class="cardholder-townshops">\
<div class="infobox-townshops">\
<div class="infobox-title-townshops">\
Lower Threat
</div>\
<div class="infobox-body-townshops">\
Spend Gold to reduce your Dungeon's Threat by _threat_amount. Lower ranked Raiders are more likely to Raid Dungeons with a lower Threat level. Lowering Threat costs more if your current Threat is high. You cannot lower your Threat if it is Locked.
</div>\
<div class="infobox-link-townshops">\
<<if $threat_locked === true>>\
<div class="offbutton">\
<<button "_total_lowered_cost Gold">><</button>>
</div>\
<<elseif $dungeon_threat === 0>>\
<div class="offbutton">\
<<button "_total_lowered_cost Gold">><</button>>
</div>\
<<elseif $pc_gold < _total_lowered_cost>>\
<div class="offbutton">\
<<button "_total_lowered_cost Gold">><</button>>
</div>\
<<else>>\
<span id="1"><<button "_total_lowered_cost Gold ^^1^^" "Manage Threat">>\
<<silently>>\
<<set $dungeon_threat to Math.clamp($dungeon_threat - _threat_amount, 0, setup.threat_max_amount)>>
<<set $pc_gold -= _total_lowered_cost>>
<<set $pc_town_gold_spent += _total_lowered_cost>>
<</silently>>\
<</button>></span>\
<</if>>\
</div>\
</div>\
</div>\
<div class="cardholder-townshops">\
</div>\
<div class="cardholder-townshops">\
<div class="infobox-townshops">\
<div class="infobox-title-townshops">\
Raise Threat
</div>\
<div class="infobox-body-townshops">\
Spend Gold to raise your Dungeon's Threat by _threat_amount. Higher ranked Raiders are more likely to Raid Dungeons with a higher Threat level. Raising your Threat costs more if your current Threat is low.
</div>\
<div class="infobox-link-townshops">\
<<if $dungeon_threat >= setup.threat_max_amount>>\
<div class="offbutton">\
<<button "_total_raised_cost Gold">><</button>>
</div>\
<<elseif $pc_gold < _total_raised_cost>>\
<div class="offbutton">\
<<button "_total_raised_cost Gold">><</button>>
</div>\
<<else>>\
<span id="2"><<button "_total_raised_cost Gold ^^2^^" "Manage Threat">>\
<<silently>>\
<<set $dungeon_threat to Math.clamp($dungeon_threat + _threat_amount, 0, setup.threat_max_amount)>>
<<set $pc_gold -= _total_raised_cost>>
<<set $pc_town_gold_spent += _total_raised_cost>>
<</silently>>\
<</button>></span>\
<</if>>\
</div>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Adventurer's Guild]]>><</button>></span> <span id="q"><<button "<u>Q</u>uick Menu" "Quick Menu">><</button>></span>\
</div>\
</div>\<<silently>>\
*Variables*
<<set _levelup_trigger to false>> set to true if creature gained level
<<set _times_leveledup to 0>> number of times the creature leveled up
<<set _risk_percent to $cur_room.risk_percent>>
<<set _robust_trigger to false>> set to true if robust triggered
<<set _obedience_trigger to false>> set to true if slave obedience stat increased, triggers text
<<set _strength_trigger to false>> set to true if slave strength stat increased, triggers text
<<set _libido_trigger to false>> set to true if slave libido stat increased, triggers text
<<set _energy_trigger to false>> set to true if slave energy increased, triggers text
<<set _virgin_neg_trigger to false>> set to true if slave virginity is broken and replaced with a negative trait
<<set _exp_mod to 0.15>> increase or decrease the amount of exp earned based on the difficulty
*Picture*
BASIC CAPTURE PICS (FOR SLIME)
<<set _petite_capture_pic0 to "[img[images/creatures/slime/basic_slime/petite/0.jpg]]">>
<<set _petite_capture_pic1 to "[img[images/creatures/slime/basic_slime/petite/1.jpg]]">>
<<set _petite_capture_pic2 to "[img[images/creatures/slime/basic_slime/petite/2.jpg]]">>
<<set _petite_capture_pic3 to "[img[images/creatures/slime/basic_slime/petite/3.jpg]]">>
<<set _petite_capture_pic4 to "[img[images/creatures/slime/basic_slime/petite/4.jpg]]">>
<<set _busty_capture_pic0 to "[img[images/creatures/slime/basic_slime/busty/0.jpg]]">>
<<set _busty_capture_pic1 to "[img[images/creatures/slime/basic_slime/busty/1.jpg]]">>
<<set _busty_capture_pic2 to "[img[images/creatures/slime/basic_slime/busty/2.jpg]]">>
<<set _busty_capture_pic3 to "[img[images/creatures/slime/basic_slime/busty/3.jpg]]">>
<<set _busty_capture_pic4 to "[img[images/creatures/slime/basic_slime/busty/4.jpg]]">>
BASIC CAPTURE LIST
<<set _petite_capture_list to [_petite_capture_pic0, _petite_capture_pic1, _petite_capture_pic2, _petite_capture_pic3, _petite_capture_pic4]>>
<<set _busty_capture_list to [_busty_capture_pic0, _busty_capture_pic1, _busty_capture_pic2, _busty_capture_pic3, _busty_capture_pic4]>>
<<if $cur_room.name === "Toxic Slime">>
TOXIC SLIME NEW CAPTURE PICS
<<set _petite_capture_pic5 to "[img[images/creatures/slime/toxic_slime/petite/0.jpg]]">>
<<set _petite_capture_pic6 to "[img[images/creatures/slime/toxic_slime/petite/1.jpg]]">>
<<set _petite_capture_pic7 to "[img[images/creatures/slime/toxic_slime/petite/2.jpg]]">>
<<set _petite_capture_pic8 to "[img[images/creatures/slime/toxic_slime/petite/3.jpg]]">>
<<set _busty_capture_pic5 to "[img[images/creatures/slime/toxic_slime/busty/0.jpg]]">>
<<set _busty_capture_pic6 to "[img[images/creatures/slime/toxic_slime/busty/1.jpg]]">>
<<set _busty_capture_pic7 to "[img[images/creatures/slime/toxic_slime/busty/2.jpg]]">>
<<set _busty_capture_pic8 to "[img[images/creatures/slime/toxic_slime/busty/3.jpg]]">>
<<set _petite_capture_list.push(_petite_capture_pic5, _petite_capture_pic6, _petite_capture_pic7, _petite_capture_pic8)>>
<<set _busty_capture_list.push(_busty_capture_pic5, _busty_capture_pic6, _busty_capture_pic7, _busty_capture_pic8)>>
<<elseif $cur_room.name === "Horny Slime">>
HORNY SLIME NEW CAPTURE PICS
<<set _petite_capture_pic5 to "[img[images/creatures/slime/horny_slime/petite/0.jpg]]">>
<<set _petite_capture_pic6 to "[img[images/creatures/slime/horny_slime/petite/1.jpg]]">>
<<set _petite_capture_pic7 to "[img[images/creatures/slime/horny_slime/petite/2.jpg]]">>
<<set _petite_capture_pic8 to "[img[images/creatures/slime/horny_slime/petite/3.jpg]]">>
<<set _busty_capture_pic5 to "[img[images/creatures/slime/horny_slime/busty/0.jpg]]">>
<<set _busty_capture_pic6 to "[img[images/creatures/slime/horny_slime/busty/1.jpg]]">>
<<set _busty_capture_pic7 to "[img[images/creatures/slime/horny_slime/busty/2.jpg]]">>
<<set _busty_capture_pic8 to "[img[images/creatures/slime/horny_slime/busty/3.jpg]]">>
<<set _petite_capture_list.push(_petite_capture_pic5, _petite_capture_pic6, _petite_capture_pic7)>>
<<set _busty_capture_list.push(_busty_capture_pic5, _busty_capture_pic6, _busty_capture_pic7)>>
<</if>>
<<switch $cur_slave.body_type>>
<<case "Busty">>
<<set _pic to _busty_capture_list.random()>>
<<case "Petite">>
<<set _pic to _petite_capture_list.random()>>
<</switch>>
*Get Slave Info*
<<set _cur_slave_trait_names to []>>
<<for _i = 0; _i < $cur_slave.positive_traits.length; _i++>>
<<set _trait to $cur_slave.positive_traits[_i].name>>
<<set _cur_slave_trait_names.push(_trait)>>
<</for>>
<<for _i = 0; _i < $cur_slave.negative_traits.length; _i++>>
<<set _trait to $cur_slave.negative_traits[_i].name>>
<<set _cur_slave_trait_names.push(_trait)>>
<</for>>
*Luck*
<<set _rng to random(1, 6)>>
<<if _rng === 6>>
<<set _luck to 1>>
<<elseif _rng === 1>>
<<set _luck to -1>>
<<else>>
<<set _luck to 0>>
<</if>>
*Base EXP gained*
<<set _exp_amount to Math.round(random($cur_room.min_base_service_exp, $cur_room.max_base_service_exp) + ($cur_room.exp_per_libido * $cur_slave.libido))>>
*Set Service Stat*
<<switch $cur_room.service_stat>>
<<case "Love">>
<<set _service_stat to $cur_slave.love>>
<<case "Libido">>
<<set _service_stat to $cur_slave.libido>>
<<case "Strength">>
<<set _service_stat to $cur_slave.strength>>
<<case "Intelligence">>
<<set _service_stat to $cur_slave.intelligence>>
<<case "Obedience">>
<<set _service_stat to $cur_slave.obedience>>
<<case "Energy">>
<<set _service_stat to $cur_slave.energy>>
<</switch>>
*Rating*
<<if _service_stat + _luck >= $cur_room.best>>
<<set _rating to 3>>
<<set _exp_amount to Math.round(_exp_amount * setup.service_best_mod)>>
<<elseif _service_stat + _luck >= $cur_room.average>>
<<set _rating to 2>>
<<else>>
<<set _rating to 1>>
<<set _exp_amount to Math.round(_exp_amount * setup.service_worst_mod)>>
<</if>>
*Risk and Strength Check*
<<set _rng to random(1, 100)>>
<<if _risk_percent >= _rng>>
<<set _rng to random($cur_room.min_strength, $cur_room.max_strength)>>
<<if _rng > $cur_slave.strength + _luck>>
ROBUST CHECK
<<if _cur_slave_trait_names.includes("Robust")>>
<<set _rng to random(1, 100)>>
<<if _rng <= setup.robust.percent>>
<<set _robust_trigger to true>>
<<else>>
<<set $cur_slave.injured to true>>
<<set $cur_slave.injured_cd to random($cur_task.min_injured, $cur_task.max_injured)>>
SOFT TRAIT
<<if _cur_slave_trait_names.includes("Soft")>>
<<set $cur_slave.injured_cd *= setup.soft.mult>>
<</if>>
<</if>>
<<else>>
<<set $cur_slave.injured to true>>
<<set $cur_slave.injured_cd to random($cur_room.min_injured, $cur_room.max_injured)>>
SOFT TRAIT
<<if _cur_slave_trait_names.includes("Soft")>>
<<set $cur_slave.injured_cd *= setup.soft.mult>>
<</if>>
<</if>>
<</if>>
<</if>>
*Virgin Check*
<<if _cur_slave_trait_names.includes(setup.virginity.name)>>
REMOVE VIRGINITY TRAIT
<<for _i = 0; _i < $cur_slave.positive_traits.length; _i++>>
<<if $cur_slave.positive_traits[_i].name === setup.virginity.name>>
<<set _remove to $cur_slave.positive_traits.deleteAt(_i)>>
<<break>>
<</if>>
<</for>>
<<set $cur_slave.positive_traits.push(setup.loathing)>>
<<set _virgin_neg_trigger to true>>
<</if>>
*EXP MODIFIERS*
SEXY TRAIT
<<if _cur_slave_trait_names.includes("Sexy")>>
<<set _amount to Math.round(_exp_amount * setup.sexy.float)>>
<<set _exp_amount += _amount>>
<</if>>
CARING TRAIT
<<if _cur_slave_trait_names.includes("Caring")>>
<<set _exp_amount *= setup.caring.mult>>
<</if>>
RUDE TRAIT
<<if _cur_slave_trait_names.includes("Rude")>>
<<set _amount to Math.round(_exp_amount * setup.rude.float)>>
<<set _exp_amount -= _amount>>
<</if>>
*ADD EXP*
DIFFICULTY MOD
<<set _amount to Math.round(_exp_amount * _exp_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _exp_amount += _amount>>
<<case "brutal">>
<<set _exp_amount -= _amount>>
<</switch>>
CLAMP MIN
<<if _exp_amount < 1>>
<<set _exp_amount to 1>>
<</if>>
ADD EXP AND STATS
<<if $cur_room.level < $creature_levelcap>>
<<set $cur_room.exp += _exp_amount>>
<</if>>
<<set $cur_slave.total_exp_given += _exp_amount>>
<<set $cur_slave.total_tasks++>>
LEVEL UP CHECK
<<if $cur_room.exp >= $cur_room.next_level_exp && $cur_room.level < $creature_levelcap>>
<<for _i = 0; _i < 1; _i++>>
<<set _levelup_trigger to true>>
<<set _times_leveledup++>>
<<set $cur_room.level++>>
INCREASE STATS
HEALTH
<<set _amount to random($cur_room.low_hp, $cur_room.high_hp)>>
<<set $cur_room.max_hp += _amount>>
<<set $cur_room.cur_hp += _amount>>
ATTACK
<<set _amount to random($cur_room.low_atk, $cur_room.high_atk)>>
<<set $cur_room.atk += _amount>>
PHYSICAL RESISTANCE
<<set _amount to random($cur_room.low_pres, $cur_room.high_pres)>>
<<set $cur_room.pres += _amount>>
MAGICAL RESISTANCE
<<set _amount to random($cur_room.low_mres, $cur_room.high_mres)>>
<<set $cur_room.mres += _amount>>
SEX
<<set _amount to random($cur_room.low_sex, $cur_room.high_sex)>>
<<set $cur_room.sex += _amount>>
RATE
<<if $cur_room.level % $cur_room.rate_modular === 0>>
<<set $cur_room.rate += $cur_room.rate_gained>>
<</if>>
<<set $cur_room.next_level_exp to Math.round(((($cur_room.level + $cur_room.growth_rate) * ($cur_room.level + $cur_room.growth_rate) * ($cur_room.level + $cur_room.growth_rate)) / setup.creature_nextlevel_divisor) - (setup.creature_nextlevel_constant - ($cur_room.growth_rate * $cur_room.level)))>>
<<if $cur_room.exp >= $cur_room.next_level_exp && $cur_room.level < $creature_levelcap>>
CHECK IF GAINED ANOTHER LEVEL
<<set _i-->>
<<elseif $cur_room.level === $creature_levelcap>>
SET EXP TO LOWEST AMOUNT POSSIBLE TO REACH LEVEL, NO MORE LEVELS GAINED
<<set _last_level to $cur_room.level - 1>>
<<set $cur_room.exp to Math.round((((_last_level + $cur_room.growth_rate) * (_last_level + $cur_room.growth_rate) * (_last_level + $cur_room.growth_rate)) / setup.creature_nextlevel_divisor) - (setup.creature_nextlevel_constant - ($cur_room.growth_rate * _last_level)))>>
<</if>>
<</for>>
<</if>>
*Calc Obedience Stat Growth*
<<if $cur_slave.obedience < $cur_slave.obedience_limit>>
---CALC AMOUNT---
<<set _obedience_growth to $cur_room.obedience_growth * $cur_slave.obedience_growth_rate>>
---STAT GROWTH MODIFIERS---
LOYAL
<<if _cur_slave_trait_names.includes("Loyal")>>
<<if $cur_slave.love >= setup.loyal.love_req>>
<<set _obedience_growth *= setup.loyal.mult>>
<</if>>
<</if>>
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _obedience_growth *= setup.loathing.float>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.obedience_tracker += _obedience_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.obedience_tracker >= $cur_slave.obedience_tracker_limit>>
<<set _obedience_trigger to true>>
<<set $cur_slave.obedience++>>
<<set $cur_slave.obedience_tracker to 0>>
<<set $cur_slave.obedience_tracker_limit to Math.trunc(($cur_slave.obedience * $cur_slave.obedience * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
*Calc Libido Stat Growth*
<<if $cur_slave.libido < $cur_slave.libido_limit>>
---CALC AMOUNT---
<<set _libido_growth to $cur_room.libido_growth * $cur_slave.libido_growth_rate>>
---STAT GROWTH MODIFIERS---
LOYAL
<<if _cur_slave_trait_names.includes("Loyal")>>
<<if $cur_slave.love >= setup.loyal.love_req>>
<<set _libido_growth *= setup.loyal.mult>>
<</if>>
<</if>>
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _libido_growth *= setup.loathing.float>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.libido_tracker += _libido_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.libido_tracker >= $cur_slave.libido_tracker_limit>>
<<set _libido_trigger to true>>
<<set $cur_slave.libido++>>
<<set $cur_slave.libido_tracker to 0>>
<<set $cur_slave.libido_tracker_limit to Math.trunc(($cur_slave.libido * $cur_slave.libido * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
*Calc Strength Stat Growth*
<<if $cur_slave.strength < $cur_slave.strength_limit>>
---CALC AMOUNT---
<<set _strength_growth to $cur_room.strength_growth * $cur_slave.strength_growth_rate>>
---STAT GROWTH MODIFIERS---
MOTIVATED
<<if _cur_slave_trait_names.includes("Motivated")>>
<<if $cur_slave.love >= setup.loyal.love_req>>
<<set _strength_growth *= setup.motivated.mult>>
<</if>>
<</if>>
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _strength_growth *= setup.loathing.float>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.strength_tracker += _strength_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.strength_tracker >= $cur_slave.strength_tracker_limit>>
<<set _strength_trigger to true>>
<<set $cur_slave.strength++>>
<<set $cur_slave.strength_tracker to 0>>
<<set $cur_slave.strength_tracker_limit to Math.trunc(($cur_slave.strength * $cur_slave.strength * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
*Calc Energy Stat Growth*
<<if $cur_slave.energy < $cur_slave.energy_limit>>
---CALC AMOUNT---
<<set _energy_growth to $cur_room.energy_growth * $cur_slave.energy_growth_rate>>
---STAT GROWTH MODIFIERS---
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _energy_growth *= setup.loathing.float>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.energy_tracker += _energy_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.energy_tracker >= $cur_slave.energy_tracker_limit>>
<<set _energy_trigger to true>>
<<set $cur_slave.energy++>>
<<set $cur_slave.cur_energy++>>
<<set $cur_slave.energy_tracker to 0>>
<<set $cur_slave.energy_tracker_limit to Math.trunc(($cur_slave.energy * $cur_slave.energy * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
<<set _name to $cur_slave.name>>
*Display*
<</silently>>\
<div id="section">\
<div id="titlebox">\
<<switch $room_num>>\
<<case 1>>\
$cur_room.name in Room One
<<case 2>>\
$cur_room.name in Room Two
<<case 3>>\
$cur_room.name in Room Three
<<case 4>>\
$cur_room.name in Room Four
<<case 5>>\
$cur_room.name in Room Five
<<case 6>>\
$cur_room.name in Room Six
<<case 7>>\
$cur_room.name in Room Seven
<<case 8>>\
$cur_room.name in Room Eight
<<case 9>>\
$cur_room.name in Room Nine
<<case 10>>\
$cur_room.name in Room Ten
<<case 11>>\
$cur_room.name in Room Eleven
<<case 12>>\
$cur_room.name in Room Twelve
<</switch>>\
</div>\
<div class="centered">\
_pic
</div>\
<div id="textbox">\
<<if _luck === 1>>\
_name's service was excellent. \
<<elseif _luck === 0>>\
_name's service was average. \
<<else>>\
_name's service was poor. \
<</if>>\
<<if _rating === 3>>\
$cur_room.best_text
Your $cur_room.name gained _exp_amount EXP.
<<elseif _rating === 2>>\
$cur_room.average_text
Your $cur_room.name gained _exp_amount EXP.
<<else>>\
$cur_room.worst_text
Your $cur_room.name only gained _exp_amount EXP.
<</if>>\
<<if _robust_trigger === true>>\
Because she is <<hovertip "<<-setup.robust.tooltip>>">>Robust<</hovertip>>, she was not injured.
<<elseif $cur_slave.injured === true>>\
She has been injured and needs $cur_slave.injured_cd <<if $cur_slave.injured_cd === 1>>day<<else>>days<</if>> to recover.
<</if>>\
<<if _levelup_trigger === true>>\
It gained _times_leveledup <<if _times_leveledup === 1>>level<<else>>levels<</if>>. <<if $cur_room.level === $creature_levelcap>>It cannot gain anymore levels at this Rank.<</if>>
<</if>>\
<<if _obedience_trigger === true>>\
$cur_slave.name's <span style="color:cyan">Obedience</span> stat has increased. <<if $cur_slave.obedience === $cur_slave.obedience_limit>>Her <span style="color:cyan">Obedience</span> cannot go any higher.<</if>>
<</if>>\
<<if _libido_trigger === true>>\
$cur_slave.name's <span style="color:fuchsia">Libido</span> stat has increased. <<if $cur_slave.libido === $cur_slave.libido_limit>>Her <span style="color:fuchsia">Libido</span> cannot go any higher.<</if>>
<</if>>\
<<if _strength_trigger === true>>\
$cur_slave.name's <span style="color:orange">Strength</span> stat has increased. <<if $cur_slave.strength === $cur_slave.strength_limit>>Her <span style="color:orange">Strength</span> cannot go any higher.<</if>>
<</if>>\
<<if _energy_trigger === true>>\
$cur_slave.name's <span style="color:mediumseagreen">Energy</span> stat has increased. <<if $cur_slave.energy === $cur_slave.energy_limit>>Her <span style="color:mediumseagreen">Energy</span> cannot go any higher.<</if>>
<</if>>\
<<if _virgin_neg_trigger === true>>\
$cur_slave.name's virginity has been taken and because she was not ready to lose it, <span style="color:red">she has gained a new negative Trait</span>.
<</if>>\
<<if $cur_slave.cur_energy === 0 || $cur_slave.injured === true>>\
[[Finish|Slave Room]]
<<else>>\
[[Finish|Assign Slave Task]]
<</if>>\
</div>\
</div>\
<<silently>>\
---UPDATE SLAVE---
<<switch $cur_slave_num>>
<<case 1>>
<<set $slave_room_1 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 2>>
<<set $slave_room_2 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 3>>
<<set $slave_room_3 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 4>>
<<set $slave_room_4 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 5>>
<<set $slave_room_5 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 6>>
<<set $slave_room_6 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 7>>
<<set $slave_room_7 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 8>>
<<set $slave_room_8 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 9>>
<<set $slave_room_9 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 10>>
<<set $slave_room_10 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<</switch>>
---UPDATE ROOM---
<<switch $room_num>>
<<case 1>>
<<set $dungeon_room_1 to $cur_room>>
<<case 2>>
<<set $dungeon_room_2 to $cur_room>>
<<case 3>>
<<set $dungeon_room_3 to $cur_room>>
<<case 4>>
<<set $dungeon_room_4 to $cur_room>>
<<case 5>>
<<set $dungeon_room_5 to $cur_room>>
<<case 6>>
<<set $dungeon_room_6 to $cur_room>>
<<case 7>>
<<set $dungeon_room_7 to $cur_room>>
<<case 8>>
<<set $dungeon_room_8 to $cur_room>>
<<case 9>>
<<set $dungeon_room_9 to $cur_room>>
<<case 10>>
<<set $dungeon_room_10 to $cur_room>>
<<case 11>>
<<set $dungeon_room_11 to $cur_room>>
<<case 12>>
<<set $dungeon_room_12 to $cur_room>>
<</switch>>
<</silently>>\
<<silently>>\
* Variables *
<<set $quest_board_news to false>> remove new quest notification from dungeon news
* Quest Pages *
<<set _quests_per_page to 8>> the number of slaves that can be on each page, starting count from 0
<<if $quest_board_page == null>>
<<set $quest_board_page to 0>>
<</if>>
<<set _start_pos to _quests_per_page * $quest_board_page>> Set where to start the list based on what the page is
<<if _start_pos + _quests_per_page < $quest_board_list.length>>
<<set _end_pos to _start_pos + _quests_per_page>> Set where to end the list based on what the page is
<<else>>
<<set _end_pos to $quest_board_list.length>>
<</if>>
* Set Cur Slave *
<<if $cur_slave == null>>
<<for _z = 0; _z < $slave_room_list.length; _z++>>
<<if $slave_room_list[_z].room_type === "Slave">>
<<set $cur_slave to $slave_room_list[_z]>>
<<set $cur_pos to _z>>
<<break>>
<</if>>
<</for>>
<</if>>
* Set Prev Slave *
<<set _disable_prev to true>>
<<for _z = $cur_pos - 1; _z >= 0; _z-->>
<<if $slave_room_list[_z].room_type === "Slave">>
<<set _prev_pos to _z>>
<<set _disable_prev to false>>
<<break>>
<</if>>
<</for>>
* Set Next Slave *
<<set _disable_next to true>>
<<for _z = $cur_pos + 1; _z < $slave_room_list.length; _z++>>
<<if $slave_room_list[_z].room_type === "Slave">>
<<set _next_pos to _z>>
<<set _disable_next to false>>
<<break>>
<</if>>
<</for>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Quest Board
</div>\
<div class="slaveholder-assignjob">\
<div class="sidebutton-assignjob">\
<<if _disable_prev === true>>\
<div class="tallbutton-off">\
<<button "<">><</button>>\
</div>\
<<else>>\
<div class="tallbutton">\
<span id="left"><<button [[<|Quest Board]]>><<set $cur_slave to $slave_room_list[_prev_pos]>><<set $cur_pos to _prev_pos>><</button>></span>
</div>\
<</if>>\
</div>\
<div class="slaveinfo-assignjob">\
<div class="picbox-slaveinfo-assignjob">\
$cur_slave.pic
</div>\
<div class="textholder-slaveinfo-assignjob">\
<div class="namebox-slaveinfo-assignjob">\
$cur_slave.name
</div>\
<div class="statholder-slaveinfo-assignjob">\
<div class="statbox-slaveinfo-assignjob">\
<<hovertip "<<- setup.slave_stats.love.tooltip>>">><<-setup.slave_stats.love.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.love_tracker / $cur_slave.love_tracker_limit<br>Max: $cur_slave.love_limit">>@@.love;$cur_slave.love@@<</hovertip>>\
</div>\
<div class="statbox-slaveinfo-assignjob">\
<<hovertip "<<- setup.slave_stats.obedience.tooltip>>">><<-setup.slave_stats.obedience.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.obedience_tracker / $cur_slave.obedience_tracker_limit<br>Max: $cur_slave.obedience_limit">>@@.obedience;$cur_slave.obedience@@<</hovertip>>\
</div>\
<div class="statbox-slaveinfo-assignjob">\
<<hovertip "<<- setup.slave_stats.libido.tooltip>>">><<-setup.slave_stats.libido.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.libido_tracker / $cur_slave.libido_tracker_limit<br>Max: $cur_slave.libido_limit">>@@.libido;$cur_slave.libido@@<</hovertip>>\
</div>\
<div class="statbox-slaveinfo-assignjob">\
<<hovertip "<<- setup.slave_stats.strength.tooltip>>">><<-setup.slave_stats.strength.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.strength_tracker / $cur_slave.strength_tracker_limit<br>Max: $cur_slave.strength_limit">>@@.strength;$cur_slave.strength@@<</hovertip>>\
</div>\
<div class="statbox-slaveinfo-assignjob">\
<<hovertip "<<- setup.slave_stats.intelligence.tooltip>>">><<-setup.slave_stats.intelligence.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.intelligence_tracker / $cur_slave.intelligence_tracker_limit<br>Max: $cur_slave.intelligence_limit">>@@.intelligence;$cur_slave.intelligence@@<</hovertip>>\
</div>\
<div class="statbox-slaveinfo-assignjob">\
<<hovertip "<<- setup.slave_stats.stress.tooltip>>">><<-setup.slave_stats.stress.icon>><</hovertip>>
<strong><span style="color:slategray">$cur_slave.cur_stress</span></strong>\
</div>\
</div>\
<div class="traitbox-slaveinfo-assignjob">\
<u>Traits</u>
<<for _t = 0; _t < $cur_slave.traits.length; _t++>>\
<<print '<span style="color:'+$cur_slave.traits[_t].color+'"><<hovertip "$cur_slave.traits[_t].tooltip">>$cur_slave.traits[_t].name<</hovertip>></span>'>><<if _t + 1 < $cur_slave.traits.length>>, <</if>>\
<</for>>\
</div>\
</div>\
</div>\
<div class="sidebutton-assignjob">\
<<if _disable_next === true>>\
<div class="tallbutton-off">\
<<button ">">><</button>>\
</div>\
<<else>>\
<div class="tallbutton">\
<span id="right"><<button [[>|Quest Board]]>><<set $cur_slave to $slave_room_list[_next_pos]>><<set $cur_pos to _next_pos>><</button>></span>
</div>\
<</if>>\
</div>\
</div>\
<div class="jobinfo-assignjob">\
<<for _i = _start_pos; _i < _end_pos; _i++>>\
<<silently>>\
* Set Hotkey *
<<set _hotKey to (_i % 8) + 1>>
<<set _shiftKey to "shift"+_hotKey>>
* Update Values *
<</silently>>\
<div class="cardholder-jobinfo-assignquest">\
<div class="card-jobinfo-assignquest">\
<div class="title-jobinfo-assignquest">\
<<capture _shiftKey, _i>>\
<<if $quest_board_list[_i].type === "Special">>\
@@.gold;$quest_board_list[_i].name@@\
<<else>>\
$quest_board_list[_i].name\
<</if>> <span @id="_shiftKey"><<button "[img[images/icons/desc_icon.png]]" "Quest Description">><<set $cur_quest to $quest_board_list[_i]>><</button>></span>
<</capture>>\
</div>\
<div class="text-jobinfo-assignquest">\
Difficulty: $quest_board_list[_i].difficulty
</div>\
<div class="text-jobinfo-assignquest">\
Duration: $quest_board_list[_i].duration <<if $quest_board_list[_i].duration === 1>>day<<else>>days<</if>>
</div>\
<div class="icon-jobinfo-assignquest">\
<<if $quest_board_list[_i].libido_req > 0>>\
<<hovertip "Recommended: @@.libido;$quest_board_list[_i].min_libido@@ - @@.libido;$quest_board_list[_i].max_libido@@">><<- setup.slave_stats.libido.icon>><</hovertip>>\
<</if>>\
<<if $quest_board_list[_i].str_req > 0>>\
<<hovertip "Recommended: @@.str;$quest_board_list[_i].min_str@@ - @@.str;$quest_board_list[_i].max_str@@">><<- setup.slave_stats.strength.icon>><</hovertip>>\
<</if>>\
<<if $quest_board_list[_i].intel_req > 0>>\
<<hovertip "Recommended: @@.intel;$quest_board_list[_i].min_intel@@ - @@.intel;$quest_board_list[_i].max_intel@@">><<- setup.slave_stats.intelligence.icon>><</hovertip>>\
<</if>>\
</div>\
<div class="reward-jobinfo-assignquest">\
<strong><u>Rewards</u></strong>
@@.gold;$quest_board_list[_i].gold Gold@@, @@.rep;$quest_board_list[_i].reputation Reputation@@
<<hovertip '$quest_board_list[_i].treasure.hovertip'>><span @class='$quest_board_list[_i].treasure.rarity'>$quest_board_list[_i].treasure.name</span><</hovertip>>
</div>\
<div class="button-jobinfo-assignquest">\
<<if $cur_slave.injured === true>>\
<div class="offbutton">\
<<hovertip "Can't take Quests while Injured">><<button "Accept">><</button>><</hovertip>>
</div>\
<<elseif $cur_slave.disobedient === true>>\
<div class="offbutton">\
<<hovertip "Can't take Quests while Disobedient">><<button "Accept">><</button>><</hovertip>>
</div>\
<<elseif $cur_slave.dayoff_bool === true>>\
<div class="offbutton">\
<<hovertip "Can't take Quests after given the day off">><<button "Accept">><</button>><</hovertip>>
</div>\
<<elseif $cur_slave.class_cd > 0>>\
<div class="offbutton">\
<<hovertip "She is in a Class">><<button "Accept">><</button>><</hovertip>>
</div>\
<<elseif $cur_slave.quest_cd > 0>>\
<div class="offbutton">\
<<hovertip "She is already on a Quest">><<button "Accept">><</button>><</hovertip>>
</div>\
<<else>>\
<<capture _i, _hotKey>>\
<span @id="_hotKey"><<button "Accept ^^_hotKey^^" "Adventurer's Guild">>\
<<silently>>\
ASSIGN QUEST TO SLAVE
<<set _newQuest to $quest_board_list[_i]>>
UPDATE QUEST INFO
<<set _newQuest.slave_index to clone($cur_slave.index)>>
REMOVE QUEST FROM BOARD
<<set _remove to $quest_board_list.deleteAt(_i)>>
SET SLAVE QUEST CD
<<set $cur_slave.quest_cd to _newQuest.duration>>
ADD QUEST TO SLAVE
<<set $cur_slave.quest to _newQuest>>
REMOVE SLAVE FROM ONSEN
<<set _remove to $onsen.users.delete($cur_slave.index)>>
UPDATE CUR SLAVE
<<set $slave_room_list[$cur_pos] to clone($cur_slave)>>
UNSET VARIABLES
<<unset $cur_pos, $cur_slave, $quest_board_page>>
<</silently>>
<</button>></span>\
<</capture>>\
<</if>>\
</div>\
</div>\
</div>\
<</for>>\
</div>\
<div class="buttons-assignjob">\
<div class="box-buttons-assignjob">\
<<if $quest_board_page > 0>>\
<span id="shiftleft"><<button [[Previous Page|Quest Board]]>><<set $quest_board_page-->><</button>></span>
<<else>>\
<div class="offbutton">\
<<button "Previous Page">><</button>>
</div>\
<</if>>\
</div>\
<div class="box-buttons-assignjob">\
</div>\
<div class="box-buttons-assignjob">\
<<if $quest_board_list.length > _end_pos>>\
<span id="shiftright"><<button [[Next Page|Quest Board]]>><<set $quest_board_page++>><</button>></span>
<<else>>\
<div class="offbutton">\
<<button "Next Page">><</button>>
</div>\
<</if>>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Adventurer's Guild]]>><<unset $cur_pos, $cur_slave, $quest_board_page>><</button>></span> <span id="q"><<button "<u>Q</u>uick Menu" "Quick Menu">><<unset $cur_pos, $cur_slave, $quest_board_page>><</button>></span>\
</div>\
</div>\<div class="titlebox">\
<span style="color:red">IMPORTANT: SLAVE PACKS</span>
</div>\
<div class="disclaimer-textbox">\
Slave Packs are saved to individual save files, if you have a previous save file with Slave Packs that you added to your game and want to start a new game, <strong><u>load that save file and start a new game from your quarters.</u></strong> This will start a new game while keeping your Slave Pack information.
If you wish to learn more about how to make a Slave Pack, where to find Slave Packs to download, or have feedback about the Slave Pack system, please visit the Slave Pack Mod forum at [[F95Zone|https://f95zone.to/threads/dungeon-lord-a-new-beginning-slave-packs.75547/#post-5214355]] or join the Discord Server. A lot of you guys asked for some way to create image packs to use in the game so please let me know what you think!
<strong>Would you like to add Slave Packs?</strong>
<span id="1"><<button "Yes ^^1^^" "Slave Pack Edit">><<set $pregameAdd to true>><</button>></span> <span id="2"><<button "No ^^2^^" "New Game">><</button>></span>
</div>\ <u>Twine and Sugarcube tools</u>
https://qjzhvmqlzvoo5lqnrvuhmg-on.drv.tw/UInv/Sample_Code.html#Main%20Menu - Created by HiEv
<u>Icon Source</u>
https://flaticons.net/
<u>Image and Gif Sources</u>
https://gelbooru.com/
https://danbooru.donmai.us/
https://rule34.xxx/
https://rule34.xyz/
Hentai Discord Server: https://discord.gg/XyUNeSy5qj
<u>Community Shoutouts</u>
Daz1135
Mean Dungeon Advisor
RandomWanderer
Ryker, He Who Counts
Spoiled
ThatOshiriGuy
Under_Formatman
and all the Dungeon Members in the Discord
<div class="exit-link-right">\
<span id="back"><<button "Back" `previous()`>><</button>></span>
</div>\<<silently>>\
* Variables *
<<set $fresh_start_bool to false>> set to true if player skips tutorial
* New Game Setup *
VERSION NUMBER
<<set $game_version to clone(setup.game_version)>>
DUNGEON ROOMS
<<set _dungeon_room0 to {
name: "Empty Room",
room_type: "Empty",
built: true,
index: "",
cost: 0,
rank: 1,
pic: "[img[images/rooms/empty_room.jpg]]",
}>>
<<set _dungeon_room1 to {
name: "Empty Room",
room_type: "Empty",
built: true,
index: "",
cost: 0,
rank: 1,
pic: "[img[images/rooms/empty_room.jpg]]",
}>>
<<set _dungeon_room2 to {
name: "Empty Room",
room_type: "Empty",
built: false,
index: "",
cost: 500,
rank: 2,
pic: "[img[images/rooms/unbuilt_room.jpg]]",
}>>
<<set _dungeon_room3 to {
name: "Empty Room",
room_type: "Empty",
built: false,
index: "",
cost: 1000,
rank: 3,
pic: "[img[images/rooms/unbuilt_room.jpg]]",
}>>
<<set _dungeon_room4 to {
name: "Empty Room",
room_type: "Empty",
built: false,
index: "",
cost: 1500,
rank: 4,
pic: "[img[images/rooms/unbuilt_room.jpg]]",
}>>
<<set _dungeon_room5 to {
name: "Empty Room",
room_type: "Empty",
built: false,
index: "",
cost: 2000,
rank: 5,
pic: "[img[images/rooms/unbuilt_room.jpg]]",
}>>
<<set $dungeon_floor_list to [_dungeon_room0, _dungeon_room1, _dungeon_room2, _dungeon_room3, _dungeon_room4, _dungeon_room5]>>
SLAVE ROOMS
<<set _slave_room0 to {
name: "Empty Room",
room_type: "Empty",
built: true,
index: "",
cost: 0,
rank: 1,
pic: "[img[images/rooms/empty_cell.jpg]]",
}>>
<<set _slave_room1 to {
name: "Empty Room",
room_type: "Empty",
built: false,
index: "",
cost: 200,
rank: 1,
pic: "[img[images/rooms/unbuilt_cell.jpg]]",
}>>
<<set _slave_room2 to {
name: "Empty Room",
room_type: "Empty",
built: false,
index: "",
cost: 400,
rank: 2,
pic: "[img[images/rooms/unbuilt_cell.jpg]]",
}>>
<<set _slave_room3 to {
name: "Empty Room",
room_type: "Empty",
built: false,
index: "",
cost: 400,
rank: 2,
pic: "[img[images/rooms/unbuilt_cell.jpg]]",
}>>
<<set _slave_room4 to {
name: "Empty Room",
room_type: "Empty",
built: false,
index: "",
cost: 600,
rank: 3,
pic: "[img[images/rooms/unbuilt_cell.jpg]]",
}>>
<<set _slave_room5 to {
name: "Empty Room",
room_type: "Empty",
built: false,
index: "",
cost: 600,
rank: 3,
pic: "[img[images/rooms/unbuilt_cell.jpg]]",
}>>
<<set _slave_room6 to {
name: "Empty Room",
room_type: "Empty",
built: false,
index: "",
cost: 800,
rank: 4,
pic: "[img[images/rooms/unbuilt_cell.jpg]]",
}>>
<<set _slave_room7 to {
name: "Empty Room",
room_type: "Empty",
built: false,
index: "",
cost: 800,
rank: 4,
pic: "[img[images/rooms/unbuilt_cell.jpg]]",
}>>
<<set _slave_room8 to {
name: "Empty Room",
room_type: "Empty",
built: false,
index: "",
cost: 1000,
rank: 5,
pic: "[img[images/rooms/unbuilt_cell.jpg]]",
}>>
<<set _slave_room9 to {
name: "Empty Room",
room_type: "Empty",
built: false,
index: "",
cost: 1000,
rank: 5,
pic: "[img[images/rooms/unbuilt_cell.jpg]]",
}>>
<<set $slave_room_list to [_slave_room0, _slave_room1, _slave_room2, _slave_room3, _slave_room4, _slave_room5, _slave_room6, _slave_room7, _slave_room8, _slave_room9]>>
AMENITY ROOMS
<<set $onsen to {
name: "Onsen",
room_type: "Amenity",
built: false,
construction: false,
construction_time: 2,
construction_bool: false,
cost: 400,
float: 0.2,
update_bool: false,
goddess_bool: false,
users: [],
description: "Increases the amount of @@.love;Love@@ gained and @@.stress;Stress@@ reduced for your Slaves at the end of each day by 20%. You can find your Slaves and the Goddess using it occasionally and join them.",
rank: 1,
pic: "[img[images/rooms/onsen.jpg]]",
}>>
PLAYER INFO
<<set $pc_name to "">> player's name
<<set $dungeon_name to "">> dungeon's name
PLAYER STARTING STATS
<<set $pc_level to 1>> player's level
<<set $pc_nextlevel_exp to Math.round((($pc_level * $pc_level) + setup.pc_nextlevel_constant) * setup.pc_nextlevel_mod)>>
<<set $pc_exp to 0>> player's current exp
<<set $pc_levelcap to setup.pc_levelcap>> player's level cannot go higher than this amount
<<set $pc_gold to clone(setup.pcStartGold)>> Starting Gold
<<set $pc_lust to clone(setup.pcStartLust)>> Starting Lust Essence
PLAYER MANA
<<set $pc_max_mana to clone(setup.pcBaseMana)>> player's max mana amount
<<set $pc_cur_mana to $pc_max_mana>> player's current mana
PLAYER ENERGY
<<set $pc_max_energy to clone(setup.pcBaseEnergy)>> max number of times player train or discipline slaves
<<set $pc_cur_energy to $pc_max_energy>> current number of times left player can train or discipline slaves
END OF DAY LOVE AND STRESS STATS
<<set $daily_love_exp to 3>> base amount of love EXP gained at the end of each night, can be increased
<<set $daily_love_growth to 0.25>> mult by love exp then added to base love to determine how much love EXP is gained each night
<<set $daily_stress_lost to 10>> percent amount of stress lost at the end of each day before other modifiers, can be increased
PLAYER CREATURES AND TRAPS
<<set $pc_creature_list to []>> List of Creatures the player can add to rooms
<<set $pc_trap_list to []>> List of Traps the player can add to rooms
<<set $pc_owned_list to []>> List of Creature and Trap names that player owns either in dungeon or in creature keeper. Can only have one of each type of creature or trap
<<set $pc_saved_list to []>> List of Creatures that have been removed from dungeon, resummoning them keeps exp and stats
<<set $creature_levelcap to setup.creature_levelcap>> creature's levels cannot go past this limit
PLAYER SLAVES
<<set $pc_slave_list to []>> holds living cell for each slave owned by the player
PLAYER TREASURES
<<set $treasureroom_inventory to []>> list of player's treasure
<<set $treasureroom_size to 5>> max number of treasures the player can hold, can be increased
<<set $treasureroom_count to 0>> number of times expanded
PLAYER SPELLS
<<set $pc_spellbook to [setup.jolt_spell, setup.terror_spell, setup.heal_spell, setup.summon_imp_spell]>> Player's list of spells
<<set $pc_spellbook.sort(function (a, b) { return a.order_num - b.order_num; });>>
PLAYER BLESSINGS
<<set $pc_blessing_list to []>> List of player's blessing names
PLAYER LIFETIME STATS
<<set $pc_raid_gold_earned to 0>> Gold earned from raiders during raid
<<set $pc_raid_gold_stolen to 0>> Gold stolen by raiders during raid
<<set $pc_raid_treasure_earned to 0>> Treasures earned from raiders during raid
<<set $pc_raid_treasure_stolen to 0>> Treasures stolen by raiders during raid
<<set $pc_town_gold_spent to 0>> Gold spent from town shops
<<set $pc_rooms_gold_spent to 0>> Gold spent on purchasing rooms
<<set $pc_upkeep_gold_spent to 0>> Gold spent from upkeep costs of rooms and slaves
<<set $pc_lust_gained to 0>> Lust player gained from any source
<<set $pc_lust_spent to 0>> Lust player spent on anything
<<set $pc_treasure_bought to 0>> Number of treasures bought at store
<<set $pc_treasure_sold to 0>> Number of treasures sold at store
<<set $pc_gold_earned_other to 0>> Gold earned from other sources than Raids or Slaves
<<set $pc_cast_spells to 0>> amount of total spells the player has cast during the play session
<<set $pc_private_training to 0>> amount of times trained a slave
<<set $slaves_gold_earned to 0>> Gold earned from slaves during jobs and quests
<<set $slaves_treasure_earned to 0>> Treasures earned from slaves during jobs and quests
<<set $slaves_reputation_earned to 0>> Reputation earned from slaves during jobs and quests
<<set $slaves_exp_given to 0>> EXP given to player from slaves during jobs and quests
<<set $pc_slaves_enslaved to 0>> number of raiders enslaved
<<set $pc_slaves_bought to 0>> number of slaves bought
<<set $pc_slaves_sold to 0>> number of slaves sold
<<set $pc_highest_slave_bought to 0>> the most gold spent on a slave in the market
<<set $pc_highest_slave_sold to 0>> the most gold earned from selling a slave during the play session
Tracks information on players sex stats
<<set $pc_sex_stats = {
handjob: 0,
blowjob: 0,
titjob: 0,
footjob: 0,
missionary: 0,
cowgirl: 0,
doggy: 0,
anal: 0,
total: 0
}>>
Tracks information about all slaves sex stats
<<set $slaves_sex_stats = {
handjob: 0,
blowjob: 0,
titjob: 0,
footjob: 0,
missionary: 0,
cowgirl: 0,
doggy: 0,
anal: 0,
group: 0
}>>
Track information about all slaves tasks completed
<<set $slaves_task_stats = {
service: 0,
prostitution: 0,
caretaker: 0,
maintenance: 0,
quest: 0,
quest_fail: 0,
class: 0,
class_fail: 0,
train: 0
}>>
Tracks information about raider that entered dungeon
<<set $raider_entered_stats = {
hunter: 0,
sorcerer: 0,
knight: 0,
warrior: 0,
priestess: 0,
thief: 0,
alchemist: 0,
witch: 0,
dancer: 0,
brawler: 0,
total: 0
}>>
Tracks information about captured raiders stats
<<set $raider_captured_stats = {
hunter: 0,
sorcerer: 0,
knight: 0,
warrior: 0,
priestess: 0,
thief: 0,
alchemist: 0,
witch: 0,
dancer: 0,
brawler: 0,
total: 0
}>>
Tracks information about abandoned raiders stats
<<set $raider_abandoned_stats = {
hunter: 0,
sorcerer: 0,
knight: 0,
warrior: 0,
priestess: 0,
thief: 0,
alchemist: 0,
witch: 0,
dancer: 0,
brawler: 0,
total: 0
}>>
Tracks information about cleared raiders stats
<<set $raider_cleared_stats = {
hunter: 0,
sorcerer: 0,
knight: 0,
warrior: 0,
priestess: 0,
thief: 0,
alchemist: 0,
witch: 0,
dancer: 0,
brawler: 0,
total: 0
}>>
DUNGEON STATS
<<set $dungeon_reputation to 0>> Dungeon Reputation
<<set $dungeon_threat to 0>> Dungeon Threat
<<set $dungeon_rank to 1>> Dungeon Rank
REPUTATION INFO
<<set $reputation_rankup_amount to setup.reputation_rank2>> holds the amount needed for the next rank, rep cannot go above this value until rank up increases the limit.
<<set $reputation_nextrank_trigger to false>> Set to true after player reaches the required amount of reputation, allowing them to rank up their dungeon
THREAT INFO
<<set $threat_locked to false>> if false, the threat level can be lowered, if true the threat level cannot be lowered.
<<set $threat_locked_cd to 0>> use this to track days left until threat is unlocked
<<set $threat_locked_timer to 3>> once locked, the threat level will unlock after this many days
ARCANE EMPORIUM SPELLS
<<set $infliction_spell_sale_list to [setup.shatter_spell, setup.hypnosis_spell, setup.spank_spell]>> Infliction spells at the emporium
<<set $supportive_spell_sale_list to [setup.giantgrowth_spell, setup.shrouded_spell, setup.black_shield_spell]>> Supportive spells at the emporium
<<set $manipulation_spell_sale_list to [setup.confusion_spell, setup.warp_spell, setup.suggestive_whispers_spell]>> Manipulation spells at the emporium
<<set $summoning_spell_sale_list to [setup.summon_octopus_spell, setup.summon_honeybee_spell, setup.summon_snake_spell]>> Summoning spells at the emporium
SLAVE MARKET
<<set $refresh_slave_market_bool to true>>
<<set $update_stat_values_bool to true>>
<<set $refresh_slave_market_cd to clone(setup.refresh_slave_market_timer)>> subtract 1 each day, once it reaches 0, set back to the timer and refresh slave market
<<set $slave_market_count_min to 4>> the lowest amount of slaves possible when the slave market is refreshed, increases with rank
<<set $slave_market_count_max to 6>> the highest amount of slaves possible when the slave market is refreshed, increases with rank
Chance of seeing rating of slave in the slave market, can increase
<<set $slave_market_percent to {
master: 0,
veteran: 0,
expert: 0,
adept: 5,
novice: 20
}>>
<<set $slave_market_list to []>>
<<set _starting_slave_count to 6>>
<<for _s = 0; _s < _starting_slave_count; _s++>>
<<set $slave_market_list.push(setup.slave)>>
<</for>>
<<set _obedience_market_stats = {
name: "Obedience",
min: setup.min_slaveStat_bound,
max: setup.max_slaveStat_bound,
value: 0
}>>
<<set _libido_market_stats = {
name: "Libido",
min: setup.min_slaveStat_bound,
max: setup.max_slaveStat_bound,
value: 0
}>>
<<set _strength_market_stats = {
name: "Strength",
min: setup.min_slaveStat_bound,
max: setup.max_slaveStat_bound,
value: 0
}>>
<<set _intelligence_market_stats = {
name: "Intelligence",
min: setup.min_slaveStat_bound,
max: setup.max_slaveStat_bound,
value: 0
}>>
<<set $market_statInfo_list to [_obedience_market_stats, _libido_market_stats, _strength_market_stats, _intelligence_market_stats]>>
<<set _handjob_market_stats = {
name: "Handjob",
min: setup.min_slaveSkill_bound,
max: setup.max_slaveSkill_bound,
value: 0
}>>
<<set _blowjob_market_stats = {
name: "Blowjob",
min: setup.min_slaveSkill_bound,
max: setup.max_slaveSkill_bound,
value: 0
}>>
<<set _titjob_market_stats = {
name: "Titjob",
min: setup.min_slaveSkill_bound,
max: setup.max_slaveSkill_bound,
value: 0
}>>
<<set _footjob_market_stats = {
name: "Footjob",
min: setup.min_slaveSkill_bound,
max: setup.max_slaveSkill_bound,
value: 0
}>>
<<set _missionary_market_stats = {
name: "Missionary",
min: setup.min_slaveSkill_bound,
max: setup.max_slaveSkill_bound,
value: 0
}>>
<<set _cowgirl_market_stats = {
name: "Cowgirl",
min: setup.min_slaveSkill_bound,
max: setup.max_slaveSkill_bound,
value: 0
}>>
<<set _doggy_market_stats = {
name: "Doggy",
min: setup.min_slaveSkill_bound,
max: setup.max_slaveSkill_bound,
value: 0
}>>
<<set _anal_market_stats = {
name: "Anal",
min: setup.min_slaveSkill_bound,
max: setup.max_slaveSkill_bound,
value: 0
}>>
<<set $market_skillInfo_list to [_handjob_market_stats, _blowjob_market_stats, _titjob_market_stats, _footjob_market_stats, _missionary_market_stats, _cowgirl_market_stats, _doggy_market_stats, _anal_market_stats]>>
SLAVE CLASSES
<<set $slave_class_list to []>> list of Classes that are available in the Slave Market
<<set $update_slave_class_bool to true>> set to true to update slave market with new classes
<<set $min_classes_posted to 3>>
<<set $max_classes_posted to 4>> min and max number of classes that can be available in the slave market, can be increased
<<set $slave_class_cd to clone(setup.slave_class_timer)>> tracks days left until slave classes are updated
<<set $new_class_dialogue to true>> inform the player about new slave classes in the slave market if true
ADVENTURER'S GUILD
<<set $hire_raider_class to "">> holds class type of the players choice that they will get to pick from
<<set $hired_raiders to []>> list of hired raiders entering the dungeon
<<set $max_hire_count to 2>> the max number of uses you can hire in one day, increases with rank
<<set $cur_hire_count to 2>> the current amount of uses left in one day, refreshes each day to the max
<<set $guild_hire_count to 1>> add to the number of raiders that can be hired after each rank up
QUEST BOARD
<<set $quest_board_list to []>> List of Quests that are posted on the board
<<set $min_quests_posted to 5>>
<<set $max_quests_posted to 7>> Min and Max number of quests that can be posted on the board, can be increased
<<set $update_quest_board_bool to true>> Set to true to update the board with new jobs
<<set $quest_board_cd to clone(setup.guild_quest_timer)>> tracks the days until quest board is updated with new quests
TREASURE SHOP
<<set $restock_treasure_shop_bool to true>> set to true if new treasures are in shop
<<set $entered_treasureshop_bool to false>> set to true after entering treasure shop, triggers different dialogue
<<set $treasure_sell_float to 0.25>> amount treasures gold is reduced when selling
<<set $treasureshop_inventory to []>>
<<set $treasureshop_inv_min to 4>> min number of treasures she gets in each day, can be increased
<<set $treasureshop_inv_max to 6>> max number of treasures she gets in each day, can be increased
<<set $raidtreasure_list to []>> list of treasures sold after raid, added to next treasure shop inv
CREATURE KEEPER
<<set $entered_creaturekeeper_bool to false>> set to true after entering treasure shop, triggers dialogue
<<set $keeper_room_cost to 50>> costs this amount to store a creature, can be reduced
<<set $keeper_exp to 8>> amount of EXP gained by creatures at the end of each day when in the creature keeper, can be increased
<<set $keeper_mod to 0.05>> increases EXP gained for each level the creature has
<<set $keeper_list to [setup.empty_keep, setup.empty_keep, setup.empty_keep, setup.empty_keep]>> list of rooms that creatures can be stored in
JOBS
<<set $player_job_list to [setup.service_job_1, setup.prostitution_job_1, setup.caretaker_job_1, setup.maintenance_job_1]>>
<<set $filter_tasks to false>> Shows list of tasks without filtering different types of tasks
GODDESS'S QUARTERS
<<set $free_blessing_count to 0>> If above 0, non-legendary blessings cost 0 LE
<<set $free_room_count to 0>> If above 0, creature or trap room cost 0 LE
<<set $creature_start_level to 1>> new creatures start at this level, can be raised
<<set $blessing_bought_list to []>> list of blessings bought by the player, prevents previously bought blessings from showing up
EVENT INFO
<<set $days_without_event to 0>> tracks how many days it has been without an event
<<set $current_event to setup.empty_event>> Current event, set to empty for new game
<<set $previous_event to setup.empty_event>> Previous event, set to empty for new game. Forces new event to be something different from this and current event
<<set $high_demand_event to false>> if true, an even has recently happened, increasing the value of slaves
<<set $thank_you_event to false>> if true, the thank you even has already happened and cannot happen again
RAID INFO
<<set $raiders to []>> List of CURRENT Raiders going through dungeon
<<set $slave_girl_list to []>> List of Captured Raiders as Slaves
<<set $is_raiding to false>> Set to true during raids and false after raids
MISSION LOG
<<set $missionLog = {
goddess : {
num: 0,
unlocked: false,
started: false,
completed: false,
int: 0
},
anna : {
num: "",
unlocked: false,
started: false,
completed: false,
int: 0
},
sara : {
num: "",
unlocked: false,
started: false,
completed: false,
int: 0
},
patricia : {
num: "",
unlocked: false,
started: false,
completed: false,
int: 0
},
mallory : {
num: "",
unlocked: false,
started: false,
completed: false,
int: 0
},
twins: {
num: "",
unlocked: false,
started: false,
completed: false,
int: 0
},
sylvia : {
num: "",
unlocked: false,
started: false,
completed: false,
int: 0
}
}>>
DUNGEON NEWS BOOL
<<set $newMission_bool to false>> shows in the news that a new quest is available
INGAME TUTORIALS
<<set $visited_dungeon_rooms to false>>
<<set $visited_slave_rooms to false>>
<<set $visited_visited_jobs to false>>
<<set $visited_slave_market to false>>
<<set $visited_treasure_shop to false>>
<<set $visited_arcane_emporium to false>>
<<set $visited_adventurers_guild to false>>
<<set $visited_players_room to false>>
<<set $visited_ahris_quarters to false>>
<<set $visited_creature_keeper to false>>
<<set $visited_forge to false>>
OTHER INFO
<<set $days to 1>> Tracks number of days
<<set $game_over_count to 0>> Tracks the number of days ending with 0 gold or treasure
<<set $last_sex_type to "Handjob">> Tracks the last used sex type, uses last used type for slave first
<<set $essenceRingTracker to 0>>
<<set $shinyRingTracker to 0>> tracks how many raiders were captured for these treasures
* Display *
<</silently>>\
<div class="titlebox">\
A New Beginning
</div>\
<div class="inputbox-newgame">\
Enter Your Name
<<textbox "$pc_name" "Loki" autofocus>>
</div>\
<div class="inputbox-newgame">\
Enter Your Dungeon's Name
<<textbox "$dungeon_name" "Helliyard">>
</div>\
<div class="infotext-newgame">\
All content is available no matter the difficulty.
You can change your name, dungeon's name, and difficulty in your Quarters.
</div>\
<div class="checkbox-newgame">\
<label><div align="center"><<radiobutton "$difficulty" "casual">> <strong>Casual</strong></div>\
For those who wish to enjoy the game without a challenge.
<ul>\
<li>Raiders' stats are lower</li>\
<li>Raider difficulty increases slower</li>\
<li>Gold and Reputation earned is increased</li>\
<li>Gain more EXP</li>\
<li>Never get a Game Over</li>\
</ul></label>\
</div>\
<div class="checkbox-newgame">\
<label><div align="center"><<radiobutton "$difficulty" "normal" checked>> <strong>Normal</strong></div>\
The way the game was meant to be played, offering a mix of enjoyment and challenge.
<ul>\
<li>Raiders' stats are unchanged</li>\
<li>Raider difficulty increases normally</li>\
<li>Gold and Reputation earned is unchanged</li>\
<li>Gain normal EXP</li>\
<li>Game Over will occurs after having no Gold for three days in a row</li>\
</ul></label>\
</div>\
<div class="checkbox-newgame">\
<label><div align="center"><<radiobutton "$difficulty" "brutal">> <strong>Brutal</strong></div>\
For those who seek a challenge, having to optimize and strategize heavily to survive.
<ul>\
<li>Raiders' stats are higher</li>\
<li>Raider difficulty increases faster</li>\
<li>Gold and Reputation earned is decreased</li>\
<li>Gain less EXP</li>\
<li>Game Over occurs if you end a day with no Gold</li>\
</ul></label>\
</div>\
<div class="infotext-newgame">\
<label><<checkbox "$tutorial_guides" false true checked>> Enable Ingame Tutorials</label>
<span id="forward"><<button [[Start|Starting Game]]>><<set $starting_page to 0>>\
<<silently>>\
<<if $pc_name === "">>
<<set $pc_name to "Loki">>
<</if>>
<<if $dungeon_name === "">>
<<set $dungeon_name to "Helliyard">>
<</if>>
<<UpdateDifficulty $difficulty>>
<</silently>>\
<</button>></span>\
</div>\<<silently>>\
*Variables*
*Display*
<</silently>>\
<div class="titlebox">\
New Beginnings
</div>\
<div class="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/mistress/face.jpg]]
</div>\
<div class="dialogue-text">\
Hello, my name is Ahri and I will be your guide. Before we begin, please choose how I can best help you get started.
</div>\
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="1"><<button "Intro and Tutorial ^^1^^" "New Beginnings">><<set $new_beginning to 0>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="2"><<button "Tutorial ^^2^^" "Tutorial">><<set $tutorial_page to 1>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="3"><<button "Start Game ^^3^^" "Fresh Start">><<set $fresh_start_page to 1>><</button>></span>
</div>\
</div>\
</div>\
</div>\<<switch $new_beginning>>\
<<case 0>>\
<<set $seen_intro to true>>\
<div class="titlebox">\
New Beginnings
</div>\
<div class="picbox-intro-center">\
[img[images/misc/intro1.jpg]]\
</div>\
<div class="textbox-intro-center">\
<span class="pc-dialogue">This shit sucks.</span>
This has been your thought over the last year. You thought after clearing some of the hardest dungeons on the guild's quest board, you'd become famous, wealthy, popular, get a girlfriend, something, anything. But no, instead with the rise of adventurers within the guild, there are no more dungeons to clear. All the bad guys have been cleared out of the land and all the guild members are left with nothing to do. Sure, there are some delivery or gather quests.
<span class="pc-dialogue">But I ain't doing that.</span>
With my skills in magic, those minor requests aren't worth my time. Still, with no more dungeons to loot and get their bounties, my gold is running low. Eventually, I will have to do something. But for now, on another uneventful day, it's time for my daily nap.
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[Next|New Beginnings]]>><<set $new_beginning++>><</button>></span>
</div>\
<<case 1>>\
<div class="titlebox">\
New Beginnings
</div>\
<div class="picbox-intro">\
[img[images/mistress/body_0.jpg]]
</div>\
<div class="textbox-intro">\
As you slowly wake up from your nap, you begin with the usual ritual of waking up by saying.
<span class="pc-dialogue">This shit su...</span>
You cut yourself off as you become aware of the fox girl in front of you. Her beauty has stunned you from completing your thoughts. After regaining some resemblance of focus, you look around to see you aren't in the same place as you fell asleep. Surrounding you are stone walls, the atmosphere here is one of a dungeon. Probably an abandoned one is given the moss and crumbling walls. Furthermore, you feel a strangeness in the world around you, as if you aren't even in the same universe as before. Your thoughts snapped back as you heard the girl hover above you speak.
<span class="npc-dialogue">Hello $pc_name, welcome to your new home.</span>
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|New Beginnings]]>><<set $new_beginning-->><</button>></span> <span id="forward"><<button [[Next|New Beginnings]]>><<set $new_beginning++>><</button>></span>
</div>\
<<case 2>>\
<div class="titlebox">\
New Beginnings
</div>\
<div class="picbox-intro">\
[img[images/mistress/body_6.jpg]]
</div>\
<div class="textbox-intro">\
You are at a loss for words, how does she know my name? How did I get here? And where is "here"?
<span class="npc-dialogue">Don't worry you silly boy, all your questions will be answered soon enough.</span>
She gave you a gentle smile, but you could tell her smile and beauty were hiding her true intent from you, this was no ordinary fox girl.
<span class="npc-dialogue">I have summoned here to become my newest servant and dungeon lord. The last one couldn't keep up with demands and well, I had to let him go. I have viewed your credentials and decided you are perfect to become my new dungeon lord! Aren't you very excited? You should be, I chose you over everyone else!</span>
You nod out of courtesy but you have no idea what this bitch is talking about. Dungeon lord? New Servant? You don't recall signing up for anything like this in the guild. It's time to get some answers.
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|New Beginnings]]>><<set $new_beginning-->><</button>></span> <span id="forward"><<button [[Next|New Beginnings]]>><<set $new_beginning++>><</button>></span>
</div>\
<<case 3>>\
<div class="titlebox">\
New Beginnings
</div>\
<div class="picbox-intro">\
[img[images/mistress/body_0.jpg]]
</div>\
<div class="textbox-intro">\
<span class="pc-dialogue">Who are you and where am I?</span>
<span class="npc-dialogue">My name is Ahri and I am one of the Goddesses of this world, the Goddess of Lust. I summoned you here to my world because, well I need you. Few men are capable of becoming a dungeon lord and my power is dwindling. I feed off of lustful acts but I require someone with strong desires to appease my appetite.</span>
<span class="pc-dialogue">Why did you summon me? How the hell can I help a Goddess!?</span>
<span class="npc-dialogue">Only strong men with powerful desires can become a dungeon lord and you, you possess strong desires and lust, stronger than anyone in this world. I used what little power I have left to summon you here to become a dungeon lord. With your power, you can create a new dungeon to attract adventurers, and using lewd and erotic methods, capture them and harvest their lust so you can restore me to my full power.</span>
<span class="pc-dialogue">Why should I help you?</span>
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|New Beginnings]]>><<set $new_beginning-->><</button>></span> <span id="forward"><<button [[Next|New Beginnings]]>><<set $new_beginning++>><</button>></span>
</div>\
<<case 4>>\
<div class="titlebox">\
New Beginnings
</div>\
<div class="picbox-intro">\
[img[images/mistress/body_5.jpg]]
</div>\
<div class="textbox-intro">\
Her manner sharped after that question, she didn't like that question and her answer was even more terrifying.
<span class="npc-dialogue">Well I could just consume you right here and now, harvesting all your lustful desires. I'd say you have enough power to last me 1,000 years if I squeezed every last drop of energy from you.</span>
You tense up after her threat against your life was made so viciously.
<span class="npc-dialogue">But what is 1,000 years to a Goddess? Besides I think you can be much more valuable to me alive, providing endless lustful power to me. Being my servant and dungeon lord has its perks too. You can make all the decisions in my dungeon and you will live a life filled with gold, power, women, and lots of sex. So enough chit-chat, lets form a contract. Become my servant to restore my power and in return I will make you my dungeon lord and guide you in becoming the richest, most powerful, and desired man in this world.</span>
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|New Beginnings]]>><<set $new_beginning-->><</button>></span> <span id="forward"><<button [[Next|New Beginnings]]>><<set $new_beginning++>><</button>></span>
</div>\
<<case 5>>\
<div class="titlebox">\
New Beginnings
</div>\
<div class="picbox-intro">\
[img[images/mistress/body_3.jpg]]
</div>\
<div class="textbox-intro">\
These are indeed all things you wished back in your world, you don't fancy the idea of becoming a servant but if you had to become someone's servant, a sexy ass fox Goddess of lust doesn't sound too bad.
<span class="pc-dialogue">Alright I'm in. How do we form a contract?</span>
<span class="npc-dialogue">You already did by agreeing with me silly! What did you think? We were going to have sex?</span>
<span class="pc-dialogue">Well, kind of yeah. Isn't that your whole thing?</span>
<span class="npc-dialogue">What do you think happened to my last dungeon lord when he failed me? I fucked him until his life energy was all mine since that was the only thing he had left to offer me. Come on, let me show you around your new home.</span>
She winked and walked by me. What the hell did I get myself into? Leaving my world behind to help this Goddess of Lust restore her power? Is this what the universe had in store for me? Oh well, not like I'll be missing out on much back in my homeworld, nobody will even notice I'm gone. It's time for a new beginning.
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|New Beginnings]]>><<set $new_beginning-->><</button>></span> <span id="forward"><<button [[Next|Tutorial]]>><<set $tutorial_page to 1>><<unset $new_beginning>><</button>></span>
</div>\
<</switch>>\<<silently>>\
* Variables *
<<set _floor_names to ["Floor One", "Floor Two", "Floor Three", "Floor Four", "Floor Five", "Floor Six", "Floor Seven", "Floor Eight", "Floor Nine", "Floor Ten", "Floor Eleven", "Floor Twelve"]>> Display name for each room
* Set Next Level EXP *
<<set $summoning.next_level_exp += Math.round((($summoning.level * $summoning.level) + setup.creature_nextlevel_constant) * $summoning.growth_rate)>>
* Use Saved Unit if Able *
<<if !$pc_saved_list>>
<<set $pc_saved_list to []>>
<</if>>
<<for _z = 0; _z < $pc_saved_list.length; _z++>>
<<if $pc_saved_list[_z].base_name === $summoning.base_name>>
<<CreatureLevelUp $summoning $pc_saved_list[_z].exp>>
<<set $summoning.total_dmgdealt to $pc_saved_list[_z].total_dmgdealt>>
<<set $summoning.total_sexdealt to $pc_saved_list[_z].total_sexdealt>>
<<set $summoning.total_dmgtaken to $pc_saved_list[_z].total_dmgtaken>>
<<set $summoning.total_raiders to $pc_saved_list[_z].total_raiders>>
<<set $summoning.total_captures to $pc_saved_list[_z].total_captures>>
<<set $summoning.total_deaths to $pc_saved_list[_z].total_deaths>>
<<break>>
<</if>>
<</for>>
* Find Next Available Index *
<<set _index_list to []>>
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if $dungeon_floor_list[_z].room_type === "Creature" || $dungeon_floor_list[_z].room_type === "Trap">>
<<set _index_list.push($dungeon_floor_list[_z].index)>>
<</if>>
<</for>>
<<for _z = 0; _z < setup.index_limit; _z++>>
<<if !_index_list.includes(_z)>>
<<set $summoning.index to _z>>
INDEX SET TO _z
<<break>>
<</if>>
<</for>>
* Update Stats *
<<for _z = $summoning.level; $summoning.level < $creature_start_level; _z++>>
INCREASE LEVEL AND SET NEXT EXP AMOUNT
<<set _expGained to $summoning.next_level_exp - $summoning.exp>>
<<CreatureLevelUp $summoning _expGained>>
<</for>>
* Set Upkeep *
<<set $summoning.upkeep to Math.trunc($summoning.base_upkeep + ($summoning.base_upkeep * (setup.creature_upkeep_float * ($summoning.level - 1))))>>
* Creature Stats *
<<NewCreature $summoning>>
<<CreatureStats $summoning>>
* Creature Description *
<<CreatureDescription $summoning>>
* Display *
<</silently>>\
<div class="section">\
<div class="cardholder-picside">\
<div class="picbox-inforoom-green">\
<div class="titlebox-abovepic">\
<<- _floor_names[$display_room_num]>>
</div>\
<div class="textboxlarge-abovepic">\
$summoning.name
</div>\
<div class="textbox-abovepic">\
<<hovertip "$summoning.exp / $summoning.next_level_exp">>Lvl. $summoning.level<</hovertip>>
</div>\
<div class="textbox-abovepic">\
Upkeep: <span style="color:gold">$summoning.upkeep Gold</span>
</div>\
<div class="picbox-inforoom">\
$summoning.pic
</div>\
<div class="statusbox-belowpic">\
</div>
</div>\
</div>\
<div class="cardholder-infoside">\
<div class="textbox-inforoom-green">\
<div class="description-stats">\
<div align='center'><span style="font-size: 115%;"><strong>Description</strong></span></div>\
$summoning.description
</div>\
<div class="table-stats">\
<div class="cell-stats">\
<<set _num to $summoning.cur_max_hp - Math.trunc($summoning.max_hp)>>\
<span style="color:lime"><u>Health</u>
$summoning.cur_hp / $summoning.cur_max_hp</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
</div>\
<div class="cell-stats">\
<span style="color:lime"><u>Health per Level</u>
$summoning.hp_per_lvl</span>
</div>\
<div class="cell-stats">\
<<set _num to $summoning.cur_atk - Math.trunc($summoning.atk)>>\
<<if $summoning.attack_type === "Physical">>\
<span style="color:orange"><u>Physical Attack</u>
$summoning.cur_atk</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
<<elseif $summoning.attack_type === "Magical">>\
<span style="color:deepskyblue"><u>Magical Attack</u>
$summoning.cur_atk</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
<</if>>\
</div>\
<div class="cell-stats">\
<<if $summoning.attack_type === "Physical">>\
<span style="color:orange"><u>Attack per Level</u>
$summoning.atk_per_lvl</span>
<<elseif $summoning.attack_type === "Magical">>\
<span style="color:deepskyblue"><u>Attack per Level</u>
$summoning.atk_per_lvl</span>
<</if>>\
</div>\
<div class="cell-stats">\
<<set _num to $summoning.cur_sex - Math.trunc($summoning.sex)>>\
<span style="color:fuchsia"><u>Sexual Attack</u>
$summoning.cur_sex</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
</div>\
<div class="cell-stats">\
<span style="color:fuchsia"><u>Attack per Level</u>
$summoning.sex_per_lvl</span>
</div>\
<div class="cell-stats">\
<<set _num to $summoning.cur_pres - Math.trunc($summoning.pres)>>\
<span style="color:yellow"><u>Physical Resistance</u>
$summoning.cur_pres</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
</div>\
<div class="cell-stats">\
<span style="color:yellow"><u>Resistance per Level</u>
$summoning.pres_per_lvl</span>
</div>\
<div class="cell-stats">\
<<set _num to $summoning.cur_mres - Math.trunc($summoning.mres)>>\
<span style="color:rebeccapurple"><u>Magical Resistance</u>
$summoning.cur_mres</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
</div>\
<div class="cell-stats">\
<span style="color:rebeccapurple"><u>Resistance per Level</u>
$summoning.mres_per_lvl</span>
</div>\
<div class="longcell-stats">\
<u><strong>Fetishes</strong></u>
<<if $summoning.fetishes.length === 0>>\
None
<<else>>\
$summoning.fetishes
<</if>>\
</div>\
</div>\
</div>\
<div class="linkbox-inforoom">\
<div class="linkbox-text">\
Do you want to Summon a $summoning.name on <<- _floor_names[$display_room_num]>>?
<span id="forward"><<button [[Yes|Dungeon Floor Manager]]>><<set $dungeon_floor_list[$display_room_num] to $summoning>><<set $pc_owned_list.push($summoning.base_name)>><<unset $summoning, $display_room_num, $start_page, $end_page>><</button>></span> <span id="back"><<button [[No|Empty Room]]>><<unset $summoning>><</button>></span>
</div>\
</div>\
</div>\
</div>\<<silently>>\
* Variables *
<<set _floor_names to ["Floor One", "Floor Two", "Floor Three", "Floor Four", "Floor Five", "Floor Six", "Floor Seven", "Floor Eight", "Floor Nine", "Floor Ten", "Floor Eleven", "Floor Twelve"]>> Display name for each room
* Use Saved Unit if Able *
<<if !$pc_saved_list>>
<<set $pc_saved_list to []>>
<</if>>
<<for _z = 0; _z < $pc_saved_list.length; _z++>>
<<if $pc_saved_list[_z].base_name === $construct.base_name>>
<<set $construct.total_dmgdealt to $pc_saved_list[_z].total_dmgdealt>>
<<set $construct.total_sexdealt to $pc_saved_list[_z].total_sexdealt>>
<<set $construct.total_raiders to $pc_saved_list[_z].total_raiders>>
<<set $construct.total_captures to $pc_saved_list[_z].total_captures>>
<<set $construct.total_statuses to $pc_saved_list[_z].total_statuses>>
<<set $construct.total_attempts to $pc_saved_list[_z].total_attempts>>
<<set $construct.total_triggers to $pc_saved_list[_z].total_triggers>>
<<break>>
<</if>>
<</for>>
* Find Next Available Index *
<<set _index_list to []>>
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if $dungeon_floor_list[_z].room_type === "Creature" || $dungeon_floor_list[_z].room_type === "Trap">>
<<set _index_list.push($dungeon_floor_list[_z].index)>>
<</if>>
<</for>>
<<for _z = 0; _z < setup.index_limit; _z++>>
<<if !_index_list.includes(_z)>>
<<set $construct.index to _z>>
INDEX SET TO _z
<<break>>
<</if>>
<</for>>
* Update Stats *
<<for _i = 1; _i < $dungeon_rank; _i++>>
<<set $construct.level++>>
<<set $construct.atk += $construct.atk_per_level>>
<<set $construct.sex += $construct.sex_per_level>>
<<set $construct.check += $construct.check_per_level>>
<</for>>
<<set $construct.upkeep to Math.trunc($construct.base_upkeep + ($construct.base_upkeep * (setup.trap_upkeep_float * ($dungeon_rank - 1))))>>
* Trap Stats *
<<NewTrap $construct>>
<<TrapStats $construct>>
* Trap Description *
<<TrapDescription $construct>>
* Display *
<</silently>>\
<div class="section">\
<div class="cardholder-picside">\
<div class="picbox-inforoom-blue">\
<div class="titlebox-abovepic">\
<<- _floor_names[$display_room_num]>>
</div>\
<div class="textboxlarge-abovepic">\
<strong>$construct.name</strong>
</div>\
<div class="textbox-abovepic">\
Rank $construct.level
</div>\
<div class="textbox-abovepic">\
Upkeep: <span style="color:gold">$construct.upkeep Gold</span>
</div>\
<div class="picbox-inforoom">\
$construct.pic
</div>\
<div class="statusbox-belowpic">\
</div>\
</div>\
</div>\
<div class="cardholder-infoside">\
<div class="textbox-inforoom-blue">\
<div class="description-stats-trap">\
<div align='center'><span style="font-size: 115%;"><strong>Description</strong></span></div>\
$construct.description
</div>\
<div class="table-stats-trap">\
<<set _num to $construct.cur_atk - $construct.atk>>\
<div class="cell-stats-trap">\
<<if $construct.attack_type === "Physical">>\
<span style="color:orange"><u>Physical Attack</u>
$construct.cur_atk</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
<<elseif $construct.attack_type === "Magical">>\
<span style="color:deepskyblue"><u>Magical Attack</u>
$construct.cur_atk</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
<<elseif $construct.attack_type === "True">>\
<u>True Attack</u>
$construct.cur_atk <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
<</if>>\
</div>\
<div class="cell-stats-trap">\
<<if $construct.attack_type === "Physical">>\
<span style="color:orange"><u>Attack per Rank</u>
$construct.atk_per_level</span>
<<elseif $construct.attack_type === "Magical">>\
<span style="color:deepskyblue"><u>Attack per Rank</u>
$construct.atk_per_level</span>
<<elseif $construct.attack_type === "True">>\
<u>Attack per Rank</u>
$construct.atk_per_level
<</if>>\
</div>\
<div class="cell-stats-trap">\
<<set _num to $construct.cur_sex - $construct.sex>>\
<span style="color:fuchsia"><u>Sexual Attack</u>
$construct.cur_sex</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
</div>\
<div class="cell-stats-trap">\
<span style="color:fuchsia"><u>Attack per Rank</u>
$construct.sex_per_level</span>
</div>\
<div class="cell-stats-trap">\
<<set _num to $construct.cur_check - $construct.check>>\
<u>$construct.check_type</u>
$construct.cur_check <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
</div>\
<div class="cell-stats-trap">\
<u>$construct.check_type per Rank</u>
$construct.check_per_level
</div>\
<div class="longcell-stats-trap">\
<u>Modes</u>
<<if $construct.mode_list.length === 0>>\
None
<<else>>\
<<set _newList to []>>\
<<for _i = 0; _i < $construct.mode_list.length; _i++>>\
<<set _newList.push($construct.mode_list[_i].name)>>\
<</for>>\
_newList
<</if>>\
</div>\
<div class="longcell-stats-trap">\
<u><strong>Fetishes</strong></u>
<<if $construct.fetishes.length === 0>>\
None
<<else>>\
$construct.fetishes
<</if>>\
</div>\
</div>\
</div>\
<div class="linkbox-inforoom">\
<div class="linkbox-text">\
Do you want to Construct a $construct.name on <<- _floor_names[$display_room_num]>>?
<span id="forward"><<button [[Yes|Dungeon Floor Manager]]>>\
<<silently>>\
* Set Room *
<<set $dungeon_floor_list[$display_room_num] to $construct>>
* Adds room name to owned list *
<<set $pc_owned_list.push($construct.base_name)>>
<<unset $construct, $display_room_num, $start_page, $end_page>>
<</silently>>\
<</button>></span> <span id="back"><<button [[No|Empty Room]]>><<unset $construct>><</button>></span>
</div>\
</div>\
</div>\
</div>\<<if $visited_treasure_shop === false && $tutorial_guides === true>>\
<<silently>>\
* Variables *
<<set $visited_treasure_shop to true>>
* Dialogue Bools *
<<set $bought_treasure_bool to false>>
<<set $sold_treasure_bool to false>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Treasure Shop
</div>\
<div class="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/town/sara/face_0.jpg]]
</div>\
<div class="dialogue-text">\
Welcome to my humble little shop, mate. You are the new dungeon lord, aren't you? You got them lewd eyes like you could undress me just by looking at me. I ain't hiding much as it is though. Anywho, my name is Sara. I'm sure you're wondering about what other goods I have here. Since adventurers always be after your gold and treasure, you best be sure to keep your treasure room well-stocked for 'em. I can sell you treasures the girls are seeking for cheap. I get new treasures each and every day, so I'm sure will be seeing you often, mate.
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="forward"><<button [[Continue|Treasure Shop]]>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
</div>\
</div>\
<<elseif $missionLog.sara.unlocked === true && $missionLog.sara.started === false>>\
<<if $missionLog.sara.num === 0>>\
<<silently>>\
* Variables *
<<set _missionName to setup.saraMisLine[$missionLog.sara.num].name>>
* Update Mission *
<<set $missionLog.sara.started to true>>
<<set $newMission_bool to true>>
* Add Special Quest *
<<set _newQuest to clone(setup.saraQuest0)>>
<<QuestGrinder _newQuest>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
_missionName
</div>\
<div class ="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/town/sara/face_0.jpg]]
</div>\
<div class="dialogue-text">\
Hey mate, can I ask ya for a favor? I eyed a better trade route for my carriers, but the waters are in pirate territory. If you can chase them off, I'd be able to bring in more Treasures, and better ones too! I'd do it myself, but I ain't riskin going into open waters again. I'll make it worth ya while.
Just go to the Quest Board to find the posting. I doubt anyone else would take my request, so I'm countin on ya!
</div>\
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="forward"><<button [[Continue|Treasure Shop]]>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
</div>\
<</if>>\
<<elseif $missionLog.sara.completed === true>>\
<<goto "Sara Reward">>\
<<else>>\
<<silently>>\
* Variables *
<<if $treasure_page == null>>
<<set $treasure_page to 0>>
<</if>>
<<if $treasureshop_mode == null>>
<<set $treasureshop_mode to "Buy">>
<</if>>
* Set First Quest *
<<if $missionLog.sara.num === "">>
<<set $missionLog.sara.num to 0>>
<</if>>
* Shopkeeper Dialogue *
<<if $bought_treasure_bool === true>>
<<set _dialogue to "Thanks, always a pleasure doing business with ya.">>
<<elseif $sold_treasure_bool === true>>
<<set _dialogue to "Thanks, always a pleasure doing business with ya.">>
<<elseif $treasureshop_inventory.length === 0>>
<<set _dialogue to "Sorry, looks like you cleaned me out of treasures. Come back tomorrow if you looking for treasure!">>
<<elseif $entered_treasureshop_bool === true>>
<<set _list to ["Welcome $pc_name! Take your time and have a look at my wares. I'm kidding, I only have treasures, stop looking at my breasts.", "Ahoy there matey, come to nab yourself some treasures?", "Ah, $pc_name. Great to see you again mate. Take your time and look around."]>>
<<set _dialogue to _list.random()>>
<<else>>
<<set _list to ["Finding everything you need? Why are you looking at me like that?", "I hope the day is treating you well, it can be a crazy world out there.", "I've found my fair share of treasures as a pirate, but those days have set sail many moons ago. Also never enjoyed the tentacles.", "I hear many good things about your dungeon, $dungeon_name, keep up the good work mate and keep shopping here!", "Oy, you wash your hands before touching all my goods?"]>>
<<set _dialogue to _list.random()>>
<</if>>
* Dialogue Bools *
<<set $entered_treasureshop_bool to false>>
<<set $bought_treasure_bool to false>>
<<set $sold_treasure_bool to false>>
<</silently>>\
<<if $treasureshop_mode === "Buy">>\
<<silently>>\
* Variables *
<<if $treasure_shop_list == null>>
<<set $treasure_shop_list to setup.common_treasure_list.concat(setup.uncommon_treasure_list, setup.rare_treasure_list)>>
<</if>>
<<for _i = 0; _i < $treasure_shop_list.length; _i++>>
SEARCHING FOR $treasure_shop_list[_i].name
<<set $treasure_shop_list[_i].count to $treasureshop_inventory.count($treasure_shop_list[_i].name)>>
<<if $treasure_shop_list[_i].count <= 0>>
FOUND NONE
<<set _delete to $treasure_shop_list.deleteAt(_i)>>
<<set _i-->>
<</if>>
<</for>>
<<set _treasure_per_page to 8>> the number of treasures that can be on each page, starting count from 0
<<set _start_pos to _treasure_per_page * $treasure_page>> Set where to start the list based on what the page is
<<if _start_pos + _treasure_per_page < $treasure_shop_list.length>>
<<set _end_pos to _start_pos + _treasure_per_page>> Set where to end the list based on what the page is
<<else>>
<<set _end_pos to $treasure_shop_list.length>>
<</if>>
* Sorting Bools *
<<if $count_sorted == null>>
<<set $count_sorted to false>>
<</if>>
<<if $name_sorted == null>>
<<set $name_sorted to true>>
<<set $treasure_shop_list.sort(function (a, b) {
var
nameA = a.name.toUpperCase(),
nameB = b.name.toUpperCase();
if (nameA < nameB) {
return -1;
}
else if (nameA > nameB) {
return 1;
}
return 0;
});>>
<</if>>
<<if $value_sorted == null>>
<<set $value_sorted to false>>
<</if>>
* Display *
<</silently>>\
<div class="titlebox">\
Treasure Shop
</div>\
<div class="dialoguebox-treasureshop">\
<div class="dialoguepic-treasureshop">\
[img[images/town/sara/face_0.jpg]]
</div>\
<div class="dialoguetext-treasureshop">\
_dialogue
</div>\
</div>\
<div class="button-treasure-list">\
<<if $treasure_page > 0>>\
<div class="tallbutton">\
<span id="left"><<button [[<|Treasure Shop]]>><<set $treasure_page-->><</button>></span>
</div>\
<</if>>\
</div>\
<div class="cardholder-treasure-list">\
<div class="headerholder-treasure-list">\
<div class="header-count-treasure-list">\
<span id="c"><<button "<u>C</u>ount" "Treasure Shop">>\
<<silently>>\
<<if $count_sorted === false>>
<<set $treasure_shop_list.sort(function (a, b) { return b.count - a.count; });>>
<<set $count_sorted to true>>
<<set $name_sorted to false>>
<<set $value_sorted to false>>
<<else>>
<<set $treasure_shop_list.sort(function (a, b) { return a.count - b.count; });>>
<<set $count_sorted to false>>
<<set $name_sorted to false>>
<<set $value_sorted to false>>
<</if>>
<</silently>>\
<</button>></span>\
</div>\
<div class="header-name-treasure-list">\
<span id="n"><<button "<u>N</u>ame" "Treasure Shop">>\
<<silently>>\
<<if $name_sorted === false>>
<<set $count_sorted to false>>
<<set $name_sorted to true>>
<<set $value_sorted to false>>
<<set $treasure_shop_list.sort(function (a, b) {
var
nameA = a.name.toUpperCase(),
nameB = b.name.toUpperCase();
if (nameA < nameB) {
return -1;
}
else if (nameA > nameB) {
return 1;
}
return 0;
});>>
<<else>>
<<set $count_sorted to false>>
<<set $name_sorted to false>>
<<set $value_sorted to false>>
<<set $treasure_shop_list.sort(function (a, b) {
var
nameA = a.name.toUpperCase(),
nameB = b.name.toUpperCase();
if (nameA > nameB) {
return -1;
}
else if (nameA < nameB) {
return 1;
}
return 0;
});>>
<</if>>
<</silently>>\
<</button>></span>\
</div>\
<div class="header-description-treasure-list">\
<strong>Description</strong>
</div>\
<div class="header-value-treasure-list">\
<span id="p"><<button "<u>P</u>rice" "Treasure Shop">>\
<<silently>>\
<<if $value_sorted === false>>
<<set $treasure_shop_list.sort(function (a, b) { return b.gold - a.gold; });>>
<<set $count_sorted to false>>
<<set $name_sorted to false>>
<<set $value_sorted to true>>
<<else>>
<<set $treasure_shop_list.sort(function (a, b) { return a.gold - b.gold; });>>
<<set $count_sorted to false>>
<<set $name_sorted to false>>
<<set $value_sorted to false>>
<</if>>
<</silently>>\
<</button>></span>\
</div>\
<div class="header-button-treasure-list">\
<<set _cur_page to $treasure_page + 1>>\
<<if $treasure_shop_list.length === 0>>\
<<set _cur_page to 0>>\
<</if>>\
<<set _tot_pages to Math.trunc(($treasure_shop_list.length / _treasure_per_page) + 0.99)>>\
Page
_cur_page / _tot_pages
</div>\
</div>\
<div class="cellholder-treasure-list">\
<<for _i = _start_pos; _i < _end_pos; _i++>>\
<<silently>>\
* Set Hotkey *
<<set _hotKey to (_i % 8) + 1>>
* Set Base Cost *
<<set _cost to clone(setup.treasure_cost[$treasure_shop_list[_i].rarity])>>
* Cost Modifiers *
BUYING MODS
OVERSTOCKED
<<if $current_event.event === true && $current_event.name === setup.overstocked.name>>
<<set _cost -= Math.round(_cost * setup.overstocked.float)>>
<</if>>
TRADE HERO
<<if $pc_blessing_list.includes("Trade Hero")>>
<<set _cost -= Math.round(_cost * setup.saraBlessing_0.gold_float)>>
<</if>>
* Set Cost *
<<set $treasure_shop_list[_i].gold to clone(_cost)>>
<</silently>>\
<div class="cell-count-treasure-list">\
$treasure_shop_list[_i].count
</div>\
<div class="cell-name-treasure-list">\
<span @class='$treasure_shop_list[_i].rarity'>$treasure_shop_list[_i].name</span>
</div>\
<div class="cell-description-treasure-list">\
$treasure_shop_list[_i].tooltip
</div>\
<div class="cell-value-treasure-list">\
@@.gold;$treasure_shop_list[_i].gold Gold@@
</div>\
<div class="cell-button-treasure-list">\
<<if $pc_gold < $treasure_shop_list[_i].gold || $treasureroom_inventory.length >= $treasureroom_size>>\
<div class="offbutton">\
<<button "Buy">><</button>>
</div>\
<<else>>\
<<capture _i, _hotKey>>\
<span @id="_hotKey"><<button "Buy ^^_hotKey^^" "Treasure Shop">>\
<<silently>>\
UPDATE STATS
<<set $pc_gold -= $treasure_shop_list[_i].gold>>
<<set $pc_town_gold_spent += $treasure_shop_list[_i].gold>>
<<set $pc_treasure_bought++>>
ADD TREASURE TO TREASURE ROOM
<<set $treasureroom_inventory.push($treasure_shop_list[_i].name)>>
SARA MISSION
<<if $missionLog.sara.num === 0 && $missionLog.sara.unlocked === false>>
<<set $missionLog.sara.int += $treasure_shop_list[_i].gold>>
<</if>>
REMOVE TREASURE FROM SHOP
<<for _z = 0; _z < $treasureshop_inventory.length; _z++>>
<<if $treasureshop_inventory[_z] === $treasure_shop_list[_i].name>>
<<set _delete to $treasureshop_inventory.deleteAt(_z)>>
<<break>>
<</if>>
<</for>>
DIALOGUE BOOl
<<set $bought_treasure_bool to true>>
<</silently>>\
<</button>></span>\
<</capture>>\
<</if>>\
</div>\
<</for>>\
</div>\
</div>\
<div class="button-treasure-list">\
<<if $treasure_shop_list.length > _end_pos>>\
<div class="tallbutton">\
<span id="right"><<button [[>|Treasure Shop]]>><<set $treasure_page++>><</button>></span>
</div>\
<</if>>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Leave|Town Menu]]>><<unset $count_sorted, $name_sorted, $value_sorted, $treasure_page, $treasureshop_mode, $treasure_shop_list, $player_treasure_list>><</button>></span> <span id="forward"><<button [[Sell|Treasure Shop]]>><<set $treasure_page to 0>><<set $treasureshop_mode to "Sell">><<unset $count_sorted, $name_sorted, $value_sorted, $treasure_shop_list, $player_treasure_list>><</button>></span> <span id="q"><<button "<u>Q</u>uick Menu" "Quick Menu">><<unset $count_sorted, $name_sorted, $value_sorted, $treasure_page, $treasureshop_mode, $treasure_shop_list, $player_treasure_list>><</button>></span>
</div>\
<<elseif $treasureshop_mode === "Sell">>\
<<silently>>\
* Variables *
<<if $player_treasure_list == null>>
<<set $player_treasure_list to setup.common_treasure_list.concat(setup.uncommon_treasure_list, setup.rare_treasure_list)>>
<</if>>
<<for _i = 0; _i < $player_treasure_list.length; _i++>>
SEARCHING FOR $player_treasure_list[_i].name
<<set $player_treasure_list[_i].count to $treasureroom_inventory.count($player_treasure_list[_i].name)>>
<<if $player_treasure_list[_i].count <= 0>>
FOUND NONE
<<set _delete to $player_treasure_list.deleteAt(_i)>>
<<set _i-->>
<</if>>
<</for>>
<<set _treasure_per_page to 8>> the number of treasures that can be on each page, starting count from 0
<<set _start_pos to _treasure_per_page * $treasure_page>> Set where to start the list based on what the page is
<<if _start_pos + _treasure_per_page < $player_treasure_list.length>>
<<set _end_pos to _start_pos + _treasure_per_page>> Set where to end the list based on what the page is
<<else>>
<<set _end_pos to $player_treasure_list.length>>
<</if>>
* Sorting Bools *
<<if $count_sorted == null>>
<<set $count_sorted to false>>
<</if>>
<<if $name_sorted == null>>
<<set $name_sorted to true>>
<<set $player_treasure_list.sort(function (a, b) {
var
nameA = a.name.toUpperCase(),
nameB = b.name.toUpperCase();
if (nameA < nameB) {
return -1;
}
else if (nameA > nameB) {
return 1;
}
return 0;
});>>
<</if>>
<<if $value_sorted == null>>
<<set $value_sorted to false>>
<</if>>
* Display *
<</silently>>\
<div class="titlebox">\
Selling Treasure
</div>\
<div class="dialoguebox-treasureshop">\
<div class="dialoguepic-treasureshop">\
[img[images/town/sara/face_0.jpg]]
</div>\
<div class="dialoguetext-treasureshop">\
_dialogue
</div>\
</div>\
<div class="button-treasure-list">\
<<if $treasure_page > 0>>\
<div class="tallbutton">\
<span id="left"><<button [[<|Treasure Shop]]>><<set $treasure_page-->><</button>></span>
</div>\
<</if>>\
</div>\
<div class="cardholder-treasure-list">\
<div class="headerholder-treasure-list">\
<div class="header-count-treasure-list">\
<span id="c"><<button "<u>C</u>ount" "Treasure Shop">>\
<<silently>>\
<<if $count_sorted === false>>
<<set $player_treasure_list.sort(function (a, b) { return b.count - a.count; });>>
<<set $count_sorted to true>>
<<set $name_sorted to false>>
<<set $value_sorted to false>>
<<else>>
<<set $player_treasure_list.sort(function (a, b) { return a.count - b.count; });>>
<<set $count_sorted to false>>
<<set $name_sorted to false>>
<<set $value_sorted to false>>
<</if>>
<</silently>>\
<</button>></span>\
</div>\
<div class="header-name-treasure-list">\
<span id="n"><<button "<u>N</u>ame" "Treasure Shop">>\
<<silently>>\
<<if $name_sorted === false>>
<<set $count_sorted to false>>
<<set $name_sorted to true>>
<<set $value_sorted to false>>
<<set $player_treasure_list.sort(function (a, b) {
var
nameA = a.name.toUpperCase(),
nameB = b.name.toUpperCase();
if (nameA < nameB) {
return -1;
}
else if (nameA > nameB) {
return 1;
}
return 0;
});>>
<<else>>
<<set $count_sorted to false>>
<<set $name_sorted to false>>
<<set $value_sorted to false>>
<<set $player_treasure_list.sort(function (a, b) {
var
nameA = a.name.toUpperCase(),
nameB = b.name.toUpperCase();
if (nameA > nameB) {
return -1;
}
else if (nameA < nameB) {
return 1;
}
return 0;
});>>
<</if>>
<</silently>>\
<</button>></span>\
</div>\
<div class="header-description-treasure-list">\
<strong>Description</strong>
</div>\
<div class="header-value-treasure-list">\
<span id="p"><<button "<u>P</u>rice" "Treasure Shop">>\
<<silently>>\
<<if $value_sorted === false>>
<<set $player_treasure_list.sort(function (a, b) { return b.gold - a.gold; });>>
<<set $count_sorted to false>>
<<set $name_sorted to false>>
<<set $value_sorted to true>>
<<else>>
<<set $player_treasure_list.sort(function (a, b) { return a.gold - b.gold; });>>
<<set $count_sorted to false>>
<<set $name_sorted to false>>
<<set $value_sorted to false>>
<</if>>
<</silently>>\
<</button>></span>\
</div>\
<div class="header-button-treasure-list">\
<<set _cur_page to $treasure_page + 1>>\
<<if $player_treasure_list.length === 0>>\
<<set _cur_page to 0>>\
<</if>>\
<<set _tot_pages to Math.trunc(($player_treasure_list.length / _treasure_per_page) + 0.99)>>\
Page
_cur_page / _tot_pages
</div>\
</div>\
<div class="cellholder-treasure-list">\
<<for _i = _start_pos; _i < _end_pos; _i++>>\
<<silently>>\
<<set _hotKey to (_i % 8) + 1>>
* Set Base Cost *
<<set _cost to clone(setup.treasure_cost[$player_treasure_list[_i].rarity])>>
* Treasure Cost Modifiers *
SELLING MOD
<<set _cost to (Math.round(_cost * $treasure_sell_float)).clamp(1, 1000000)>>
RING OF DECEPTION
<<if $player_treasure_list[_i].name === setup.common_treasure_07.name>>
<<set _cost *= setup.common_treasure_07.mult>>
<</if>>
RING OF TEMPTATION
<<if $player_treasure_list[_i].name === setup.uncommon_treasure_07.name>>
<<set _cost *= setup.uncommon_treasure_07.mult>>
<</if>>
* Set Cost *
<<set $player_treasure_list[_i].gold to clone(_cost)>>
<</silently>>\
<div class="cell-count-treasure-list">\
$player_treasure_list[_i].count
</div>\
<div class="cell-name-treasure-list">\
<span @class='$player_treasure_list[_i].rarity'>$player_treasure_list[_i].name</span>
</div>\
<div class="cell-description-treasure-list">\
$player_treasure_list[_i].tooltip
</div>\
<div class="cell-value-treasure-list">\
@@.gold;$player_treasure_list[_i].gold Gold@@
</div>\
<div class="cell-button-treasure-list">\
<<capture _i, _hotKey>>\
<span @id="_hotKey"><<button "Sell ^^_hotKey^^" "Treasure Shop">>\
<<silently>>\
UPDATE STATS
<<set $pc_gold += $player_treasure_list[_i].gold>>
<<set $pc_gold_earned_other += $player_treasure_list[_i].gold>>
<<set $pc_treasure_sold++>>
ADD TREASURE TO TREASURE SHOP ROOM
<<set $treasureshop_inventory.push($player_treasure_list[_i].name)>>
REMOVE TREASURE FROM TREASURE ROOM
<<for _z = 0; _z < $treasureroom_inventory.length; _z++>>
<<if $treasureroom_inventory[_z] === $player_treasure_list[_i].name>>
<<set _delete to $treasureroom_inventory.deleteAt(_z)>>
<<break>>
<</if>>
<</for>>
DIALOGUE BOOl
<<set $sold_treasure_bool to true>>
<</silently>>\
<</button>></span>\
<</capture>>\
</div>\
<</for>>\
</div>\
</div>\
<div class="button-treasure-list">\
<<if $player_treasure_list.length > _end_pos>>\
<div class="tallbutton">\
<span id="right"><<button [[>|Treasure Shop]]>><<set $treasure_page++>><</button>></span>
</div>\
<</if>>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Leave|Town Menu]]>><<unset $count_sorted, $name_sorted, $value_sorted, $treasure_page, $treasureshop_mode, $treasure_shop_list, $player_treasure_list>><</button>></span> <span id="forward"><<button [[Buy|Treasure Shop]]>><<set $treasure_page to 0>><<set $treasureshop_mode to "Buy">><<unset $count_sorted, $name_sorted, $value_sorted, $player_treasure_list>><</button>></span> <span id="q"><<button "<u>Q</u>uick Menu" "Quick Menu">><<unset $count_sorted, $name_sorted, $value_sorted, $treasure_page, $treasureshop_mode, $treasure_shop_list, $player_treasure_list>><</button>></span>
</div>\
<</if>>\
<</if>>\<<silently>>\
* Variables *
* Set Spell List *
<<if $filter_spell.length === 0>>
<<set _spell_list to $pc_spellbook>>
<<else>>
<<set _spell_list to []>>
<<for _z = 0; _z < $pc_spellbook.length; _z++>>
<<if $filter_spell.includes($pc_spellbook[_z].type)>>
<<set _spell_list.push($pc_spellbook[_z])>>
<<else>>
<<continue>>
<</if>>
<</for>>
<</if>>
<<set _spell_list.sort(function (a, b) { return a.order_num - b.order_num; });>>
<<set _spell_list.sort(function (a, b) { return b.favorited - a.favorited; });>>
* Spellbook Page *
<<set _spells_per_page to 9>> the number of slaves that can be on each page, starting count from 0
<<if $spellbook_page == null>>
<<set $spellbook_page to 0>>
<</if>>
<<set _start_pos to _spells_per_page * $spellbook_page>> Set where to start the list based on what the page is
<<if _start_pos + _spells_per_page < _spell_list.length>>
<<set _end_pos to _start_pos + _spells_per_page>> Set where to end the list based on what the page is
<<else>>
<<set _end_pos to _spell_list.length>>
<</if>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
<strong>Spellbook</strong>
</div>\
<div class="buttonbox-spellbook">\
<div class="buttonholder-spellbook">\
<<if $filter_spell.includes("Infliction")>>\
<span id="i"><<button "<u>I</u>nfliction Spells" "Player Spells List">><<set _clear to $filter_spell.delete("Infliction")>><<set $spellbook_page to 0>><</button>></span>
<<else>>\
<div class="transparent-button">\
<span id="i"><<button "<u>I</u>nfliction Spells" "Player Spells List">>\
<<silently>>\
<<set $filter_spell.push("Infliction")>>
<<if $filter_spell.length >= 4>>
<<set $filter_spell to []>>
<</if>>
<<set $spellbook_page to 0>>
<</silently>>\
<</button>></span>\
</div>\
<</if>>\
</div>\
<div class="buttonholder-spellbook">\
<<if $filter_spell.includes("Manipulation")>>\
<span id="m"><<button "<u>M</u>anipulation Spells" "Player Spells List">><<set _clear to $filter_spell.delete("Manipulation")>><<set $spellbook_page to 0>><</button>></span>
<<else>>\
<div class="transparent-button">\
<span id="m"><<button "<u>M</u>anipulation Spells" "Player Spells List">>\
<<silently>>\
<<set $filter_spell.push("Manipulation")>>
<<if $filter_spell.length >= 4>>
<<set $filter_spell to []>>
<</if>>
<<set $spellbook_page to 0>>
<</silently>>\
<</button>></span>
</div>\
<</if>>\
</div>\
<div class="buttonholder-spellbook">\
<<if $filter_spell.includes("Summoning")>>\
<span id="s"><<button "<u>S</u>ummoning Spells" "Player Spells List">><<set _clear to $filter_spell.delete("Summoning")>><<set $spellbook_page to 0>><</button>></span>
<<else>>\
<div class="transparent-button">\
<span id="s"><<button "<u>S</u>ummoning Spells" "Player Spells List">>\
<<silently>>\
<<set $filter_spell.push("Summoning")>>
<<if $filter_spell.length >= 4>>
<<set $filter_spell to []>>
<</if>>
<<set $spellbook_page to 0>>
<</silently>>\
<</button>></span>
</div>\
<</if>>\
</div>\
<div class="buttonholder-spellbook">\
<<if $filter_spell.includes("Supportive")>>\
<span id="p"><<button "Su<u>p</u>portive Spells" "Player Spells List">><<set _clear to $filter_spell.delete("Supportive")>><<set $spellbook_page to 0>><</button>></span>
<<else>>\
<div class="transparent-button">\
<span id="p"><<button "Su<u>p</u>portive Spells" "Player Spells List">>\
<<silently>>\
<<set $filter_spell.push("Supportive")>>
<<if $filter_spell.length >= 4>>
<<set $filter_spell to []>>
<</if>>
<<set $spellbook_page to 0>>
<</silently>>\
<</button>></span>
</div>\
<</if>>\
</div>\
</div>\
<div class="container-spellbook">\
<<for _i = _start_pos; _i < _end_pos; _i++>>\
<<set _hotKey to (_i % 9) + 1>>\
<<if _spell_list[_i].favorited === true>>\
<<set _cell to "cells-favorite-spellbook">>\
<<else>>\
<<set _cell to "cells-spellbook">>\
<</if>>\
<div class="cellholder-spellbook">\
<div @class="_cell">\
<div class="cell-levelreq-spellbook">\
</div>\
<div class="cell-name-spellbook">\
_spell_list[_i].name
</div>\
<div class="cell-cost-spellbook">\
<<silently>>\
* SPELL COST MODS *
<<set _cost to clone(_spell_list[_i].mana)>>
ASPECT OF CONJURATION
<<if $pc_blessing_list.includes("Aspect of Conjuration") && _spell_list[_i].type === "Summoning">>
<<set _cost -= Math.trunc(_cost * setup.blessing_03_12.float)>>
_spell_list[_i].name COST _cost MANA
<</if>>
<</silently>>\
<<if $pc_mana < _cost>>\
@@.mana;Mana@@: @@.bad;_cost@@
<<else>>\
@@.mana;Mana@@: @@.mana;_cost@@
<</if>>\
</div>\
<div class="cell-description-spellbook">\
_spell_list[_i].tooltip
</div>\
<div class="cell-link-spellbook">\
<<set _shiftKey to "shift" + _hotKey>>\
<<capture _i, _hotKey, _shiftKey>>\
<<if _spell_list[_i].favorited === true>>\
<span @id="_hotKey"><<button "Unfavorite ^^_hotKey^^" "Player Spells List">><<set _spell_list[_i].favorited to false>><</button>></span> \
<<else>>\
<span @id="_hotKey"><<button "Favorite ^^_hotKey^^" "Player Spells List">><<set _spell_list[_i].favorited to true>><</button>></span> \
<</if>>\
<<if _spell_list[_i].type === "Summoning">>\
<span @id="_shiftKey"><<button "[img[images/icons/desc_icon.png]]^^[_hotKey]^^" "Summon Creature Stats">><<set $summon_spell to _spell_list[_i]>><</button>></span>
<</if>>\
<</capture>>\
</div>\
</div>\
</div>\
<</for>>\
</div>\
<div class="buttonbox-spellbook">\
<div class="pagebutton-spellbook">\
<<if $spellbook_page > 0>>\
<span="left"><<button [[Previous Page|Player Spells List]]>><<set $spellbook_page-->><</button>></span>
<<else>>\
<div class="offbutton">\
<<button "Previous Page">><</button>>
</div>\
<</if>>\
</div>\
<div class="pagebutton-spellbook">\
<<if _spell_list.length > _end_pos>>\
<span id="right"><<button [[Next Page|Player Spells List]]>><<set $spellbook_page++>><</button>></span>
<<else>>\
<div class="offbutton">\
<<button "Next Page">><</button>>
</div>\
<</if>>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Player's Stats]]>><</button>></span>
</div>\
</div>\<div class="section">\
<div class="titlebox">\
Do You Want To Start a New Game?
</div>\
<div class="textbox-center">\
Do you wish to start a new game AND keep all your current Slave Packs?
To see which Slave Packs you have currently, go to the Slave Pack Menu
<span id="forward"><<button [[Yes|New Game]]>><</button>></span> <span id="back"><<button [[No|Player's Stats]]>><</button>></span>
</div>\<div class="section">\
<div class="titlebox">\
Edit Info/Difficulty
</div>\
<div class="inputbox-newgame">\
Your Name
<<textbox "$pc_name" $pc_name autofocus>>
</div>\
<div class="inputbox-newgame">\
Dungeon Name
<<textbox "$dungeon_name" $dungeon_name>>
</div>\
<div class="infotext-newgame">\
All content is available no matter the difficulty.
</div>\
<div class="checkbox-newgame">\
<label><div align="center"><<radiobutton "$difficulty" "casual" autocheck>> <strong>Casual</strong></div>\
For those who wish to enjoy the game without a challenge.
<ul>\
<li>Raiders' stats are lower</li>\
<li>Raider difficulty increases slower</li>\
<li>Gold and Reputation earned is increased</li>\
<li>Gain more EXP</li>\
<li>Never get a Game Over</li>\
</ul></label>\
</div>\
<div class="checkbox-newgame">\
<label><div align="center"><<radiobutton "$difficulty" "normal" autocheck>> <strong>Normal</strong></div>\
The way the game was meant to be played, offering a mix of enjoyment and challenge.
<ul>\
<li>Raiders' stats are unchanged</li>\
<li>Raider difficulty increases normally</li>\
<li>Gold and Reputation earned is unchanged</li>\
<li>Gain normal EXP</li>\
<li>Game Over will occurs after having no Gold for three days in a row</li>\
</ul></label>\
</div>\
<div class="checkbox-newgame">\
<label><div align="center"><<radiobutton "$difficulty" "brutal" autocheck>> <strong>Brutal</strong></div>\
For those who seek a challenge, having to optimize and strategize heavily to survive.
<ul>\
<li>Raiders' stats are higher</li>\
<li>Raider difficulty increases faster</li>\
<li>Gold and Reputation earned is decreased</li>\
<li>Gain less EXP</li>\
<li>Game Over occurs if you end a day with no Gold</li>\
</ul></label>\
</div>\
<div class="infotext-newgame">\
<label><<checkbox "$tutorial_guides" false true autocheck>> Enable Ingame Tutorials</label>
<span id="forward"><<button [[Save|Player's Stats]]>>
<<silently>>\
<<UpdateDifficulty $difficulty>>
<</silently>>\
<</button>></span>\
</div>\
</div>\<<silently>>\
*Variables*
<<set _exp_mod to 0.15>> increase or decrease the amount of exp earned based on difficulty
<<set _min_exp to $cur_task.min_exp>>
<<set _max_exp to $cur_task.max_exp>>
DIFFICULTY MOD
<<switch $difficulty>>
<<case "casual">>
<<set _amount to Math.round(_min_exp * _exp_mod)>>
<<set _min_exp += _amount>>
<<set _amount to Math.round(_max_exp * _exp_mod)>>
<<set _max_exp += _amount>>
<<case "brutal">>
<<set _amount to Math.round(_min_exp * _exp_mod)>>
<<set _min_exp -= _amount>>
<<set _amount to Math.round(_max_exp * _exp_mod)>>
<<set _max_exp -= _amount>>
<</switch>>
*Set Minimum Requirements*
<<if _min_exp < 1>>
<<set _mix_exp to 1>>
<</if>>
<<if _max_exp < 1>>
<<set _max_exp to 1>>
<</if>>
*Display*
<</silently>>\
<div id="section">\
<div id="cardholder-capture-study">\
<div id="titlebox">\
$cur_task.name
</div>\
<div id="textbox-left">\
Task Type: Service
Sex Type: Your Choice
Love Required: $cur_task.love_req
Energy Required: $cur_task.energy_req
Estimated Exp Given: _min_exp ~ _max_exp
Improves: Love, Libido, and Energy
</div>\
<div id="titlebox">\
Description
</div>\
<div id="textbox-left">\
$cur_task.description
</div>\
</div>\
<div class="exit-link-right">\
[[Back|Assign Slave Task]]
</div>\
</div>\<<silently>>\
*Variables*
<<set _gold_mod to 0.1>> increase or decrease the amount of gold earned based on difficulty
<<set _min_gold to $cur_task.min_gold>>
<<set _max_gold to $cur_task.max_gold>>
DIFFICULTY MOD
<<switch $difficulty>>
<<case "casual">>
<<set _amount to Math.round(_min_gold * _gold_mod)>>
<<set _min_gold += _amount>>
<<set _amount to Math.round(_max_gold * _gold_mod)>>
<<set _max_gold += _amount>>
<<case "brutal">>
<<set _amount to Math.round(_min_gold * _gold_mod)>>
<<set _min_gold -= _amount>>
<<set _amount to Math.round(_max_gold * _gold_mod)>>
<<set _max_gold -= _amount>>
<</switch>>
*Set Minimum Requirements*
<<if _min_gold < 1>>
<<set _mix_gold to 1>>
<</if>>
<<if _max_gold < 1>>
<<set _max_gold to 1>>
<</if>>
*Display*
<</silently>>\
<div id="section">\
<div id="cardholder-capture-study">\
<div id="titlebox">\
$cur_task.name
</div>\
<div id="textbox-left">\
Difficulty: $cur_task.difficulty
Obedience Required: $cur_task.obedience_req
Energy Required: $cur_task.energy_req
Estimated Gold Earned: _min_gold ~ _max_gold
Improves: Libido, Strength, Obedience, and Energy
</div>\
<div id="titlebox">\
Description
</div>\
<div id="textbox-left">\
$cur_task.description
</div>\
</div>\
<div class="exit-link-right">\
[[Back|Assign Slave Task]]
</div>\
</div>\<<silently>>\
*Variables*
<<set _exp_mod to 0.15>> increase or decrease the amount of exp earned based on difficulty
<<set _min_exp to $cur_task.min_base_service_exp>>
<<set _max_exp to $cur_task.max_base_service_exp>>
DIFFICULTY MOD
<<switch $difficulty>>
<<case "casual">>
<<set _amount to Math.round(_min_exp * _exp_mod)>>
<<set _min_exp += _amount>>
<<set _amount to Math.round(_max_exp * _exp_mod)>>
<<set _max_exp += _amount>>
<<case "brutal">>
<<set _amount to Math.round(_min_exp * _exp_mod)>>
<<set _min_exp -= _amount>>
<<set _amount to Math.round(_max_exp * _exp_mod)>>
<<set _max_exp -= _amount>>
<</switch>>
*Set Minimum Requirements*
<<if _min_exp < 1>>
<<set _mix_exp to 1>>
<</if>>
<<if _max_exp < 1>>
<<set _max_exp to 1>>
<</if>>
*Display*
<</silently>>\
<div id="section">\
<div id="cardholder-capture-study">\
<div id="titlebox">\
$cur_task.name Service
</div>\
<div id="textbox-left">\
Task Type: Service
Stat Used: $cur_task.service_stat
Obedience Required: $cur_task.obedience_req
Energy Required: $cur_task.energy_req
Estimated Exp Given: _min_exp ~ _max_exp
Improve: Libido, Strength, Obedience, and Energy
</div>\
<div id="titlebox">\
Description
</div>\
<div id="textbox-left">\
$cur_task.task_description
</div>\
</div>\
<div class="exit-link-right">\
[[Back|Assign Slave Task]]
</div>\
</div>\<<silently>>\
*Variables*
<<set _robust_trigger to false>> set to true if robust triggered to show text
<<set _virgin_neg_trigger to false>> set to true if virgin lost her virginity to show text
<<set _obedience_trigger to false>> set to true if slaves obedience increased to show text
<<set _libido_trigger to false>> set to true if slaves libido increased to show text
<<set _intelligence_trigger to false>> set to true if slave intelligence increased to show text
<<set _strength_trigger to false>> set to true if slave strength increased to show text
<<set _energy_trigger to false>> set to true if slaves energy increased to show text
<<set _max_energy_bonus to false>> set to true if slave earned max bonus for having extra energy
<<set _energy_mod to 4>> divide current energy by this variable.
<<set _gold_mod to 0.1>> increase or decrease gold earned based on difficulty
<<set _risk_percent to $cur_task.risk_percent>>
<<set _treasure_reward to false>> Set to true if earned Treasure
<<set _best_reward_percent to $cur_task.best_reward_percent>>
<<set _average_reward_percent to $cur_task.average_reward_percent>>
*Get Slave Info*
<<set _cur_slave_trait_names to []>>
<<for _i = 0; _i < $cur_slave.positive_traits.length; _i++>>
<<set _trait to $cur_slave.positive_traits[_i].name>>
<<set _cur_slave_trait_names.push(_trait)>>
<</for>>
<<for _i = 0; _i < $cur_slave.negative_traits.length; _i++>>
<<set _trait to $cur_slave.negative_traits[_i].name>>
<<set _cur_slave_trait_names.push(_trait)>>
<</for>>
* Set Used Stat *
<<if $cur_task.seeking === "Love">>
<<set _slave_stat to $cur_slave.love>>
<<elseif $cur_task.seeking === "Obedience">>
<<set _slave_stat to $cur_slave.obedience>>
<<elseif $cur_task.seeking === "Libido">>
<<set _slave_stat to $cur_slave.libido>>
<<elseif $cur_task.seeking === "Strength">>
<<set _slave_stat to $cur_slave.strength>>
<<elseif $cur_task.seeking === "Intelligence">>
<<set _slave_stat to $cur_slave.intelligence>>
<<elseif $cur_task.seeking === "Energy">>
<<set _slave_stat to $cur_slave.energy>>
<</if>>
* Base Gold Earned *
<<set _gold_earned to Math.round(random($cur_task.min_gold, $cur_task.max_gold) + (_slave_stat * $cur_task.gold_per_stat))>>
* Calc Luck *
<<set _rng to random(1, 6)>>
<<if _rng === 6>>
<<set _luck to 1>>
<<elseif _rng === 1>>
<<set _luck to -1>>
<<else>>
<<set _luck to 0>>
<</if>>
* Covert Extra Energy *
<<set _extra_energy to Math.round($cur_slave.cur_energy / _energy_mod)>>
* Client Rating *
<<if _slave_stat + _luck >= $cur_task.best>>
<<set _client_rating to 3>>
<<set _reward_percent to _best_reward_percent>>
BONUS GOLD
<<set _gold_earned to Math.round(_gold_earned * setup.work_best_mod)>>
SET PICTURE
<<set _pic to $cur_slave.body_pic>>
<<elseif _slave_stat + _luck >= $cur_task.average>>
<<set _client_rating to 2>>
<<set _reward_percent to _average_reward_percent>>
SET PICTURE
<<set _pic to $cur_slave.body_pic>>
<<else>>
<<set _client_rating to 1>>
<<set _reward_percent to 0>>
LOSE GOLD
<<set _gold_earned to Math.round(_gold_earned * setup.work_worst_mod)>>
SET PICTURE
<<if true>>
<<set _folder to $cur_task.sex_punishment>>
<<set _pic to $cur_slave[_folder].random()>>
<<else>>
<<set _pic to $cur_slave.body_pic>>
<</if>>
<</if>>
* Treasure Reward *
TREASURE REWARD CHECK
<<set _rng to random(1, 100)>>
<<if _cur_slave_trait_names.includes("Lucky")>>
<<set _reward_percent *= setup.lucky.mult>>
<</if>>
<<if _reward_percent >= _rng>>
ADD TREASURE & STATS
<<set $pc_treasure_list.push($cur_task.treasure_reward)>>
<<set $pc_total_treasures_found++>>
<<set $cur_slave.total_treasures_found++>>
<<set _treasure_reward to true>>
<</if>>
* Risk *
<<if _client_rating === 1>>
* Risk and Strength Check *
<<set _rng to random(1, 100)>>
<<if _risk_percent >= _rng>>
<<set _rng to random($cur_task.min_strength, $cur_task.max_strength)>>
<<if _rng > $cur_slave.strength + _luck>>
ROBUST CHECK
<<if _cur_slave_trait_names.includes("Robust")>>
<<set _rng to random(1, 100)>>
<<if _rng <= setup.robust.percent>>
<<set _robust_trigger to true>>
<<else>>
<<set $cur_slave.injured to true>>
<<set $cur_slave.injured_cd to random($cur_task.min_injured, $cur_task.max_injured)>>
SOFT TRAIT
<<if _cur_slave_trait_names.includes("Soft")>>
<<set $cur_slave.injured_cd *= setup.soft.mult>>
<</if>>
<</if>>
<<else>>
<<set $cur_slave.injured to true>>
<<set $cur_slave.injured_cd to random($cur_task.min_injured, $cur_task.max_injured)>>
SOFT TRAIT
<<if _cur_slave_trait_names.includes("Soft")>>
<<set $cur_slave.injured_cd *= setup.soft.mult>>
<</if>>
<</if>>
<</if>>
<</if>>
VIRGIN TRAIT
<<if _cur_slave_trait_names.includes(setup.virginity.name)>>
<<if setup.prostitution_sex_list[$cur_task.sex_punishment].virgin_able">>
REMOVE VIRGINITY TRAIT
<<for _i = 0; _i < $cur_slave.positive_traits.length; _i++>>
<<if $cur_slave.positive_traits[_i].name === setup.virginity.name>>
<<set _remove to $cur_slave.positive_traits.deleteAt(_i)>>
<<break>>
<</if>>
<</for>>
<<set $cur_slave.positive_traits.push(setup.loathing)>>
<<set _virgin_neg_trigger to true>>
<</if>>
<</if>>
<</if>>
* Gold Modifiers *
MULT GOLD BY EXTRA ENERGY
<<if _client_rating >= 2>>
<<if _extra_energy > $cur_task.max_mult>>
<<set _amount to Math.round(_gold_earned * $cur_task.max_mult)>>
<<set _gold_earned += _amount>>
<<set _max_energy_bonus to true>>
<<else>>
<<set _amount to Math.round(_gold_earned * _extra_energy)>>
<<set _gold_earned += _amount>>
<</if>>
<</if>>
POSITIVE TRAITS
BRIGHT
<<if _cur_slave_trait_names.includes("Bright")>>
<<set _amount to Math.round(_gold_earned * setup.bright.float)>>
<<set _gold_earned += _amount>>
<</if>>
DIFFICULTY MOD
<<set _amount to Math.round(_gold_earned * _gold_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _gold_earned += _amount>>
<<case "brutal">>
<<set _gold_earned -= _amount>>
<</switch>>
*Update Slave Stats*
TASK STAT
<<switch $cur_task.seeking>>
<<case "Libido">>
LIBIDO GROWTH
<<if $cur_slave.libido < $cur_slave.libido_limit && _client_rating > 1>>
---CALC AMOUNT---
<<set _libido_growth to $cur_task.stat_growth * $cur_slave.libido_growth_rate>>
---STAT GROWTH MODIFIERS---
LOYAL
<<if _cur_slave_trait_names.includes("Loyal")>>
<<if $cur_slave.love >= setup.loyal.love_req>>
<<set _libido_growth *= setup.loyal.mult>>
<</if>>
<</if>>
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _amount to _libido_growth * setup.loathing.float>>
<<set _libido_growth -= _amount>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.libido_tracker += _libido_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.libido_tracker >= $cur_slave.libido_tracker_limit>>
<<set _libido_trigger to true>>
<<set $cur_slave.libido++>>
<<set $cur_slave.libido_tracker to 0>>
<<set $cur_slave.libido_tracker_limit to Math.trunc(($cur_slave.libido * $cur_slave.libido * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
<<case "Strength">>
STRENGTH GROWTH
<<if $cur_slave.strength < $cur_slave.strength_limit && _client_rating > 1>>
---CALC AMOUNT---
<<set _strength_growth to $cur_task.stat_growth * $cur_slave.strength_growth_rate>>
---STAT GROWTH MODIFIERS---
MOTIVATED
<<if _cur_slave_trait_names.includes("Motivated")>>
<<if $cur_slave.love >= setup.loyal.love_req>>
<<set _strength_growth *= setup.motivated.mult>>
<</if>>
<</if>>
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _amount to _strength_growth * setup.loathing.float>>
<<set _strength_growth -= _amount>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.strength_tracker += _strength_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.strength_tracker >= $cur_slave.strength_tracker_limit>>
<<set _strength_trigger to true>>
<<set $cur_slave.strength++>>
<<set $cur_slave.strength_tracker to 0>>
<<set $cur_slave.strength_tracker_limit to Math.trunc(($cur_slave.strength * $cur_slave.strength * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
<<case "Intelligence">>
INTELLIGENCE GROWTH
<<if $cur_slave.intelligence < $cur_slave.intelligence_limit && _client_rating > 1>>
---CALC AMOUNT---
<<set _intelligence_growth to $cur_task.stat_growth * $cur_slave.intelligence_growth_rate>>
---STAT GROWTH MODIFIERS---
MOTIVATED
<<if _cur_slave_trait_names.includes("Motivated")>>
<<if $cur_slave.love >= setup.loyal.love_req>>
<<set _intelligence_growth *= setup.motivated.mult>>
<</if>>
<</if>>
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _amount to _intelligence_growth * setup.loathing.float>>
<<set _intelligence_growth -= _amount>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.intelligence_tracker += _intelligence_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.intelligence_tracker >= $cur_slave.intelligence_tracker_limit>>
<<set _intelligence_trigger to true>>
<<set $cur_slave.intelligence++>>
<<set $cur_slave.intelligence_tracker to 0>>
<<set $cur_slave.intelligence_tracker_limit to Math.trunc(($cur_slave.intelligence * $cur_slave.intelligence * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
<</switch>>
OBEDIENCE GROWTH
<<if $cur_slave.obedience < $cur_slave.obedience_limit>>
---CALC AMOUNT---
<<set _obedience_growth to $cur_task.obedience_growth * $cur_slave.obedience_growth_rate>>
---STAT GROWTH MODIFIERS---
LOYAL
<<if _cur_slave_trait_names.includes("Loyal")>>
<<if $cur_slave.love >= setup.loyal.love_req>>
<<set _obedience_growth *= setup.loyal.mult>>
<</if>>
<</if>>
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _amount to _obedience_growth * setup.loathing.float>>
<<set _obedience_growth -= _amount>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.obedience_tracker += _obedience_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.obedience_tracker >= $cur_slave.obedience_tracker_limit>>
<<set _obedience_trigger to true>>
<<set $cur_slave.obedience++>>
<<set $cur_slave.obedience_tracker to 0>>
<<set $cur_slave.obedience_tracker_limit to Math.trunc(($cur_slave.obedience * $cur_slave.obedience * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
ENERGY GROWTH
<<if $cur_slave.energy < $cur_slave.energy_limit>>
---CALC AMOUNT---
<<set _energy_growth to $cur_task.energy_growth * $cur_slave.energy_growth_rate>>
---STAT GROWTH MODIFIERS---
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _amount to _energy_growth * setup.loathing.float>>
<<set _energy_growth -= _amount>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.energy_tracker += _energy_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.energy_tracker >= $cur_slave.energy_tracker_limit>>
<<set _energy_trigger to true>>
<<set $cur_slave.energy++>>
<<set $cur_slave.cur_energy++>>
<<set $cur_slave.energy_tracker to 0>>
<<set $cur_slave.energy_tracker_limit to Math.trunc(($cur_slave.energy * $cur_slave.energy * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
ADD GOLD TO PLAYER
<<set $pc_gold += _gold_earned>>
<<set $pc_total_gold_earned += _gold_earned>>
SLAVE STATS
<<set $cur_slave.total_tasks++>>
<<set $cur_slave.total_gold_earned += _gold_earned>>
RESTORE ENERGY
<<set $cur_slave.cur_energy to $cur_slave.energy>>
<<set _name to $cur_slave.name>>
*Display*
<</silently>>\
<div id="section">\
<div id="titlebox">\
_name
</div>\
<div class="centered">\
_pic
</div>\
<div id="textbox">\
<<if _luck === 1>>\
_name's effort was exceptional. \
<<elseif _luck === 0>>\
_name's effort was average. \
<<else>>\
_name's effort was poor. \
<</if>>\
<<if _client_rating === 3>>\
$cur_task.best_text
<<if _treasure_reward === true>>\
She earned <span style="color:gold">_gold_earned Gold</span> from the task. <<if _max_energy_bonus === true>>She had plenty of energy so she worked extra hard, earning extra <span style="color:gold">Gold</span>.<</if>> She was also given a <span style="color:gold">$cur_task.treasure_reward.name</span> as a gift for her work.
<<else>>\
She earned <span style="color:gold">_gold_earned Gold</span> from the task. <<if _max_energy_bonus === true>>She had plenty of energy so she worked extra hard, earning extra <span style="color:gold">Gold</span>.<</if>>
<</if>>\
<<elseif _client_rating === 2>>\
$cur_task.average_text
<<if _treasure_reward === true>>\
She earned <span style="color:gold">_gold_earned Gold</span> from the task. <<if _max_energy_bonus === true>>She had plenty of energy so she worked extra hard, earning extra <span style="color:gold">Gold</span>.<</if>> She was also given a <span style="color:gold">$cur_task.treasure_reward.name</span> as a gift for her work.
<<else>>\
She earned <span style="color:gold">_gold_earned Gold</span> from the task. <<if _max_energy_bonus === true>>She had plenty of energy so she worked extra hard, earning extra <span style="color:gold">Gold</span>.<</if>>
<</if>>\
<<else>>\
$cur_task.worst_text
She only earned <span style="color:gold">_gold_earned Gold</span> from the task.
<</if>>\
<<if _robust_trigger === true>>\
Because she is <<hovertip "<<-setup.robust.tooltip>>">>Robust<</hovertip>>, she was not injured.
<<elseif $cur_slave.injured === true>>\
She has been injured and needs $cur_slave.injured_cd <<if $cur_slave.injured_cd === 1>>day<<else>>days<</if>> to recover.
<</if>>\
<<if _virgin_neg_trigger === true>>\
$cur_slave.name lost her virginity, because she wasn't ready to lose it, <span style="color:red">she has gained a new negative Trait</span>.
<</if>>\
<<if _libido_trigger === true>>\
$cur_slave.name's <span style="color:fuchsia">Libido</span> stat has increased. <<if $cur_slave.libido === $cur_slave.libido_limit>>Her <span style="color:fuchsia">Libido</span> cannot go any higher.<</if>>
<</if>>\
<<if _strength_trigger === true>>\
$cur_slave.name's <span style="color:orange">Strength</span> stat has increased. <<if $cur_slave.strength === $cur_slave.strength_limit>>Her <span style="color:orange">Libido</span> cannot go any higher.<</if>>
<</if>>\
<<if _intelligence_trigger === true>>\
$cur_slave.name's <span style="color:darkorchid">Intelligence</span> stat has increased. <<if $cur_slave.intelligence === $cur_slave.intelligence_limit>>Her <span style="color:darkorchid">Intelligence</span> cannot go any higher.<</if>>
<</if>>\
<<if _obedience_trigger === true>>\
$cur_slave.name's <span style="color:cyan">Obedience</span> stat has increased. <<if $cur_slave.obedience === $cur_slave.obedience_limit>>Her <span style="color:cyan">Obedience</span> cannot go any higher.<</if>>
<</if>>\
<<if _energy_trigger === true>>\
$cur_slave.name's <span style="color:mediumseagreen">Energy</span> stat has increased. <<if $cur_slave.energy === $cur_slave.energy_limit>>Her <span style="color:mediumseagreen">Energy</span> cannot go any higher.<</if>>
<</if>>\
<<if $long_task_events.length > 0>>\
<<set $cur_task to $long_task_events.shift()>>\
<<set _slave_num to $task_events_room_num.shift()>>\
<<link [[Start Day|$cur_task.passage]]>>
<<silently>>\
<<switch _slave_num>>
<<case 1>>
<<set $cur_slave to $slave_room_1>>
<<set $cur_slave_num to 1>>
<<case 2>>
<<set $cur_slave to $slave_room_2>>
<<set $cur_slave_num to 2>>
<<case 3>>
<<set $cur_slave to $slave_room_3>>
<<set $cur_slave_num to 3>>
<<case 4>>
<<set $cur_slave to $slave_room_4>>
<<set $cur_slave_num to 4>>
<<case 5>>
<<set $cur_slave to $slave_room_5>>
<<set $cur_slave_num to 5>>
<<case 6>>
<<set $cur_slave to $slave_room_6>>
<<set $cur_slave_num to 6>>
<<case 7>>
<<set $cur_slave to $slave_room_7>>
<<set $cur_slave_num to 7>>
<<case 8>>
<<set $cur_slave to $slave_room_8>>
<<set $cur_slave_num to 8>>
<<case 9>>
<<set $cur_slave to $slave_room_9>>
<<set $cur_slave_num to 9>>
<<case 10>>
<<set $cur_slave to $slave_room_10>>
<<set $cur_slave_num to 10>>
<</switch>>
<</silently>>\
<</link>>\
<<else>>\
[[Start Day|Main Menu]]
<</if>>\
</div>\
</div>\
<<silently>>\
---UPDATE SLAVE---
<<switch $cur_slave_num>>
<<case 1>>
<<set $slave_room_1 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 2>>
<<set $slave_room_2 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 3>>
<<set $slave_room_3 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 4>>
<<set $slave_room_4 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 5>>
<<set $slave_room_5 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 6>>
<<set $slave_room_6 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 7>>
<<set $slave_room_7 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 8>>
<<set $slave_room_8 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 9>>
<<set $slave_room_9 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 10>>
<<set $slave_room_10 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<</switch>>
<</silently>>\
<<silently>>\
*Variables*
<<set _gold_mod to 0.1>> increase or decrease the amount of gold earned based on difficulty
<<set _min_gold to $cur_task.min_gold>>
<<set _max_gold to $cur_task.max_gold>>
DIFFICULTY MOD
<<switch $difficulty>>
<<case "casual">>
<<set _amount to Math.round(_min_gold * _gold_mod)>>
<<set _min_gold += _amount>>
<<set _amount to Math.round(_max_gold * _gold_mod)>>
<<set _max_gold += _amount>>
<<case "brutal">>
<<set _amount to Math.round(_min_gold * _gold_mod)>>
<<set _min_gold -= _amount>>
<<set _amount to Math.round(_max_gold * _gold_mod)>>
<<set _max_gold -= _amount>>
<</switch>>
*Set Minimum Requirements*
<<if _min_gold < 1>>
<<set _mix_gold to 1>>
<</if>>
<<if _max_gold < 1>>
<<set _max_gold to 1>>
<</if>>
*Display*
<</silently>>\
<div id="section">\
<div id="cardholder-capture-study">\
<div id="titlebox">\
$cur_task.name
</div>\
<div id="textbox-left">\
Difficulty: $cur_task.difficulty
Task Type: $cur_task.type
Stat Used: $cur_task.seeking
<<if $cur_task.days === 1>>\
Completion Time: $cur_task.days Day
<<elseif $cur_task.days > 1>>\
Completion Time: $cur_task.days Days
<</if>>\
Obedience Required: $cur_task.obedience_req
Energy Required: $cur_task.energy_req
Estimated Gold Earned: _min_gold ~ _max_gold
Improves: $cur_task.seeking, Obedience, and Energy
</div>\
<div id="titlebox">\
Description
</div>\
<div id="textbox-left">\
$cur_task.description
</div>\
</div>\
<div class="exit-link-right">\
[[Back|Assign Slave Task]]
</div>\
</div>\<<silently>>\
* Variables *
<<set _newName to clone($cur_slave.name)>>
<<for _f = 0; _f < $cur_slave.slave_pack.face.length; _f++>>
<<if $cur_slave.slave_pack.face[_f] === $cur_slave.pic>>
<<break>>
<</if>>
<</for>>
<<for _b = 0; _b < $cur_slave.slave_pack.slave.length; _b++>>
<<if $cur_slave.slave_pack.slave[_b] === $cur_slave.body_pic>>
<<break>>
<</if>>
<</for>>
* Display *
<</silently>>\
<div class="wrapper">\
<div class="titlebox">\
$cur_slave.name's Info
</div>\
<div class="namebox-slaveinfo">\
Requires @@.love;<<- setup.slaveNameReq>>@@ or more @@.love;Love@@ to change
Name: <<if $cur_slave.love < setup.slaveNameReq>>$cur_slave.name<<else>><<textbox "_newName" $cur_slave.name autofocus>><</if>>
</div>\
<div class="container-slaveinfo">\
<div class="cardholder-slaveinfo">\
<div class="buttonbox-slaveinfo">\
Requires @@.love;<<- setup.slavePicReq>>@@ or more @@.love;Love@@ to change
<<if $cur_slave.love < setup.slavePicReq>>\
<div class="offbutton">\
<<button "<">><</button>> <<button ">">><</button>>
</div>\
<<else>>\
<span id="left"><<button "<">><<set _f-->><<if _f < 0>><<set _f to $cur_slave.slave_pack.face.length - 1>><</if>><<replace "#facepic">>$cur_slave.slave_pack.face[_f]<</replace>><</button>></span> <span id="right"><<button ">">><<set _f++>><<if _f === $cur_slave.slave_pack.face.length>><<set _f to 0>><</if>><<replace "#facepic">>$cur_slave.slave_pack.face[_f]<</replace>><</button>></span>
<</if>>\
</div>\
<div class="imagebox-slaveinfo">\
<div id="facepic">\
$cur_slave.slave_pack.face[_f]
</div>\
</div>\
</div>\
<div class="cardholder-slaveinfo">\
<div class="buttonbox-slaveinfo">\
Requires @@.love;<<- setup.slavePicReq>>@@ or more @@.love;Love@@ to change
<<if $cur_slave.love < setup.slavePicReq>>\
<div class="offbutton">\
<<button "<">><</button>> <<button ">">><</button>>
</div>\
<<else>>\
<span id="shiftleft"><<button "<">><<set _b-->><<if _b < 0>><<set _b to $cur_slave.slave_pack.slave.length - 1>><</if>><<replace "#bodypic">>$cur_slave.slave_pack.slave[_b]<</replace>><</button>></span> <span id="shiftright"><<button ">">><<set _b++>><<if _b === $cur_slave.slave_pack.slave.length>><<set _b to 0>><</if>><<replace "#bodypic">>$cur_slave.slave_pack.slave[_b]<</replace>><</button>></span>
<</if>>\
</div>\
<div class="imagebox-slaveinfo">\
<div id="bodypic">\
$cur_slave.slave_pack.slave[_b]
</div>\
</div>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Slave Room]]>><</button>></span> <span id="forward"><<button [[Update Slave|Slave Room]]>>\
<<silently>>\
<<set $cur_slave.name to _newName>>
<<set $cur_slave.pic to $cur_slave.slave_pack.face[_f]>>
<<set $cur_slave.body_pic to $cur_slave.slave_pack.slave[_b]>>
<</silently>>\
<</button>></span>\
</div>\
</div>\<<silently>>\
*Variables*
<<set _gold_mod to 0.1>> increase or decrease the amount of gold earned based on difficulty
<<set _min_gold to $cur_task.min_gold>>
<<set _max_gold to $cur_task.max_gold>>
DIFFICULTY MOD
<<switch $difficulty>>
<<case "casual">>
<<set _amount to Math.round(_min_gold * _gold_mod)>>
<<set _min_gold += _amount>>
<<set _amount to Math.round(_max_gold * _gold_mod)>>
<<set _max_gold += _amount>>
<<case "brutal">>
<<set _amount to Math.round(_min_gold * _gold_mod)>>
<<set _min_gold -= _amount>>
<<set _amount to Math.round(_max_gold * _gold_mod)>>
<<set _max_gold -= _amount>>
<</switch>>
*Set Minimum Requirements*
<<if _min_gold < 1>>
<<set _mix_gold to 1>>
<</if>>
<<if _max_gold < 1>>
<<set _max_gold to 1>>
<</if>>
*Display*
<</silently>>\
<div id="section">\
<div id="cardholder-capture-study">\
<div id="titlebox">\
$cur_task.name
</div>\
<div id="textbox-left">\
Difficulty: $cur_task.difficulty
Obedience Required: $cur_task.obedience_req
Energy Required: $cur_task.energy_req
Stat Used: $cur_task.seeking
<<if $cur_task.days === 1>>\
Completion Time: $cur_task.days Day
<<elseif $cur_task.days > 1>>\
Completion Time: $cur_task.days Days
<</if>>\
Number of Clients: $cur_task.num_of_clients
Sex Type: <<-setup.prostitution_sex_list[$cur_task.sex_wanted].name>>
Estimated Gold Earned: _min_gold ~ _max_gold + Sexual Service Gold
Improves: Libido, Strength, Intelligence, Obedience, and Energy
</div>\
<div id="titlebox">\
Description
</div>\
<div id="textbox-left">\
$cur_task.description
</div>\
</div>\
<div class="exit-link-right">\
[[Back|Assign Slave Task]]
</div>\
</div>\<<silently>>\
*Variables*
*Display*
<</silently>>\
<div class="wrapper">\
<div class="titlebox">\
Quick Guide
</div>\
<div class="guidebook-titlebox">
</div>
<div class="guidebook-textbox">\
As a Dungeon Lord, you control every aspect of your lewd Dungeon. Use your resources to build rooms for your Creatures and Traps to defend your Vault from Raiders who come to your Dungeon looking for @@.gold;Gold@@ and @@.gold;Treasure@@. Capture Raiders to protect your Vault using your Creatures, Traps, and Spells. Raiders will go through each Floor of your Dungeon until they Clear your Dungeon, get Captured, or Abandon the Dungeon.
Capturing Raiders earns you @@.gold;Gold@@ and possibly @@.gold;Treasures@@. Fuck Raiders to gain EXP or make them your Slaves if you have an available room. Use Slaves to perform various Jobs and Quests to further your Dungeon's development. Send your Slaves to Classes or Train them yourself to increase their stats.
Visit the Town to buy Slaves, Spells, and @@.gold;Treasures@@. You can also sell any Slaves or @@.gold;Treasures@@ for some extra @@.gold;Gold@@. There are additional services in Town for a Dungeon Lord, such as hiring Raiders or managing your Threat.
Increase your Dungeon's @@.rep;Reputation@@ to increase your Dungeon's Rank. As you rank up, more Creatures, Traps, Spells, and Amenities will become available. Maintain your @@.rep;Reputation@@ and Vault to keep the Raiders coming and become the world's most well-known Dungeon Lord.
This is a very brief summary of the responsibilities of a Dungeon Lord. Please use the rest of the Guidebook to learn more.
</div>\
<div class="exit-link-right">\
<span id="left"><<button [[<|Guidebook]]>><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="right"><<button [[>|Reputation]]>><<set $page to 1>><</button>></span>
</div>\
</div>\<<silently>>
*Variables*
<<if !$page>>
<<set $page to 1>>
<</if>>
*Display*
<</silently>>
<<switch $page>>
<<case 1>>
<div class="wrapper">
<div class="titlebox">
Raids
</div>
<div class="guidebook-titlebox">
</div>
<div class="guidebook-textbox">
Raids are when Raiders come to your Dungeon and attempt to loot your Vault. The number of Raiders that show are is based on your @@.rep;Reputation@@ and Dungeon Rank, while the Rank of the Raiders is deteremined by your Threat and Dungeon Rank. During Raids, you observe one or a group of Raiders go from floor to floor, battling Creatures or dealing with Traps. Between each floor, you view the Raiders, your Dungeon, or cast Spells. When all the Raiders have finished their Raid, you will see a summary of everything that happened that night, which can also been seen in your Quarters under Previous Report.
</div>
<div class="wrapper-guidebook-table">
<div class="guidebook-header">
Raid Chapters
</div>
<div class="guidebook-smalltable">
<ol>
<li><<link [[Preparation|Raids]]>><<set $page to 2>><</link>></li>
<li><<link [[Encounters|Raids]]>><<set $page to 3>><</link>></li>
<li><<link [[Dungeon Entrance & Between Floors|Raids]]>><<set $page to 4>><</link>></li>
<li><<link [[Capturing Raiders|Raids]]>><<set $page to 5>><</link>></li>
<li><<link [[Clearing or Abandoning your Dungeon|Raids]]>><<set $page to 6>><</link>></li>
</ol>
</div>
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Dungeon Rank]]>><<set $page to 1>><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Raids]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 2>>
<div class="wrapper">
<div class="titlebox">
Raids
</div>
<div class="guidebook-titlebox">
Preparation
</div>
<div class="guidebook-textbox">
While most of the action takes place during the Raids, there is still plenty to do during the day before the Raid starts. Use this time to prepare your Dungeon, either by expanding it, summoning Creatures, constructing Traps, or making sure all the Floors are laid out in the order you want. Remember, the Raiders start on Floor One and continue in order from there. Don't spend all your @@.gold;Gold@@ before a Raid because if a Raider Clears your Dungeon and there is no loot for her, @@.bad;your Reputation will be heavily damaged!@@<br>
<br>
If you want to attract more Raiders to your Dungeon, the Adventurer's Guild in Town allows you to Hire Raiders from a certain Class to Raid your Dungeon. The amount of @@.gold;Gold@@ it costs to Hire a Raider depends on their Rank. Additionally, there are @@.gold;Treasures@@ that can Lure Raiders with various Traits or Rank.<br>
<br>
At the beginning of each day, there is a chance for an event to happen. Be sure to make use of the event, as most only last for one day. If you forgot what event occurred for that day, be sure to check your Event Tracker on the Main Menu.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Raids]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Raids]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 3>>
<div class="wrapper">
<div class="titlebox">
Raids
</div>
<div class="guidebook-titlebox">
Encounters
</div>
<div class="guidebook-textbox">
When a Raider or a group of Raiders enters a Floor with a Creature or Trap, it is called an Encounter. Encounters vary between Creatures and Traps, but here is the general rule of how things work when Raiders Encounter Creatures and Traps.<br>
<br>
Against Creatures, all Raiders and the Creature deal damage at the same time. @@.phy;Physical@@ and @@.mag;Magical@@ damage reduce @@.health;Health@@ while @@.sex;Sexual@@ damage increases Raider's @@.lust;Lust@@. Raiders have a small chance to land a Critical Hit or Critical Fail. Critical Hits deal more damage while Critical Fails deal less damage. If a Raider loses all their @@.health;Health@@ or their @@.lust;Lust@@ becomes full, they are Captured. Creatures gain a small amount of EXP for each Raider they Encounter, gaining bonus EXP if they Capture them. Raiders who are not Captured and have not Abandoned their Raid after the Encounter move on. Be sure to read each Creature's Description to learn how best to use them.<br>
<br>
Traps work differently since they do not fight the Raiders and rely on the Raiders triggering the Trap before dealing damage or applying effects. Before anything happens, the Raiders have to pass the @@.trap;Trapcheck@@ or @@.spell;Spellcheck@@. Raiders have a small chance to Critically Succeed or Critically Fail. Critical Successes will always pass the Check, while Critical Fails will always fail the Check. If they fail, the Trap will trigger, dealing damage or applying its effects. Most Traps do not Capture Raiders or have special requirements before they can. This will be mentioned in the Trap's Description, so read it to learn how to best optimize each Trap. Since a Trap's Rank is tied to the Dungeon's Rank, they gain no EXP.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Raids]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Raids]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 4>>
<div class="wrapper">
<div class="titlebox">
Raids
</div>
<div class="guidebook-titlebox">
Dungeon Entrance & Between Floors
</div>
<div class="guidebook-textbox">
As the Dungeon Lord, you won't be fighting the Raiders head-on. However, when the party enters the Dungeon and after each Floor, you will have time to assess the situation and perform a variety of actions.<br>
<ul>
<li><u>Spells</u>: The most effective way to help your Dungeon out is by casting Spells. Spells can have a variety of effects such as healing or buffing your Units, damaging Raiders, inflicting Statuses, and Summoning Creatures.</li>
<li><u>Upgrading Creatures</u>: All Creatures can upgrade into one of three different Upgrades when they reach a certain level. Upgrading a Creature will restore it to full @@.health;Health@@, in addition to other benefits based on the Upgrade. It can be wise to wait to Upgrade a Creature until it is needed.</li>
<li><u>Trap Modes</u>: Some Traps have multiple modes that will change various things about them. You can switch the mode of any Trap as long as the Trap allows you to do so during a Raid.</li>
<li><u>View Raiders</u>: You can view the Raiders in your Dungeon, seeing their Class, Rank, Role, Traits, Statuses, and Fetishes. This can give you an advantage by exploiting their weaknesses or avoiding their strengths.</li>
</ul>
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Raids]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Raids]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 5>>
<div class="wrapper">
<div class="titlebox">
Raids
</div>
<div class="guidebook-titlebox">
Capturing Raiders
</div>
<div class="guidebook-textbox">
Capturing Raiders is essential to earn @@.gold;Gold@@, @@.gold;Treasure@@, EXP, @@.rep;Reputation@@, and possibly a new Slave. Raiders become Captured once their @@.health;Health@@ is reduced to 0 or their @@.lust;Lust@@ is maxed. Creatures are best at Capturing Raiders, but some Traps are also capable of Capturing. Once a Raider is Captured, their Raid is over and you are rewarded with their @@.gold;Gold@@ and @@.gold;Treasure@@ if they have one. After all the Raiders finish their Raid, you'll be able to decide what to do with all the Raiders you Captured.<br>
<ul>
<li><u>Enslaving</u>: If you have an available Slave room, you can Enslave one of them, making them a new Slave. If you choose to Enslave one, your Threat will increase and your @@.rep;Reputation@@ will be damaged.</li>
<li><u>Fucking</u>: You can fuck any Captured Raider, gaining EXP. The stronger Raiders is, the more EXP they give. Fucking Raiders reduces the amount of @@.rep;Reputation@@ gained and increases the amount of Threat gained from Capturing them.</li>
<li><u>Releasing</u>: The last option is to Release all remaining Captured Raiders. You won't gain any EXP, but Releasing Raiders earn you the most @@.rep;Reputation@@ and increase your Threat by the least compared to the other options.</li>
</ul>
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Raids]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Raids]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 6>>
<div class="wrapper">
<div class="titlebox">
Raids
</div>
<div class="guidebook-titlebox">
Clearing or Abandoning your Dungeon
</div>
<div class="guidebook-textbox">
Raiders can complete their Raid by either Clearing your Dungeon or Abandoning it. Clearing your Dungeon means the Raider has reached the Vault, stealing your @@.gold;Gold@@ and a @@.gold;Treasure@@. This will also reduce your Threat and damage your @@.rep;Reputation@@ slightly if your Vault had @@.gold;Gold@@ and @@.gold;Treasure@@ to loot. If your Vault did not have enough @@.gold;Gold@@ or @@.gold;Treasures@@ to satisfy the Raider, @@.bad;your Reputation will be heavily damaged!@@<br>
<br>
Raiders can also Abandon their Raid by teleporting back to Town. Various Traits, Creatures, Traps, or Spells can cause a Raider to choose to Abandon their Raid. After a Raider Abandons their Raid, you earn a small amount of @@.rep;Reputation@@, but you don't get their @@.gold;Gold@@ or @@.gold;Treasure@@.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Raids]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Raiders]]>><<set $page to 1>><</button>></span>
</div>
</div>
<</switch>><<silently>>
*Variables*
<<if !$page>>
<<set $page to 1>>
<</if>>
*Display*
<</silently>>
<<switch $page>>
<<case 1>>
<div class="wrapper">
<div class="titlebox">
Slaves
</div>
<div class="guidebook-titlebox">
</div>
<div class="guidebook-textbox">
Every Dungeon Lord needs Slaves to do his bidding around the Dungeon and in Town. They are essential to increase your productivity. They can increase your EXP, earn @@.gold;Gold@@, @@.gold;Treasure@@, or @@.rep;Reputation@@, and support your Creatures or Traps. Their stats increase by doing Tasks, Training them, or sending them to a Class in the Slave Market. It is important to keep their stats and Traits in mind to get the most out of them.
</div>
<div class="wrapper-guidebook-table">
<div class="guidebook-header">
Slave Chapters
</div>
<div class="guidebook-smalltable">
<ol>
<li><<link [[The Basics|Slaves]]>><<set $page to 2>><</link>></li>
<li><<link [[Stats & Sex Stats|Slaves]]>><<set $page to 3>><</link>></li>
<li><<link [[Traits|Slaves]]>><<set $page to 4>><</link>></li>
<li><<link [[Jobs|Slaves]]>><<set $page to 5>><</link>></li>
<li><<link [[Quests|Slaves]]>><<set $page to 6>><</link>></li>
<li><<link [[Classes|Slaves]]>><<set $page to 7>><</link>></li>
<li><<link [[Other Actions|Slaves]]>><<set $page to 8>><</link>></li>
</ol>
</div>
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Equipments]]>><<set $page to 1>><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Slaves]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 2>>
<div class="wrapper">
<div class="titlebox">
Slaves
</div>
<div class="guidebook-titlebox">
The Basics
</div>
<div class="guidebook-textbox">
Slaves are girls that live in your Dungeon and can be assigned various tasks. After these tasks are completed, you or the Slave will earn some reward based on the task that was completed and how well it was done. You can get Slaves by Capturing and Enslaving Raiders or by purchasing them from the Slave Market in Town. Enslaving a Raider is free, but she will start Disobedient, while a Slave from the Slave Market costs @@.gold;Gold@@ but will work for you right away. Disobedient Slaves refuse to work for you until you reduce their @@.stress;Stress@@ to @@.stress;0@@. @@.stress;Stress@@ accumulates while the Slave performs her duties and once it reaches @@.stress;100@@, she will become Disobedient. You can reduce @@.stress;Stress@@ by giving her the Day Off or by Discipling her if she is Disobedient, both options can be found in her Room. Slaves also lose @@.stress;Stress@@ and gain @@.love;Love@@ EXP at the end of each night.<br>
<br>
There are different types of work that you can assign your Slaves. Jobs are performed daily as long as they aren't busy, Injured, Disobedient, or have the Day Off. Quests are temporary and offer a larger reward, but are more difficult than Jobs. Classes cost @@.gold;Gold@@ to sign up for, but are the best way to quickly increase your Slaves' Stats. You can also Train your Slaves yourself, increasing the Sex Stats of your choice. Any of these tasks will increase their @@.stress;Stress@@, so be mindful that you don't push your Slaves too much and they become Disobedient. All of these topics will be covered in more detail in the following chapters.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Slaves]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Slaves]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 3>>
<div class="wrapper">
<div class="titlebox">
Slaves
</div>
<div class="guidebook-titlebox">
Stats & Sex Stats
</div>
<div class="guidebook-textbox">
Slaves have 5 Stats: @@.love;Love@@, @@.obe;Obedience@@, @@.libido;Libido@@, @@.str;Strength@@, and @@.intel;Intelligence@@. They increase slowly as the Slave performs Jobs and Quests but can be increased quickly through Classes, assuming they pass the Class. Some Stats play a small role in all activities, while others determine the outcome of Jobs, Quests, and Classes.<br>
<br>
<ul>
<li><<- setup.slave_stats.love.tooltip>></li>
<li><<- setup.slave_stats.obedience.tooltip>></li>
<li><<- setup.slave_stats.libido.tooltip>></li>
<li><<- setup.slave_stats.strength.tooltip>></li>
<li><<- setup.slave_stats.intelligence.tooltip>></li>
</ul>
<br>
Slaves also have 8 Sex Stats: Handjob, Blowjob, Titjob, Footjob, Missionary, Cowgirl, Doggy, and Anal. These affect the outcome of Service and Prostitution Jobs that use the Sex Stat and increase from performing these actions and from Training in the Slave's Room.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Slaves]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Slaves]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 4>>
<div class="wrapper">
<div class="titlebox">
Slaves
</div>
<div class="guidebook-titlebox">
Traits
</div>
<div class="guidebook-textbox">
Like Raiders, Slaves have Traits that modify different aspects of them. Slaves have two positive Traits and one negative Trait. Hover over the <<hovertip "The description will be here">>Trait<</hovertip>> to see what it does. It is important to keep each of your Slaves' Traits in mind to understand how best to utilize them.<br>
<br>
Some Traits are unique to Captured Raiders or in the Slave Market. Traits that are @@.limegreen;green@@ can only be obtained from Captured Raiders while @@.royalblue;blue@@ Traits can only be found in the Slave Market. @@.gold;Gold@@ Traits are rare and can be found from either Captured Raiders or in the Slave Market. The <<hovertip "<<-setup.virginity.tooltip>>">>Virgin<</hovertip>> Trait is always kept from Raider to Slave.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Slaves]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Slaves]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 5>>
<div class="wrapper">
<div class="titlebox">
Slaves
</div>
<div class="guidebook-titlebox">
Jobs
</div>
<div class="guidebook-textbox">
Your Slaves can be assigned a Job that they perform before each Raid if they are not Injured, Disobedient, have the Day Off, in a Class, or on a Quest. There are four different Job Types: Service, Prostitution, Caretaking, and Maintenance. As your Dungeon Rank increases and your Slaves gain more Stats, more Jobs will become available. A Slave needs the required Stats before she can be assigned that Job. Jobs with higher Stat requirements offer better rewards but have more risk. Performing Jobs increases the Slaves' @@.stress;Stress@@ and Incidents increase the amount they gain. Let us go into more depth about each of the Job types.<br>
<br>
<ul>
<li><u>Service</u>: Assign a Slave to assist the Dungeon Lord and pleasure them. The Slave performs the chosen sexual act and grants you EXP based on her @@.love;Love@@, @@.libido;Libido@@, and the Sex Stat being used. The Slave gains EXP for her @@.love;Love@@, @@.obe;Obedience@@, @@.libido;Libido@@, and the Sex Skill used. Your Slaves cannot become Injured from working Service Jobs.</li>
<li><u>Prostitution</u>: Assign a Slave to be a prostitute in Town, earning @@.gold;Gold@@. When you assign a Slave to a Prostitution Job, you will choose which sexual acts she will agree to perform. The Slave will then need to find a Client, using her @@.libido;Libido@@. Once she has found a Client, the Client will request for her to perform a specific sexual act. If the request is one of the sexual acts you have assigned her, she will agree. Otherwise, the Client will continue making requests until she agrees to one of them. The amount of @@.gold;Gold@@ he pays depends on her @@.libido;Libido@@, Sex stat being used, and if he got his desired choice of service. The Client may also be a Rapiest, trying to have his way and not pay her. Her @@.intel;Intelligence@@ helps her avoid these Incidents while her @@.str;Strength@@ increases her chance to avoid becoming Injured during an Incident. There is also a chance that your Slave finds a group, earning a lot of @@.gold;Gold@@ and EXP, but being forced into sexual acts and risk becoming Injured. The Slave gains EXP for her @@.obe;Obedience@@, @@.libido;Libido@@, and each Sex Skill used.</li>
<li><u>Caretaking</u>: Assign a Slave to take care of one of your Creatures. The Creature gains a temporary buff to all its Stats based on her @@.str;Strength@@. The Creature might attack her, causing her to become Injured. Her @@.intel;Intelligence@@ helps her avoid these Incidents while her @@.str;Strength@@ increases her chance to avoid becoming Injured during an Incident. The Slave gains EXP for her @@.obe;Obedience@@, and @@.str;Strength@@.</li>
<li><u>Maintenance</u> : Assign a Slave to maintain one of your Traps. The Trap gains a temporary buff to all its Stats based on her @@.int;Intelligence@@. She might trigger the Trap, causing her to become Injured. Her @@.intel;Intelligence@@ helps her avoid these Incidents while her @@.str;Strength@@ increases her chance to avoid becoming Injured during an Incident. The Slave gains EXP for her @@.obe;Obedience@@, and @@.intel;Intelligence@@.</li>
</ul>
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Slaves]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Slaves]]>><<set $page++>><</button>></span>
</div>
</div>\
<<case 6>>\
<div class="wrapper">
<div class="titlebox">
Slaves
</div>
<div class="guidebook-titlebox">
Quests
</div>
<div class="guidebook-textbox">
Quests are temporary tasks that your Slaves can be assigned from the Quest Board in the Adventurer's Guild. They offer @@.gold;Gold@@, @@.rep;Reputation@@, and even @@.gold;Treasure@@ as rewards. How well a Slave does during her Quest depends on which of her Stats the Quest requires her to use, which can be determined by the Stat Icons on the Quest. If a Slave exceeds expectations, she will get the @@.gold;Treasure@@ as well as extra @@.gold;Gold@@ and @@.rep;Reputation@@. If a Slave passes the Quest, she will earn @@.gold;Gold@@ and @@.rep;Reputation@@. If the Slave fails the Quest, she will only earn some of the @@.gold;Gold@@. As you Rank Up, more difficult Quests will appear on the Quest Board, which are more difficult but offer better rewards. Slaves gain EXP based on the duration of the Quest for her @@.obe;Obedience@@ and each other Stat used. Slaves cannot become Injured while on a Quest.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Slaves]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Slaves]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 7>>
<div class="wrapper">
<div class="titlebox">
Slaves
</div>
<div class="guidebook-titlebox">
Classes
</div>
<div class="guidebook-textbox">
Classes are courses that can give your Slaves EXP for one or more of their Stats. You can sign your Slave up for Classes inside the Slave Market, which costs some @@.gold;Gold@@. Each Class has one or more Stats that the Slave gains EXP for once they have completed. Classes also have Level, which determines how difficult the Class is to pass and how much EXP the Class will give. The grade the Slave scores at the end of the Class depends on their Stats for each Stat the Class is focused on. If a Slave's Stats are much lower than the recommended amount, she likely won't pass the Class and will earn less EXP. Similarly, a Slave who passes a Class because her Stats are much higher than the recommended amount will earn less EXP because the Class was too easy. It is important to sign your Slaves up for Classes with recommended Stats that match their current Stats so they get the most EXP possible from it. Slaves cannot become Injured while taking a Class.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Slaves]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Slaves]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 8>>
<div class="wrapper">
<div class="titlebox">
Slaves
</div>
<div class="guidebook-titlebox">
Other Actions
</div>
<div class="guidebook-textbox">
<ul>
<li><u>Training</u>: Train your Slaves yourself by going into the Slave's Room. Training costs @@.energy;1 Energy@@ and the Slave gains EXP for the chosen Sex Stat as well as for @@.love;Love@@ and @@.obe;Obedience@@. Training the same Slave multiple times on the same day has diminishing returns and she gains more @@.stress;Stress@@. Slaves cannot become Injured while Training.</li>
<li><u>Disciplining</u>: This is very similar to Training but is only available if the Slave is Disobedient. It costs @@.energy;1 Energy@@ and the Slave gains EXP for the chosen Sex Stat as well as for @@.love;Love@@ and @@.obe;Obedience@@. The EXP gained is less than from Training, but their @@.stress;Stress@@ is reduced instead of increased. Like Training, Disciplining the same Slave multiple times on the same day has diminishing returns. Slaves cannot become Injured while being Disciplined.</li>
<li><u>Day Off</u>: If your Slave has a lot of @@.stress;Stress@@, you can choose to give her the Day Off. She won't work her assigned Job and cannot be Trained, sent on a Quest, or take a Class. At the end of the day, she will reduce more @@.stress;Stress@@ and gain more @@.love;Love@@ EXP than usual. Having multiple Days Off in a row will have diminishing returns. It is important to give your Slaves Days Off to quickly reduce their @@.stress;Stress@@ to avoid becoming Disobedient if their @@.stress;Stress@@ reaches @@.stress;100@@.</li>
</ul>
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Slaves]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|AmenityRooms]]>><<set $page to 1>><</button>></span>
</div>
</div>
<</switch>><<silently>>
*Variables*
<<if !$page>>
<<set $page to 1>>
<</if>>
*Display*
<</silently>>
<<switch $page>>
<<case 1>>
<div class="wrapper">
<div class="titlebox">
Town Shops
</div>
<div class="guidebook-titlebox">
</div>
<div class="guidebook-textbox">
The nearby Town has Shops that offer goods and services for anyone, including Dungeon Lords. Some Town Shops will become available after reaching a certain Dungeon Rank.
</div>
<div class="wrapper-guidebook-table">
<div class="guidebook-header">
Town Shop Chapters
</div>
<div class="guidebook-smalltable">
<ol>
<li><<link [[Slave Market|Town Shops]]>><<set $page to 2>><</link>></li>
<li><<link [[Treasure Shop|Town Shops]]>><<set $page to 3>><</link>></li>
<li><<link [[Arcane Emporium|Town Shops]]>><<set $page to 4>><</link>></li>
<li><<link [[Adventurer's Guild|Town Shops]]>><<set $page to 5>><</link>></li>
<li><<link [[Dragonscale Forge|Town Shops]]>><<set $page to 6>><</link>></li>
</ol>
</div>
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|AmenityRooms]]>><<set $page to 5>><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Town Shops]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 2>>
<div class="wrapper">
<div class="titlebox">
Town Shops
</div>
<div class="guidebook-titlebox">
Slave Market
</div>
<div class="guidebook-textbox">
The Slave Market is owned by Anna and is the place to buy or sell Slaves and improve your Slaves by signing them up for Classes. It offers new Slaves every <<- setup.refresh_slave_market_timer>> days and new Classes every <<- setup.slave_class_timer>> days. The prices of Slaves change each day as the value of each Slave Stat changes. There are also Hot Traits that increase the value of Slaves with those Traits. Hot Traits change whenever the Slave Market receives a new shipment of Slaves. Once this happens, any Slaves previously in the Slave Market are gone, so be sure to buy a Slave you are interested in before this happens. As your Dungeon's Rank increases, the Slave Market will offer more and better Slaves and Classes.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Town Shops]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Town Shops]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 3>>
<div class="wrapper">
<div class="titlebox">
Town Shops
</div>
<div class="guidebook-titlebox">
Treasure Shop
</div>
<div class="guidebook-textbox">
The Treasure Shop is owned by Sara and is the only place to buy and sell @@.gold;Treasures@@. Her stock rotates daily so be sure to check it often if you are looking for a particular @@.gold;Treasures@@. As you increase your Dungeon's Rank, she will stock more and rarer @@.gold;Treasures@@.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Town Shops]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Town Shops]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 4>>
<div class="wrapper">
<div class="titlebox">
Town Shops
</div>
<div class="guidebook-titlebox">
Arcane Emporium
</div>
<div class="guidebook-textbox">
The Arcane Emporium is a large bookstore where you can buy and learn new Spells. Patricia can normally be found working in the magical book area and can help you find what spells you are looking for. They organize Spells by Spell Types. As your Dungeon's Rank increases, new Spells will become available.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Town Shops]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Town Shops]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 5>>
<div class="wrapper">
<div class="titlebox">
Town Shops
</div>
<div class="guidebook-titlebox">
Adventurer's Guild
</div>
<div class="guidebook-textbox">
The Adventurer's Guild is where most of the Raiders you see each night come from, it is a place where many gather to pick up quests, learn about dungeons, and form teams. As a Dungeon Lord, the Guild Master, Mallory, provides many useful services to you as well, so don't be afraid to enter.<br>
<br>
One of the services they provide is being able to control the Threat of your Dungeon. For a price, the Guild can raise or lower your Dungeon's Threat. You will not be able to change your Threat if it is Locked.<br>
<br>
If you wish to see more Raiders or a Raider of a certain Class, the Guild can help you by letting you choose a Class and then picking one of three Raiders of that Class who will come to your Dungeon during the next Raid. The cost to hire the Raider increases based on their Rank, so be sure to keep that in mind before you pay the Guild to look for suitable Raiders for your Dungeon. As your Dungeon Rank increases, you will be able to hire more Raiders.<br>
<br>
Lastly, you can send your Slaves on Quests at the Quest Board. They are requests from the villagers in the town, with new ones posted every <<- setup.guild_quest_timer>> days. Quests are more difficult than Jobs, but the rewards can be @@.gold;Gold@@, @@.rep;Reputation@@, or @@.gold;Treasure@@. As your Dungeon Rank increases, the Quest Board will have more Quests available.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Town Shops]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Town Shops]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 6>>
<div class="wrapper">
<div class="titlebox">
Town Shops
</div>
<div class="guidebook-titlebox">
Dragonscale Forge
</div>
<div class="guidebook-textbox">
The Dragonscale Forge is owned by Rosemary and Thyme. You can craft and upgrade Equipment for your Creatures and Traps from them. Equipment are items you can attached to your Creatures or Traps from your Armory and provide Stat buffs and other effects for as long as they are attached. Crafting and upgrading Equipment costs @@.gold;Gold@@ and materials, which can be gained from special Quests. The Dragonscale Forge will open after reaching Dungeon Rank 3. As your Dungeon Rank increases, new Equipments will be available to craft.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Town Shops]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span>
</div>
</div>
<</switch>> <<silently>>
*Variables*
<<if !$page>>
<<set $page to 1>>
<</if>>
*Display*
<</silently>>
<<switch $page>>
<<case 1>>
<div class="wrapper">
<div class="titlebox">
Reputation
</div>
<div class="guidebook-titlebox">
</div>
<div class="guidebook-textbox">
Your Dungeon's @@.rep;Reputation@@ is the Town's approval towards your Dungeon. The higher your @@.rep;Reputation@@, the more Raiders will Raid your Dungeon each night. Once your Dungeon reaches the @@.rep;Reputation@@ Milestone in your Dungeon's Rank, you will be able to Rank up. As a Dungeon Lord, your goal should be to build your @@.rep;Reputation@@ as much as possible.<br>
</div>
<div class="wrapper-guidebook-table">
<div class="guidebook-header">
Reputation Chapters
</div>
<div class="guidebook-smalltable">
<ol>
<li><<link [[Gaining Reputation|Reputation]]>><<set $page to 2>><</link>></li>
<li><<link [[Losing Reputation|Reputation]]>><<set $page to 3>><</link>></li>
<li><<link [[Reputation Milestones|Reputation]]>><<set $page to 4>><</link>></li>
</ol>
</div>
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Quick Guide]]>><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Reputation]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 2>>\
<div class="wrapper">
<div class="titlebox">
Reputation
</div>
<div class="guidebook-titlebox">
Gaining Reputation
</div>
<div class="guidebook-textbox">
There are many more ways to gain @@.rep;Reputation@@ than there are to lose it. Simply stopping Raiders from clearing your Dungeon earns @@.rep;Reputation@@. If you want to quickly increase your Dungeon Rank, you should make use of all the ways you can increase your Dungeon's @@.rep;Reputation@@.<br>
<br>
<ul>
<li><u>Capturing Raiders</u>: As mentioned before, this is the easiest way to earn @@.rep;Reputation@@. The amount earned depends on the Raider's Rank and what you do with her after Capturing her. The higher her Rank is, the more @@.rep;Reputation@@ you will get. Fucking her for EXP still gives you @@.rep;Reputation@@, but not as much compared to Releasing her. If you choose to Enslave her, you will lose @@.rep;Reputation@@, so keep that in mind. The more Raiders you Captured in a single Raid, the more @@.rep;Reputation@@ each one will give. If no Raiders Clear your Dungeon, you will get even more @@.rep;Reputation@@!</li>
<li><u>Abandoning Raiders</u>: Whenever a Raider Abandons her Raid and leaves your Dungeon, you will earn @@.rep;Reputation@@. The amount earned is much less than from Capturing Raiders. The more Raiders that Abandon their Raids in a single night, the more @@.rep;Reputation@@ each one will give.</li>
<li><u>Slave Quests</u>: When your Slave completes a Quest, you will earn @@.rep;Reputation@@ based on how well she did. Some Slave Traits increase the amount of @@.rep;Reputation@@ earned from Quests, so be sure to utilize them properly.</li>
<li><u>Passively</u>: There are some @@.gold;Treasures@@ and Slave Traits that will passively increase your @@.rep;Reputation@@ at the end of each day. Be sure to keep an eye out for these if you want to get a steady source of @@.rep;Reputation@@.</li>
</ul>
</div>
<div class="exit-link-right">
<span id="back"><<button [[<|Reputation]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Reputation]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 3>>
<div class="wrapper">
<div class="titlebox">
Reputation
</div>
<div class="guidebook-titlebox">
Losing Reputation
</div>
<div class="guidebook-textbox">
You never want your Dungeon's @@.rep;Reputation@@ to be damaged. As your @@.rep;Reputation@@ decreases, you will get fewer Raiders coming to your Dungeon, and your income will decline. Sometimes, it cannot be helped and you should do what you can to minimize the damage.<br>
<br>
<ul>
<li><u>Raider Clears Dungeon</u>: If a Raider Clears your Dungeon, your @@.rep;Reputation@@ will be damaged. The amount of @@.rep;Reputation@@ you will lose depends on their reward. If a Raider Clears your Dungeon and you have no @@.gold;Gold@@ or @@.gold;Treasures@@ in your Vault, @@.bad;your Reputation will be heavily damaged!@@ Keeping a well-stocked Vault will ensure your @@.rep;Reputation@@ will remain in good standing if a Raider Clears your Dungeon. Raiders are content with only getting @@.gold;Gold@@, but would prefer to get @@.gold;Gold@@ and @@.gold;Treasure@@. Having a large number of Raiders Clear your Dungeon in the same night will also greatly lower your @@.rep;Reputation@@.</li>
<li><u>Enslaving Raiders</u>: Enslaving a Captured Raider is frowned upon, but is cheaper than buying one from the Slave Market in Town. Sometimes, the hit to your @@.rep;Reputation@@ is worth it. Your @@.rep;Reputation@@ will be damaged more from Enslaving high Ranked Raiders.</li>
</ul>
</div>
<div class="exit-link-right">
<span id="back"><<button [[<|Reputation]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Reputation]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 4>>
<div class="wrapper">
<div class="titlebox">
Reputation
</div>
<div class="guidebook-titlebox">
Reputation Milestones
</div>
<div class="guidebook-textbox">
Each Dungeon Rank has a @@.rep;Reputation@@ Milestone that will need to be reached before the you can Rank up. Higher Ranked Dungeons attract more and stronger Raiders and have access to more services in Town. Once you hit your Milestone for your current Rank, you can Rank Up in your Quarters. Be prepared before doing so, as the difficulty will increase, whether you are ready or not.<br>
<br>
<strong>Reputation Milestone for each Rank</strong>
<blockquote>
Rank 1: @@.rep;<<- setup.reputation_rank2>>@@<br>
Rank 2: @@.rep;<<- setup.reputation_rank3>>@@<br>
Rank 3: @@.rep;<<- setup.reputation_rank4>>@@<br>
Rank 4: @@.rep;<<- setup.reputation_rank5>>@@<br>
Rank 5: @@.rep;<<- setup.reputation_reward>>@@<br>
</blockquote>
</div>
<div class="exit-link-right">
<span id="back"><<button [[<|Reputation]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Threat]]>><<set $page to 1>><</button>></span>
</div>
</div>
<</switch>><<silently>>
*Variables*
<<if !$page>>
<<set $page to 1>>
<</if>>
*Display*
<</silently>>
<<switch $page>>
<<case 1>>
<div class="wrapper">
<div class="titlebox">
Threat
</div>
<div class="guidebook-titlebox">
</div>
<div class="guidebook-textbox">
Your Dungeon's Threat is the Town's fear of your Dungeon. Threat is always between @@.good;0@@ and @@.bad;100@@. As your Threat increases, higher Ranked Raiders will Raid your Dungeon. Higher Ranked Raiders carry more @@.gold;Gold@@, give more EXP, and mak better Slaves, but they are stronger. Your goal is to balance your Threat so that the Raiders are challenging, but not impossible to Capture.
</div>
<div class="wrapper-guidebook-table">
<div class="guidebook-header">
Threat Chapters
</div>
<div class="guidebook-smalltable">
<ol>
<li><<link [[Gaining Threat|Threat]]>><<set $page to 2>><</link>></li>
<li><<link [[Losing Threat|Reputation]]>><<set $page to 3>><</link>></li>
</ol>
</div>
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Reputation]]>><<set $page to 4>><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Threat]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 2>>
<div class="wrapper">
<div class="titlebox">
Threat
</div>
<div class="guidebook-titlebox">
Gaining Threat
</div>
<div class="guidebook-textbox">
Gaining Threat can be both beneficial and detrimental. If the Raiders are too easy and don't give enough rewards for Capturing them, keep these things in mind to increase your Threat to attract stronger Raiders.<br>
<br>
<ul>
<li><u>Capturing Raiders</u>: Capturing Raiders increases your Threat based on a couple of things. The higher the Raider's Rank compared to your Dungeon's Rank, the more your Threat will increase. Fucking Captured Raiders instead of Releasing her will further increase the amount of Threat gained from her.</li>
<li><u>Enslaving Raiders</u>: Enslaving a Raider will greatly increase your Threat. The higher the Raider's Rank compared to your Dungeon's Rank, the more your Threat will increase.</li>
<li><u>Using @@.gold;Gold@@</u>: At the Adventurer's Guild in Town, you can spend @@.gold;Gold@@ to increase your Threat by a certain amount. The cost of this service depends on how much Threat your Dungeon has. The lower the Threat, the more it costs to increase.</li>
</ul>
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Threat]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Threat]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 3>>
<div class="wrapper">
<div class="titlebox">
Threat
</div>
<div class="guidebook-titlebox">
Losing Threat
</div>
<div class="guidebook-textbox">
Losing Threat, like gaining Threat, has positive and negative effects. If the Raiders you are facing are too difficult to Capture, you should use the following to lower your Threat.<br>
<br>
<ul>
<li><u>Clearing your Dungeon</u>: If a Raider Clears your Dungeon, your Threat will decrease. The amount depends on her Rank compared to your Dungeon's Rank. Having more Raiders Clear your Dungeon in the same night further lowers your Threat.</li>
<li><u>Using @@.gold;Gold@@</u>: At the Adventurer's Guild in Town, you can spend @@.gold;Gold@@ to decrease your Threat by a certain amount. The cost of this service depends on how much Threat your Dungeon has. The higher the Threat, the more it costs to decrease.</li>
<li><u>Passively</u>: There are some @@.gold;Treasures@@ that will lower your Threat at the end of each day.</li>
</ul>
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Threat]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Dungeon Rank]]>><<set $page to 1>><</button>></span>
</div>
</div>
<</switch>>
<<silently>>
*Variables*
<<if !$page>>
<<set $page to 1>>
<</if>>
*Display*
<</silently>>
<<switch $page>>
<<case 1>>
<div class="wrapper">
<div class="titlebox">
Spells
</div>
<div class="guidebook-titlebox">
</div>
<div class="guidebook-textbox">
As a Dungeon Lord, Spells are your main tool to change the outcome of Raids. They are capable of dealing damage, increasing @@.lust;Lust@@, enhancing Creatures or Traps, and more. Casting Spells costs @@.mana;Mana@@ and the power of your Spells is based on your Level. You can purchase new Spells from the Arcane Emporium in Town. Your Spellbook is located in your Quarters and you can Favorite Spells there, moving them to the front of the list and highlighting them. Spells come in 4 flavors: Infliction, Manipulation, Summoning, and Supportive.
</div>
<div class="wrapper-guidebook-table">
<div class="guidebook-header">
Spell Chapters
</div>
<div class="guidebook-smalltable">
<ol>
<li><<link [[Infliction|Spells]]>><<set $page to 2>><</link>></li>
<li><<link [[Manipulation|Spells]]>><<set $page to 3>><</link>></li>
<li><<link [[Summoning|Spells]]>><<set $page to 4>><</link>></li>
<li><<link [[Supportive|Spells]]>><<set $page to 5>><</link>></li>
</ol>
</div>
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Traps]]>><<set $page to 4>><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Spells]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 2>>
<div class="wrapper">
<div class="titlebox">
Spells
</div>
<div class="guidebook-titlebox">
Infliction
</div>
<div class="guidebook-textbox">
Infliction Spells focus on dealing damage and inflicting Statuses. They generally have a low @@.mana;Mana@@ cost and are guaranteed to hit their target, dealing some damage. If the Infliction Spell has a secondary effect, such as inflicting a Status, the Raider faces a @@.spell;Spellcheck@@ to determine whether that effect will trigger or not. Infliction Spells' damage and effect's @@.spell;Spellcheck@@ gets stronger as your Level increases. Lastly, Infliction Spells cannot Capture Raiders. Damage from them will always leave the Raider with @@.health;1 Health@@ or one less than their @@.lust;Max Lust@@.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Spells]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Spells]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 3>>
<div class="wrapper">
<div class="titlebox">
Spells
</div>
<div class="guidebook-titlebox">
Manipulation
</div>
<div class="guidebook-textbox">
Manipulation Spells are all about messing with a Raider or the whole group. Their effect only works if the Raider fails the @@.spell;Spellcheck@@, making them less reliable, but their effects can be worth the risk. Some examples of their effects are changing a Raider's Kinks or Turn-Offs, lowering stats, and adding a new Trait. They have between a low and moderate @@.mana;Mana@@ cost based on the effect. Their @@.spell;Spellcheck@@ increases significantly as you gain Levels. Certain Manipulation Spells are capable of Capturing Raiders, so be sure to read their Description to find out which ones can and cannot Capture Raiders.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Spells]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Spells]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 4>>
<div class="wrapper">
<div class="titlebox">
Spells
</div>
<div class="guidebook-titlebox">
Summoning
</div>
<div class="guidebook-textbox">
Summoning Spells spawn a Creature to attack a Raider or the whole group while they are between Floors. Summon Creatures are generally weaker than Creatures in your Dungeon, but you can choose who they attack. Creatures you summon take damage like normal Creatures and if their @@.health;Health@@ reaches 0, you won't be able to cast that Summoning Spell for the rest of the night. Summoned Creatures' Levels are based on your Level, so they do not gain EXP from combat or Capturing Raiders, which all Summoning Spells are capable of. They have the highest @@.mana;Mana@@ cost of all Spells, meaning you need to use them wisely.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Spells]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Spells]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 5>>
<div class="wrapper">
<div class="titlebox">
Spells
</div>
<div class="guidebook-titlebox">
Supportive
</div>
<div class="guidebook-textbox">
Supportive Spells are all about enabling your Creatures and Traps. They can boost their stats, add additional effects, and heal your Creatures. They do not need to pass any @@.spell;Spellcheck@@ to affect your Creatures and Traps, making them 100% reliable. Their effects and durations increase as you gain Levels and their @@.mana;Mana@@ cost are low to moderate. You cannot stack Supportive Spells' buffs or effects on the same Creature or Trap and since they do not affect the Raiders directly, they cannot Capture them.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Spells]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Treasures]]>><<set $page to 1>><</button>></span>
</div>
</div>
<</switch>><<silently>>
*Variables*
<<if !$page>>
<<set $page to 1>>
<</if>>
*Display*
<</silently>>
<<switch $page>>
<<case 1>>
<div class="wrapper">
<div class="titlebox">
Amenities
</div>
<div class="guidebook-titlebox">
</div>
<div class="guidebook-textbox">
You Amenities are additional rooms that aren't apart of the Dungeon or Slave Rooms. As your Dungeon expands, you will unlock new Amenities that you can build.
</div>
<div class="wrapper-guidebook-table">
<div class="guidebook-header">
Amenitiy Chapters
</div>
<div class="guidebook-smalltable">
<ol>
<li><<link [[Your Quarters|AmenityRooms]]>><<set $page to 2>><</link>></li>
<li><<link [[Ahri's Quarters|AmenityRooms]]>><<set $page to 3>><</link>></li>
<li><<link [[Onsen|AmenityRooms]]>><<set $page to 4>><</link>></li>
<li><<link [[Armory|AmenityRooms]]>><<set $page to 5>><</link>></li>
</ol>
</div>
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Slaves]]>><<set $page to 8>><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|AmenityRooms]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 2>>
<div class="wrapper">
<div class="titlebox">
Amenities
</div>
<div class="guidebook-titlebox">
Your Quarters
</div>
<div class="guidebook-textbox">
Your Quarters holds a ton of information and stats. Here you can find the Slave Pack Menu, view the previous day's report, your Blessings, Spellbook, Vault, and Mission Log. You can also edit your Dungeon's name, your name, or the difficulty of the game. The Changelog can also be found here, which will note all the changes in the most recent update. If you wish to start a new game while keeping all the Slave Packs you added to your game, that can also be found here. Once you have enough @@.rep;Reputation@@, you can Rank Up inside your Quarters.<br>
<br>
The stats shown are not only yours, but also your Dungeon's and Slaves' stats. The Raider Chart shows the number of times each Class of Raider you've Captured, has Abandoned, or Cleared your Dungeon. It might provide useful insight that will help you.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|AmenityRooms]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|AmenityRooms]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 3>>
<div class="wrapper">
<div class="titlebox">
Amenities
</div>
<div class="guidebook-titlebox">
Ahri's Quarters
</div>
<div class="guidebook-textbox">
This is where Ahri stays for the most part and you can spend your @@.le;Lust Essence@@ to unlock new Creatures, Traps, and Blessings from her. As your relationship improves and Dungeon Rank increases, she will have more Creatures, Traps, and Blessings become available.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|AmenityRooms]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|AmenityRooms]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 4>>
<div class="wrapper">
<div class="titlebox">
Amenities
</div>
<div class="guidebook-titlebox">
Onsen
</div>
<div class="guidebook-textbox">
The Onsen increases the amount of @@.love;Love@@ EXP is gained by your Slaves and the amount of @@.stress;Stress@@ reduced by your Slaves at the end of the day. You'll be able to build it as part of Ahri's first Mission. There is also a chance to find your Slaves or Ahri using the Onsen during the day. If someone is using the Onsen, you can spend @@.energy;1 Energy@@ to join them. Joining one of your Slaves will grant her @@.love;Love@@, @@.obe;Obedience@@, and the chosen Sex Skill EXP. Joining Ahri will grant you @@.le;1 Lust Essence@@.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|AmenityRooms]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|AmenityRooms]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 5>>
<div class="wrapper">
<div class="titlebox">
Amenities
</div>
<div class="guidebook-titlebox">
Armory
</div>
<div class="guidebook-textbox">
The Armory stores all the Equipment you own. You can also attach your Equipment to one of your Creatures or Traps. Equipment are items that grant a Creature or Trap bonus Stats and effects as long as the Equipment is attached to them. They can be bought and crafted from the Dragonscale Forge in Town. You'll be able to build the Armory as part of Rosemary and Thyme's first Mission, who own the Forge.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|AmenityRooms]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Town Shops]]>><<set $page to 1>><</button>></span>
</div>
</div>
<</switch>><<silently>>
*Variables*
<<if !$page>>
<<set $page to 1>>
<</if>>
*Display*
<</silently>>
<<switch $page>>
<<case 1>>
<div class="wrapper">
<div class="titlebox">
Raiders
</div>
<div class="guidebook-titlebox">
</div>
<div class="guidebook-textbox">
Raiders are the girls that Raid your Dungeon each night, attempting to loot your @@.gold;Gold@@ and @@.gold;Treasure@@. There are ten Classes and six Ranks. A Raiders Class determines their strengths, weaknesses, and Role, while their Rank dictates how strong they are. Raiders also have Kinks, Turn-Offs, and Traits, making each Raider unique. They can enter your Dungeon alone, with a partner, or as a party of three. Since Raiders are the ones Raiding your Dungeon, it is best to learn their strengths and weaknesses so you will know how best to deal with them.
</div>
<div class="wrapper-guidebook-table">
<div class="guidebook-header">
Raider Chapters
</div>
<div class="guidebook-smalltable">
<ol>
<li><<link [[Rank & Stats|Raiders]]>><<set $page to 2>><</link>></li>
<li><<link [[Classes|Raiders]]>><<set $page to 3>><</link>></li>
<li><<link [[Class Info|Raiders]]>><<set $page to 4>><</link>></li>
<li><<link [[Kinks, Turn-Offs, and Traits|Raiders]]>><<set $page to 5>><</link>></li>
</ol>
</div>
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Raids]]>><<set $page to 6>><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Raiders]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 2>>
<div class="wrapper">
<div class="titlebox">
Raiders
</div>
<div class="guidebook-titlebox">
Rank & Stats
</div>
<div class="guidebook-textbox">
Raiders have many different stats that are used throughout Raids, which are primarily determined by their Rank. From weakest to strongest, the Ranks are Rookie, Novice, Adept, Expert, Veteran, and Master. Here is a list of each stat and what it is used for.<br>
<br>
<ul>
<li>@@.health;<u>Health</u>@@: <<- setup.raider_health_desc>></li>
<li>@@.lust;<u>Lust</u>@@: <<- setup.raider_lust_desc>></li>
<li>@@.vig;<u>Vigor</u>@@: <<- setup.raider_vigor_desc>></li>
<li>@@.end;<u>Endurance</u>@@: <<- setup.raider_endurance_desc>></li>
<li>@@.will;<u>Willpower</u>@@: <<- setup.raider_willpower_desc>></li>
<li>@@.pers;<u>Perseverance</u>@@: <<- setup.raider_perseverance_desc>></li>
<li>@@.toler;<u>Tolerance</u>@@: <<- setup.raider_tolerance_desc>></li>
<li>@@.aware;<u>Awareness</u>@@: <<- setup.raider_awareness_desc>></li>
<li>@@.reas;<u>Reason</u>@@: <<- setup.raider_reason_desc>></li>
</ul>
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Raiders]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Raiders]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 3>>
<div class="wrapper">
<div class="titlebox">
Raiders
</div>
<div class="guidebook-titlebox">
Classes
</div>
<div class="guidebook-textbox">
A Raider's Class holds a lot of information about the Raider's strengths, and weaknesses. Classes also determine a Raider's Role when in a Group. Tanks are in the front, followed by Melees, Ranges, and Supports. Most of the time, Creatures will target the first Raider in the group and Raiders Encountering Traps will perform their Checks starting from the first Raider in the group. There are Creatures, Traps, and other effects that can override this, so be sure to read their Description. The next page has more in-depth information about each of the 10 Classes.<br>
<br>
<ul>
<li><u>Tank</u>: <<- setup.raider_tank_desc>></li>
<li><u>Melee</u>: <<- setup.raider_melee_desc>></li>
<li><u>Range</u>: <<- setup.raider_range_desc>></li>
<li><u>Support</u>: <<- setup.raider_support_desc>></li>
</ul>
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Raiders]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Raiders]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 4>>\
<<silently>>
*Variables*
<<if !$raider_class_number>>
<<set $raider_class_number to 0>>
<</if>>
<<set _raider_description to setup.class_list[$raider_class_number]>>
* Set Pic *
<<set _pic to setup.average_raider_pics[_raider_description.class][0]>>
* Set Atk Type Color *
<<if _raider_description.type === "Physical">>
<<set _atkType to "phy">>
<<else>>
<<set _atkType to "mag">>
<</if>>
* Set Role Hovertip *
<<switch _raider_description.role>>
<<case "Tank">>
<<set _roleTip to clone(setup.raider_tank_desc)>>
<<case "Melee">>
<<set _roleTip to clone(setup.raider_melee_desc)>>
<<case "Range">>
<<set _roleTip to clone(setup.raider_range_desc)>>
<<case "Support">>
<<set _roleTip to clone(setup.raider_support_desc)>>
<</switch>>
<</silently>>
<div class="wrapper">
<div class="titlebox">
Raiders
</div>
<div class="guidebook-description-buttonbox">
<strong><u>Class</u></strong><br>
<span id="shiftleft"><<button [[<|Raiders]]>><<set $raider_class_number-->><<if $raider_class_number < 0>><<set $raider_class_number to setup.class_list.length - 1>><</if>><</button>></span> <strong>_raider_description.class</strong> <span id="shiftright"><<button [[>|Raiders]]>><<set $raider_class_number++>><<if $raider_class_number >= setup.class_list.length>><<set $raider_class_number to 0>><</if>><</button>></span>
</div>
<div class="guidebook-description-wrapper">
<div class="guidebook-description-statbox">
<div class="guidebook-description-cell">
<u>Role</u><br>
<<hovertip "_roleTip">>_raider_description.role<</hovertip>>
</div>
<div class="guidebook-description-cell">
<u>Attack Type</u><br>
<span @class="_atkType">_raider_description.type</span>
</div>
<div class="guidebook-description-cell">
<<hovertip '<<- setup.raider_lust_desc>>'>>@@.lust;<u>Lust</u>@@<</hovertip>><br>
_raider_description.lust_desc
</div>
<div class="guidebook-description-cell">
<<hovertip '<<- setup.raider_vigor_desc>>'>>@@.vig;<u>Vigor</u>@@<</hovertip>><br>
_raider_description.vig_desc
</div>
<div class="guidebook-description-cell">
<<hovertip '<<- setup.raider_willpower_desc>>'>>@@.will;<u>Willpower</u>@@<</hovertip>><br>
_raider_description.will_desc
</div>
<div class="guidebook-description-cell">
<<hovertip '<<- setup.raider_awareness_desc>>'>>@@.aware;<u>Awareness</u>@@<</hovertip>><br>
_raider_description.aware_desc
</div>
</div>
<div class="guidebook-description-picbox">
_pic
</div>
<div class="guidebook-description-statbox">
<div class="guidebook-description-cell">
<u>Unique Trait</u><br>
<<hovertip "_raider_description.unique_trait.tooltip">>@@.gold;_raider_description.unique_trait.name@@<</hovertip>>
</div>
<div class="guidebook-description-cell">
<<hovertip '<<- setup.raider_health_desc>>'>>@@.health;<u>Health</u>@@<</hovertip>><br>
_raider_description.hp_desc
</div>
<div class="guidebook-description-cell">
<<hovertip '<<- setup.raider_tolerance_desc>>'>>@@.toler;<u>Tolerance</u>@@<</hovertip>><br>
_raider_description.toler_desc
</div>
<div class="guidebook-description-cell">
<<hovertip '<<- setup.raider_endurance_desc>>'>>@@.end;<u>Endurance</u>@@<</hovertip>><br>
_raider_description.end_desc
</div>
<div class="guidebook-description-cell">
<<hovertip '<<- setup.raider_perseverance_desc>>'>>@@.pers;<u>Perseverance</u>@@<</hovertip>><br>
_raider_description.pers_desc
</div>
<div class="guidebook-description-cell">
<<hovertip '<<- setup.raider_reason_desc>>'>>@@.reas;<u>Reason</u>@@<</hovertip>><br>
_raider_description.reas_desc
</div>
</div>
</div>
<div class="guidebook-description-textbox">
_raider_description.description
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Raiders]]>><<set $page-->><<unset $raider_class_number>><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page $raider_class_number>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><<unset $raider_class_number>><</button>></span> <span id="forward"><<button [[>|Raiders]]>><<set $page++>><<unset $raider_class_number>><</button>></span>
</div>
</div>
<<case 5>>
<div class="wrapper">
<div class="titlebox">
Raiders
</div>
<div class="guidebook-titlebox">
Kinks, Turn-Offs, and Traits
</div>
<div class="guidebook-textbox">
Each Raider has Kinks and Turn-Offs, which affect how much @@.sex;Sexual@@ damage they take from @@.sex;Sexual@@ Attacks. Attacks with a Fetish against a Raider who has the same Fetish as a Kink takes 50% more @@.sex;Sexual@@ damage from the attack, while the same attack against a Raider who has that Fetish as a Turn-Off takes 50% less @@.sex;Sexual@@ damage. Even if the Raider shares multiple Kinks or Turn-Offs with the attack's Fetishes, the @@.sex;Sexual@@ damage is only increased or decreased by 50%. Kinks are stronger than Turn-Offs, so if an attack has a Raider's Kink and Turn-Off, they will take more @@.sex;Sexual@@ damage. Raiders normally have two Kinks and two Turn-Offs, but there are other ways for a Raider to gain Kinks and Turn-Offs, such as Traits.<br>
<br>
Traits are passive effects that change various aspects of the Raider. There are four types of Traits: Special, Sexual, Physical, and Mental. There are a lot of Traits to learn, but you can read what each does by hovering over the <<hovertip "Trait Description">>Trait Name<</hovertip>>. They can be positive, negative, or both. Here is a generalization of what each Trait type focuses on.<br>
<ul>
<li><u>Sexual</u>: Sexual Traits primarily affect @@.lust;Lust@@, @@.toler;Tolerance@@, Kinks, and Turn-Offs.</li>
<li><u>Physical</u>: Physical Traits primarily affect @@.health;Health@@, @@.vig;Vigor@@, @@.end;Endurance@@, and body type.</li>
<li><u>Mental</u>: Mental Traits primarily affect @@.will;Willpower@@, @@.pers;Perseverance@@, @@.aware;Awareness@@, and @@.reas;Reason@@.</li>
<li><u>Special</u>: Special Traits are rare and have unique effects. Raiders with Special Traits are more likely to have Rare Traits as a Slave, which differ from Raider Traits.</li>
</ul>
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Raiders]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Creatures]]>><<set $page to 1>><<unset $raider_class_number>><</button>></span>
</div>
</div>
<</switch>>EVOULTION GOALS
Things that creatures can get when evolving. Ideal, each different evolution should have different strengths to build around or support a certain focus.
Increase Stats
New Fetishes
More Attacks
Attack All Raiders
New Statuses
Increase Effect Rate
Increase Status Rate
New Effects
Goblins - Humanoid Creature
Base form: A group of aggressive goblins. They attack the closest Raider, dealing only physical damage. They have high attack but every other stat is low.
Evolutions
Buff Goblins: Much bigger and stronger than before, increasing all their stats. They attack the two closest Raiders, dealing physical damage only.
Sneaky Goblins: Train in stealth, they attack the farthest Raider, only dealing physical damage. Bonus damage done to support class.
Lewd Goblins: Embracing their need to breed gaining Group and Cream Pie Fetishes, they attack the closest Raider, dealing only sexual damage with a low chance to impregnant.
Wolf - Beast Creature
Base Form: A wolf powerful wolf who stalks it's prey and recovers Health between rooms. Deals bonus physical damage to Raiders when they are alone.
Evolutions
Werewolf:
Succubus - Humanoid
Base form: A Succubus who indulges her victims in pleasure. She attacks the closest Raider, dealing physical and sexual damage. Lesbian fetish
Mimic Chest - Monster
Base form: A fake chest with a monster hidden inside. The Raider with the lowest awareness attempts to open the chest and faces a Trapcheck. The Mimic Chest deals physical and sexual damage to the Raider. If she fails the Trapcheck, she cannot attack and takes bonus damage.
Upgrades
Drooling Chest: Increases trapcheck rate and applies sticky if the raider fails the trapcheck
Steel Chest: Gains bonus defenses and physical attack
Breast Slugs - Insect
Base form: A large group of slugs that seek out woman's breasts and impregnates them. Attacks all Raiders, dealing a small amount of physical and sexual damage with a chance to impregnant their breasts.
Upgrades
Puzzle Room - Trap
The Raiders must solve the puzzle to open the door leading to the next room. All the Raider's Trapcheck are combined. If they fail, they make no progress and have to try again. Each time they don't proceed, they gain a stack of Corruption and take a small amount of Sexual damage equal to the number of Corruption stacks (Aphrodisiac Fetish). Once they have 3 stacks, they become Captured. If they pass, the move on to the next room and all Corruption stacks are lost. Can only Capture if they have 3 stacks of Corruption.
NO MODES
Pitfall - Trap
- Each Raider faces a trapcheck as they enter the floor
- If a single raider fails the trapcheck, all raiders fall into the pit, taking physical damage
- Modes:
- Pool: All Raiders become inflicted with parasites
- Shrooms: All Raiders take gain stacks of Aroused and Poisoned
- WIP - Lashers: All Raiders are attacked by vines and become Stripped
Double-click this passage to edit it.<<silently>>\
* SETUP ROOM *
<<RoomSetup $raiders $this_room>>
<<CreatureStats $this_room>>
<<set _brainwashedSexBool to false>> set to true if Wizard attacks raider with brainwashed
<<set _summonerSexBool to false>> set to true if Summoner attacks same raider as his hands
<<set _handsSexDmg to 0>> amount of normal sex dmg hands dealt
<<set _sexDmgBonus to 0>> amount of bonus sex dmg dealt
<<set _handsDmgBonus to 0>> amount of bonus sex dmg hands dealt
* SETUP RAIDER *
<<RaiderSetup $raiders>>
* PRE COMBAT EFFECTS *
<<PreCombat $raiders $this_room>>
* WIZARD SPELL CALC *
<<set _wizard_targets to []>> list of raiders wizard is targeting
* CHOOSE TARGET *
TARGET ALL IF WIZARD OVERLOARD
<<if $this_room.name === "Wizard Overlord">>
<<for _i = 0; _i < $raiders.length; _i++>>
<<set _wizard_targets.push($raiders[_i].index)>>
<</for>>
TARGET STRONGEST RAIDER
<<else>>
<<set _strongest_raider to "">>
<<set _highest_atk to 0>>
* FIND THE RAIDER WITH MOST ATTACK *
<<for _i = 0; _i < $raiders.length; _i++>>
FIND HIGHER STAT BETWEEN VIGOR AND WILLPOWER
<<if $raiders[_i].cur_vig >= $raiders[_i].cur_will>>
<<set _atk_value to clone($raiders[_i].cur_vig)>>
<<else>>
<<set _atk_value to clone($raiders[_i].cur_will)>>
<</if>>
IF RAIDER IS GREATER THAN PREVIOUS HIGHEST ATTACK, SET AS NEW HIGHEST AND CHANGE STRONGEST RAIDER TO CURRENT RAIDER'S CLASS
<<if _atk_value > _highest_atk && !$raiders[_i].status_names.includes(setup.brainwashed.id)>>
<<set _highest_atk to _atk_value>>
<<set _strongest_raider to clone($raiders[_i].index)>>
<</if>>
<</for>>
SET TARGET TO FIRST RAIDER IF NO TARGET WAS FOUND
<<if _strongest_raider === "">>
<<set _strongest_raider to clone($raiders[0].index)>>
<</if>>
SET TARGET
<<set _wizard_targets.push(_strongest_raider)>>
<</if>>
<<if $this_room.name === "Summoner Wizard">>
* WIZARD SUMMONS MAGIC HANDS *
<<set _magic_hands to {
name: clone($this_room.name),
atk: 0,
sex: Math.round($this_room.cur_sex * $this_room.summoner_float),
room_type: clone($this_room.room_type),
creature_types: clone($this_room.creature_types),
trap_types: clone($this_room.trap_types),
fetishes: clone($this_room.summoner_fetishes),
effects: $this_room.effects,
effect_names: $this_room.effect_names,
capture_entry: "Unable to fight off the Magic Hands, she could only give in to the pleasure and was Captured by them.",
defeat_entry: "Unable to fight off the Magic Hands, she could only give in to the pleasure and was Captured by them."
}>>
<<else>>
* WIZARD CASTS TRANCE SPELL *
<<set _spellcheck to Math.round($this_room.rate + (Math.trunc($this_room.cur_atk) * $this_room.rate_atk_bonus))>> SPELLCHECK: _spellcheck
<<for _i = 0; _i < $raiders.length; _i++>>
<<if _wizard_targets.includes($raiders[_i].index)>>
SET UP RAIDER
<<set _cur_girl to $raiders[_i]>>
STATS
<<set $this_room.report.spell_attempts++>>
SPELLCHECK
<<CalcSpellcheck _cur_girl _spellcheck "Creature">>
<<SimSpellcheck _cur_girl _spellcheck "Creature">>
<<if !_text_triggers.check.spellcheck_failed.includes($raiders[_i].index) && !_text_triggers.check.spellcheck_crit_failed.includes($raiders[_i].index)>>
UPDATE RAIDER REPORT
<<set _entry to "She resisted the Trance Spell.">>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<</if>>
<</if>>
<</for>>
<</if>>
* DANCER BUFF IF NOT TRANCED *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].class === "Dancer" && ((!_text_triggers.check.spellcheck_failed.includes($raiders[_i].index) && !_text_triggers.check.spellcheck_crit_failed.includes($raiders[_i].index)) || ($this_room.name === "Summoner Wizard" && !_wizard_targets.includes($raiders[_i].index)))>>
<<DancerBuff $raiders[_i] $this_room>>
<</if>>
<</for>>
* SPELL EFFECTS *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if _text_triggers.check.spellcheck_failed.includes($raiders[_i].index) || _text_triggers.check.spellcheck_crit_failed.includes($raiders[_i].index)>>
<<set $this_room.report.spell_successes++>>
BRAINWASHED
<<AddStatus $raiders[_i] setup.brainwashed true>>
UPDATE RAIDER REPORT
<<if _text_triggers.status.brainwashed.includes($raiders[_i].index)>>
<<set _entry to "She was put in a Trance, becoming Brainwashed and was unable to attack.">>
<<else>>
<<set _entry to "She was put in a Trance and was unable to attack.">>
<</if>>
ADD SUBMISSIVE AND ABSENTMINDED TRAIT
<<if $this_room.name === "Control Wizard">>
<<if !$raiders[_i].trait_names.includes("Submissive")>>
ADD SUBMISSIVE
<<set _newTrait to clone(setup.submissive)>>
<<set $raiders[_i].traits.push(_newTrait)>>
<<set $raiders[_i].trait_names.push(_newTrait.name)>>
<<set _delete to $raiders[_i].turnoffs.delete(setup.submissive.fetishes)>>
<<set _delete to $raiders[_i].fetishes.delete(setup.submissive.fetishes)>>
<<set $raiders[_i].kinks to $raiders[_i].kinks.concat(setup.submissive.fetishes)>>
<</if>>
<<if !$raiders[_i].trait_names.includes("Absent Minded")>>
ADD ABSENT MINDED
<<set _newTrait to clone(setup.absentminded)>>
<<set $raiders[_i].traits.push(_newTrait)>>
<<set $raiders[_i].trait_names.push(_newTrait.name)>>
<</if>>
UPDATE RAIDER REPORT
<<if _text_triggers.status.brainwashed.includes($raiders[_i].index)>>
<<set _entry to "She was put in a Trance, becoming Brainwashed, Submissive, and Absent Minded, and was unable to attack.">>
<<else>>
<<set _entry to "She was put in a Trance, becoming Submissive and Absent Minded and was unable to attack.">>
<</if>>
<</if>>
ADD PERVERTED IF WIZARD OVERLORD
<<if $this_room.name === "Wizard Overlord">>
<<AddStatus $raiders[_i] setup.perverted true>>
UPDATE RAIDER REPORT
<<if _text_triggers.status.perverted.includes($raiders[_i].index) && _text_triggers.status.brainwashed.includes($raiders[_i].index)>>
<<set _entry to "She was put in a Trance, becoming Brainwashed and Perverted and was unable to attack.">>
<<elseif _text_triggers.status.perverted.includes($raiders[_i].index)>>
<<set _entry to "She was put in a Trance, becoming Perverted and was unable to attack.">>
<</if>>
<</if>>
UPDATE RAIDER REPORT
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<</if>>
<</for>>
* WIZARD CHOOSES TARGET *
<<CreatureChooseTarget $raiders $this_room>>
* WIZARD NORMAL & SEXUAL ATTACK *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].attacked === true>>
<<NormalAttack $raiders[_i] $this_room $this_room.cur_atk>>
<<SexualAttack $raiders[_i] $this_room $this_room.cur_sex>>
<<if $this_room.name !== "Summoner Wizard" && $raiders[_i].status_names.includes("Brainwashed")>>
WIZARD ATTACK RAIDER WITH BRAINWASHED
TRIGGER TEXT
<<set _brainwashedSexBool to true>>
INCREASE SEXUAL DAMAGE DEALT
<<set _sexDmgBonus to Math.trunc($raiders[_i].sex_taken * $this_room.sex_bonus)>> EXTRA SEX DMG: _sexDmgBonus
<<set $raiders[_i].sex_taken += _sexDmgBonus>>
<<elseif $this_room.name === "Summoner Wizard" && _wizard_targets.includes($raiders[_i].index)>>
SUMMONER AND HANDS ATTACKED SAME RAIDER
TRIGGER TEXT
<<set _summonerSexBool to true>>
INCREASE SEXUAL DAMAGE DEALT
<<set _sexDmgBonus to Math.trunc($raiders[_i].sex_taken * $this_room.sex_bonus)>> EXTRA SEX DMG: _sexDmgBonus
<<set $raiders[_i].sex_taken += _sexDmgBonus>>
<</if>>
UPDATE RAIDER REPORT
<<set _entry to "She took @@.mag;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage.">>
<<else>>
UPDATE RAIDER REPORT
<<set _entry to "She was not attacked.">>
<</if>>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<<if $this_room.name === "Summoner Wizard" && _wizard_targets.includes($raiders[_i].index)>>
MAGIC HANDS ATTACKS RAIDER
<<set _sexDmgHolder to clone($raiders[_i].sex_taken)>> holds current sex damage taken to calc hands sex dmg
<<SexualAttack $raiders[_i] _magic_hands _magic_hands.sex>>
<<set _handsSexDmg to $raiders[_i].sex_taken - _sexDmgHolder>>
<<if _summonerSexBool === true>>
INCREASE SEXUAL DAMAGE DEALT
<<set _handsDmgBonus to Math.trunc(_handsSexDmg * $this_room.sex_bonus)>> EXTRA SEX DMG: _sexDmgBonus
<<set _handsSexDmg += _handsDmgBonus>>
<<set $raiders[_i].sex_taken += _handsDmgBonus>>
<</if>>
UPDATE RAIDER REPORT
<<set _entry to "She took @@.sex;"+_handsSexDmg+"@@ damage from his Magic Hands and could not attack.">>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<</if>>
<</for>>
* ADDITIONAL REPORT ENTRIES *
<<for _r = 0; _r < $raiders.length; _r++>>
<<if $this_room.name !== "Summoner Wizard" && $raiders[_r].status_names.includes("Brainwashed")>>
<<set _entry to "The "+$this_room.name+" was able to deal more @@.sex;Sexual@@ damage because she was Brainwashed.">>
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_r].report.log.push(_lastLog)>>
<<elseif $this_room.name === "Summoner Wizard" && _wizard_targets.includes($raiders[_r].index)>>
<<set _entry to "The "+$this_room.name+" and his Magic Hands ganged up on her and were able to deal more @@.sex;Sexual@@ damage.">>
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_r].report.log.push(_lastLog)>>
<</if>>
<</for>>
* RAIDERS ATTACK *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if (!_text_triggers.check.spellcheck_failed.includes($raiders[_i].index) && !_text_triggers.check.spellcheck_crit_failed.includes($raiders[_i].index) && $this_room.name !== "Summoner Wizard") || ($this_room.name === "Summoner Wizard" && !_wizard_targets.includes($raiders[_i].index))>>
<<RaiderAttack $raiders[_i] $this_room>>
<</if>>
<</for>>
* POST COMBAT EFFECTS *
<<for _r = 0; _r < $raiders.length; _r++>>
<<PostCombat $raiders[_r] $this_room>>
<</for>>
* WIZARD EXP & DAMAGE *
<<CreaturePostCombat $raiders $this_room>>
* CHOOSE PICTURE *
SETUP IMAGE ARRAY
<<set _picArray to clone($this_room.raider_pics)>>
<<for _r = 0; _r < $raiders.length; _r++>>
<<if (_text_triggers.check.spellcheck_failed.includes($raiders[_r].index) || _text_triggers.check.spellcheck_crit_failed.includes($raiders[_r].index)) && $raiders[_r].attacked === true>>
RAIDER BRAINWASHEWD AND ATTACKED
<<set $raiders[_r].pic to _picArray.brainwashed[$raiders[_r].body_type].pluck()>>
<<elseif $this_room.name === "Summoner Wizard" && _wizard_targets.includes($raiders[_r].index) && $raiders[_r].attacked === false>>
MAGIC HANDS ATTACKED RAIDER
<<set $raiders[_r].pic to _picArray.magicHands[$raiders[_r].body_type].pluck()>>
<<elseif $raiders[_r].attacked === true>>
RAIDER ATTACKED
<<set $raiders[_r].pic to _picArray[$raiders[_r].body_type].pluck()>>
<</if>>
<</for>>
* END OF COMBAT REPORT *
<<PostCombatReport $raiders $this_room>>
* CLEAN UP *
<<CleanUp $raiders $this_room>>
*Display Info*
<<set _cardholderID to "cardholder-raid-"+$raiders.length+"raiders">>
<<set _cardinfoID to "cardinfo-raid-"+$raiders.length+"raiders">>
<<set _picboxID to "picbox-raid-"+$raiders.length+"raiders">>
<<set _textboxID to "textbox-raid-"+$raiders.length+"raiders">>
<</silently>>\
<div class="section">\
<<NextRoomButton>>\
<div class="cardholder-raid-playerside">\
<div class="cardinfo-raid-creature">\
<div class="roomtitle-raid-player">\
Floor $cur_room_num
</div>\
<div class="picbox-raid-player">\
_room_image
</div>\
<div class="namebox-raid-player">\
<strong>$this_room.name</strong>
---- Health: $this_room.cur_hp / $this_room.cur_max_hp ----
</div>\
<div class="textbox-raid-player">\
<ul>\
<<CreatureRoomText $this_room>>
<<if _brainwashedSexBool === true>>\
<li>Because he attacked a Raider who was <<hovertip "<<-setup.brainwashed.tooltip>>">>Brainwashed<</hovertip>>, he was able to get more head, dealing an addition @@.sex;_sexDmgBonus Sexual@@ damage.</li>\
<<elseif _summonerSexBool === true>>\
<li>He attacked the same Raider as his Magic Hands and took advantage of the situation, dealing an additional @@.sex;_sexDmgBonus Sexual@@ damage while his Magic Hands dealt an additional @@.sex;_handsDmgBonus Sexual@@ damage.</li>\
<</if>>\
<<BlessingTriggerText $this_room>>
<<EffectEndingText $this_room>>
</ul>\
</div>\
</div>\
</div>\
<div class="cardholder-raid-raiderside">\
<<for _r = 0; _r < $raiders.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_textboxID">\
<ul>\
<<if $this_room.name === "Wizard" || $this_room.name === "Control Wizard" || $this_room.name === "Wizard Overlord">>\
<<if _text_triggers.check.spellcheck_crit_passed.includes($raiders[_r].index) || _text_triggers.check.spellcheck_passed.includes($raiders[_r].index)>>\
<li><<if _text_triggers.check.spellcheck_crit_passed.includes($raiders[_r].index)>><strong>Critical Success!</strong> <</if>>She focused her mind and warded off the $this_room.name's Trance Spell.</li>\
<<elseif (_text_triggers.check.spellcheck_crit_failed.includes($raiders[_r].index) || _text_triggers.check.spellcheck_failed.includes($raiders[_r].index)) && $this_room.name === "Wizard">>\
<li><<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[_r].index)>><strong>Critical Failure!</strong> <</if>>She tried to steady her mind, but her concentration wasn't strong against the $this_room.name's Trance spell, rendering her unable to attack.</li>\
<<elseif (_text_triggers.check.spellcheck_crit_failed.includes($raiders[_r].index) || _text_triggers.check.spellcheck_failed.includes($raiders[_r].index)) && $this_room.name === "Control Wizard">>\
<li><<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[_r].index)>><strong>Critical Failure!</strong> <</if>>She closed her eyes and tried to stay calm, but she felt the $this_room.name's Trance spell seep into her head, becoming <<hovertip "<<-setup.submissive.tooltip>>">>Submissive<</hovertip>> and <<hovertip "<<-setup.absentminded.tooltip>>">>Absent Minded<</hovertip>> and unable to attack.</li>\
<<elseif (_text_triggers.check.spellcheck_crit_failed.includes($raiders[_r].index) || _text_triggers.check.spellcheck_failed.includes($raiders[_r].index)) && $this_room.name === "Wizard Overlord">>\
<li><<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[_r].index)>><strong>Critical Failure!</strong> <</if>>Before she could focus her mind, the $this_room.name's Trance spell already took it's effect, preventing her from attacking.</li>\
<</if>>\
<</if>>\
<<if (!_text_triggers.check.spellcheck_failed.includes($raiders[_r].index) && !_text_triggers.check.spellcheck_crit_failed.includes($raiders[_r].index) && $this_room.name !== "Summoner Wizard") || ($this_room.name === "Summoner Wizard" && !_wizard_targets.includes($raiders[_r].index))>>\
<<DancerDanceText $raiders[_r] $this_room>>
<<RaiderAtkText $raiders[_r] $this_room>>
<</if>>\
<<if $raiders[_r].attacked === true>>\
<<if $this_room.name === "Wizard">>\
<li>The Wizard blasted her with arcane magic and then fucked her mouth, dealing @@.mag;$raiders[_r].dmg_taken Magical@@ and @@.sex;$raiders[_r].sex_taken Sexual@@ damage to her.</li>\
<<elseif $this_room.name === "Control Wizard">>\
<li>The Control Wizard applied unbearable pressure on her skull while forcing her to suck his dick, dealing @@.mag;$raiders[_r].dmg_taken Magical@@ and @@.sex;$raiders[_r].sex_taken Sexual@@ damage to her.</li>\
<<elseif $this_room.name === "Wizard Overlord">>\
<li>She was knocked off her feet by the Wizard Overlord's incredible power, leaving her mouth open to abuse, dealing @@.mag;$raiders[_r].dmg_taken Magical@@ and @@.sex;$raiders[_r].sex_taken Sexual@@ damage to her.</li>\
<<elseif $this_room.name === "Summoner Wizard">>\
<<if _wizard_targets.includes($raiders[_r].index)>>\
<<set _sexDmg to $raiders[_r].sex_taken - _handsSexDmg>>\
<<else>>\
<<set _sexDmg to clone($raiders[_r].sex_taken)>>\
<</if>>\
<li>She was pinned against the wall by the Summoner Wizard's magic while her mouth was being filled with his cock, dealing @@.mag;$raiders[_r].dmg_taken Magical@@ and @@.sex;_sexDmg Sexual@@ damage to her.</li>\
<</if>>\
<</if>>\
<<if $this_room.name === "Summoner Wizard" && _wizard_targets.includes($raiders[_r].index)>>\
<<if $raiders[_r].attacked === true>>\
<li>While being forced to give the Summoner Wizard head, she was also getting her pussy rubbing by his Magic Hands, taking an addition @@.sex;_handsSexDmg Sexual@@ damage, for a total of @@.sex;$raiders[_r].sex_taken Sexual@@ damage.</li>\
<<else>>\
<li>The Magic Hands bounded her hands and rubbed her pussy, preventing her from attacking and dealing @@.sex;_handsSexDmg Sexual@@ damage to her.</li>\
<</if>>\
<</if>>\
<<if $raiders[_r].sex_taken > 0>>\
<<RaiderFetishText $raiders[_r] $this_room>>
<</if>>\
<<PostCombatText $raiders[_r] $this_room>>
</ul>\
</div>\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\<<silently>>\
*Variables*
<<set _levelup_trigger to false>> set to true if creature gained level
<<set _times_leveledup to 0>> number of times the creature leveled up
<<set _risk_percent to $cur_room.risk_percent>>
<<set _robust_trigger to false>> set to true if robust triggered
<<set _obedience_trigger to false>> set to true if slave obedience stat increased, triggers text
<<set _strength_trigger to false>> set to true if slave strength stat increased, triggers text
<<set _libido_trigger to false>> set to true if slave libido stat increased, triggers text
<<set _energy_trigger to false>> set to true if slave energy increased, triggers text
<<set _virgin_neg_trigger to false>> set to true if slave virginity is broken and replaced with a negative trait
<<set _exp_mod to 0.15>> increase or decrease the amount of exp earned based on the difficulty
*Picture*
<<if $cur_room.name === "Control Wizard">>
CONTROL WIZARD PICS
<<set _busty_control_wizard_pic_0 to "[img[images/creatures/wizard/control_wizard/busty/0.jpg]]">>
<<set _busty_control_wizard_pic_1 to "[img[images/creatures/wizard/control_wizard/busty/1.jpg]]">>
<<set _busty_control_wizard_pic_2 to "[img[images/creatures/wizard/control_wizard/busty/2.jpg]]">>
<<set _busty_control_wizard_pic_3 to "[img[images/creatures/wizard/control_wizard/busty/3.jpg]]">>
<<set _petite_control_wizard_pic_0 to "[img[images/creatures/wizard/control_wizard/petite/0.jpg]]">>
<<set _petite_control_wizard_pic_1 to "[img[images/creatures/wizard/control_wizard/petite/1.jpg]]">>
<<set _petite_control_wizard_pic_2 to "[img[images/creatures/wizard/control_wizard/petite/2.jpg]]">>
<<set _petite_control_wizard_pic_3 to "[img[images/creatures/wizard/control_wizard/petite/3.jpg]]">>
<<set _busty_wizard_pic_list to [_busty_control_wizard_pic_0, _busty_control_wizard_pic_1, _busty_control_wizard_pic_2, _busty_control_wizard_pic_3]>>
<<set _petite_wizard_pic_list to [_petite_control_wizard_pic_0, _petite_control_wizard_pic_1, _petite_control_wizard_pic_2, _petite_control_wizard_pic_3]>>
<<else>>
BASIC WIZARD PICS
<<set _busty_wizard_pic_0 to "[img[images/creatures/wizard/basic_wizard/busty/0.jpg]]">>
<<set _busty_wizard_pic_1 to "[img[images/creatures/wizard/basic_wizard/busty/1.jpg]]">>
<<set _busty_wizard_pic_2 to "[img[images/creatures/wizard/basic_wizard/busty/2.jpg]]">>
<<set _busty_wizard_pic_3 to "[img[images/creatures/wizard/basic_wizard/busty/3.jpg]]">>
<<set _petite_wizard_pic_0 to "[img[images/creatures/wizard/basic_wizard/petite/0.jpg]]">>
<<set _petite_wizard_pic_1 to "[img[images/creatures/wizard/basic_wizard/petite/1.jpg]]">>
<<set _petite_wizard_pic_2 to "[img[images/creatures/wizard/basic_wizard/petite/2.jpg]]">>
<<set _petite_wizard_pic_3 to "[img[images/creatures/wizard/basic_wizard/petite/3.jpg]]">>
<<set _busty_wizard_pic_list to [_busty_wizard_pic_0, _busty_wizard_pic_1, _busty_wizard_pic_2, _busty_wizard_pic_3]>>
<<set _petite_wizard_pic_list to [_petite_wizard_pic_0, _petite_wizard_pic_1, _petite_wizard_pic_2, _petite_wizard_pic_3]>>
ARMORED WIZARD PICS
<<if $cur_room.name === "Armored Wizard">>
<<set _busty_wizard_pic_4 to "[img[images/creatures/wizard/armored_wizard/busty/0.jpg]]">>
<<set _petite_wizard_pic_4 to "[img[images/creatures/wizard/armored_wizard/petite/0.jpg]]">>
<<set _busty_wizard_pic_list.push(_busty_wizard_pic_4)>>
<<set _petite_wizard_pic_list.push(_petite_wizard_pic_4)>>
<</if>>
WIZARD OVERLORD PICS
<<if $cur_room.name === "Wizard Overlord">>
<<set _busty_wizard_pic_4 to "[img[images/creatures/wizard/wizard_overlord/busty/0.jpg]]">>
<<set _busty_wizard_pic_5 to "[img[images/creatures/wizard/wizard_overlord/busty/1.jpg]]">>
<<set _petite_wizard_pic_4 to "[img[images/creatures/wizard/wizard_overlord/petite/0.jpg]]">>
<<set _petite_wizard_pic_5 to "[img[images/creatures/wizard/wizard_overlord/petite/1.jpg]]">>
<<set _busty_wizard_pic_list.push(_busty_wizard_pic_4, _busty_wizard_pic_5)>>
<<set _petite_wizard_pic_list.push(_petite_wizard_pic_4, _petite_wizard_pic_5)>>
<</if>>
<</if>>
<<switch $cur_slave.body_type>>
<<case "Busty">>
<<set _pic to _busty_wizard_pic_list.random()>>
<<case "Petite">>
<<set _pic to _petite_wizard_pic_list.random()>>
<</switch>>
*Get Slave Info*
<<set _cur_slave_trait_names to []>>
<<for _i = 0; _i < $cur_slave.positive_traits.length; _i++>>
<<set _trait to $cur_slave.positive_traits[_i].name>>
<<set _cur_slave_trait_names.push(_trait)>>
<</for>>
<<for _i = 0; _i < $cur_slave.negative_traits.length; _i++>>
<<set _trait to $cur_slave.negative_traits[_i].name>>
<<set _cur_slave_trait_names.push(_trait)>>
<</for>>
*Luck*
<<set _rng to random(1, 6)>>
<<if _rng === 6>>
<<set _luck to 1>>
<<elseif _rng === 1>>
<<set _luck to -1>>
<<else>>
<<set _luck to 0>>
<</if>>
*Base EXP gained*
<<set _exp_amount to Math.round(random($cur_room.min_base_service_exp, $cur_room.max_base_service_exp) + ($cur_room.exp_per_libido * $cur_slave.libido))>>
*Set Stat to use for Rating*
<<switch $cur_room.service_stat>>
<<case "Love">>
<<set _service_stat to $cur_slave.love>>
<<case "Libido">>
<<set _service_stat to $cur_slave.libido>>
<<case "Strength">>
<<set _service_stat to $cur_slave.strength>>
<<case "Intelligence">>
<<set _service_stat to $cur_slave.intelligence>>
<<case "Obedience">>
<<set _service_stat to $cur_slave.obedience>>
<<case "Energy">>
<<set _service_stat to $cur_slave.energy>>
<</switch>>
*Rating*
<<if _service_stat + _luck >= $cur_room.best>>
<<set _rating to 3>>
<<set _exp_amount to Math.round(_exp_amount * setup.service_best_mod)>>
<<elseif _service_stat + _luck >= $cur_room.average>>
<<set _rating to 2>>
<<else>>
<<set _rating to 1>>
<<set _exp_amount to Math.round(_exp_amount * setup.service_worst_mod)>>
<</if>>
*Risk and Strength Check*
<<set _rng to random(1, 100)>>
<<if _risk_percent >= _rng>>
<<set _rng to random($cur_room.min_strength, $cur_room.max_strength)>>
<<if _rng > $cur_slave.strength + _luck>>
ROBUST CHECK
<<if _cur_slave_trait_names.includes("Robust")>>
<<set _rng to random(1, 100)>>
<<if _rng <= setup.robust.percent>>
<<set _robust_trigger to true>>
<<else>>
<<set $cur_slave.injured to true>>
<<set $cur_slave.injured_cd to random($cur_task.min_injured, $cur_task.max_injured)>>
SOFT TRAIT
<<if _cur_slave_trait_names.includes("Soft")>>
<<set $cur_slave.injured_cd *= setup.soft.mult>>
<</if>>
<</if>>
<<else>>
<<set $cur_slave.injured to true>>
<<set $cur_slave.injured_cd to random($cur_room.min_injured, $cur_room.max_injured)>>
SOFT TRAIT
<<if _cur_slave_trait_names.includes("Soft")>>
<<set $cur_slave.injured_cd *= setup.soft.mult>>
<</if>>
<</if>>
<</if>>
<</if>>
*Virgin Check*
<<if _cur_slave_trait_names.includes(setup.virginity.name)>>
REMOVE VIRGINITY TRAIT
<<for _i = 0; _i < $cur_slave.positive_traits.length; _i++>>
<<if $cur_slave.positive_traits[_i].name === setup.virginity.name>>
<<set _remove to $cur_slave.positive_traits.deleteAt(_i)>>
<<break>>
<</if>>
<</for>>
<<set $cur_slave.positive_traits.push(setup.loathing)>>
<<set _virgin_neg_trigger to true>>
<</if>>
*EXP MODIFIERS*
SEXY TRAIT
<<if _cur_slave_trait_names.includes("Sexy")>>
<<set _amount to Math.round(_exp_amount * setup.sexy.float)>>
<<set _exp_amount += _amount>>
<</if>>
CARING TRAIT
<<if _cur_slave_trait_names.includes("Caring")>>
<<set _exp_amount *= setup.caring.mult>>
<</if>>
RUDE TRAIT
<<if _cur_slave_trait_names.includes("Rude")>>
<<set _amount to Math.round(_exp_amount * setup.rude.float)>>
<<set _exp_amount -= _amount>>
<</if>>
*ADD EXP*
DIFFICULTY MOD
<<set _amount to Math.round(_exp_amount * _exp_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _exp_amount += _amount>>
<<case "brutal">>
<<set _exp_amount -= _amount>>
<</switch>>
CLAMP MIN
<<if _exp_amount < 1>>
<<set _exp_amount to 1>>
<</if>>
ADD EXP AND STATS
<<if $cur_room.level < $creature_levelcap>>
<<set $cur_room.exp += _exp_amount>>
<</if>>
<<set $cur_slave.total_exp_given += _exp_amount>>
<<set $cur_slave.total_tasks++>>
LEVEL UP CHECK
<<if $cur_room.exp >= $cur_room.next_level_exp && $cur_room.level < $creature_levelcap>>
<<for _i = 0; _i < 1; _i++>>
<<set _levelup_trigger to true>>
<<set _times_leveledup++>>
<<set $cur_room.level++>>
INCREASE STATS
HEALTH
<<set _amount to random($cur_room.low_hp, $cur_room.high_hp)>>
<<set $cur_room.max_hp += _amount>>
<<set $cur_room.cur_hp += _amount>>
ATTACK
<<set _amount to random($cur_room.low_atk, $cur_room.high_atk)>>
<<set $cur_room.atk += _amount>>
PHYSICAL RESISTANCE
<<set _amount to random($cur_room.low_pres, $cur_room.high_pres)>>
<<set $cur_room.pres += _amount>>
MAGICAL RESISTANCE
<<set _amount to random($cur_room.low_mres, $cur_room.high_mres)>>
<<set $cur_room.mres += _amount>>
SEX
<<set _amount to random($cur_room.low_sex, $cur_room.high_sex)>>
<<set $cur_room.sex += _amount>>
RATE
<<if $cur_room.level % $cur_room.rate_modular === 0>>
<<set $cur_room.rate += $cur_room.rate_gained>>
<</if>>
<<set $cur_room.next_level_exp to Math.round(((($cur_room.level + $cur_room.growth_rate) * ($cur_room.level + $cur_room.growth_rate) * ($cur_room.level + $cur_room.growth_rate)) / setup.creature_nextlevel_divisor) - (setup.creature_nextlevel_constant - ($cur_room.growth_rate * $cur_room.level)))>>
<<if $cur_room.exp >= $cur_room.next_level_exp && $cur_room.level < $creature_levelcap>>
CHECK IF GAINED ANOTHER LEVEL
<<set _i-->>
<<elseif $cur_room.level === $creature_levelcap>>
SET EXP TO LOWEST AMOUNT POSSIBLE TO REACH LEVEL, NO MORE LEVELS GAINED
<<set _last_level to $cur_room.level - 1>>
<<set $cur_room.exp to Math.round((((_last_level + $cur_room.growth_rate) * (_last_level + $cur_room.growth_rate) * (_last_level + $cur_room.growth_rate)) / setup.creature_nextlevel_divisor) - (setup.creature_nextlevel_constant - ($cur_room.growth_rate * _last_level)))>>
<</if>>
<</for>>
<</if>>
*Calc Obedience Stat Growth*
<<if $cur_slave.obedience < $cur_slave.obedience_limit>>
---CALC AMOUNT---
<<set _obedience_growth to $cur_room.obedience_growth * $cur_slave.obedience_growth_rate>>
---STAT GROWTH MODIFIERS---
LOYAL
<<if _cur_slave_trait_names.includes("Loyal")>>
<<if $cur_slave.love >= setup.loyal.love_req>>
<<set _obedience_growth *= setup.loyal.mult>>
<</if>>
<</if>>
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _obedience_growth *= setup.loathing.float>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.obedience_tracker += _obedience_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.obedience_tracker >= $cur_slave.obedience_tracker_limit>>
<<set _obedience_trigger to true>>
<<set $cur_slave.obedience++>>
<<set $cur_slave.obedience_tracker to 0>>
<<set $cur_slave.obedience_tracker_limit to Math.trunc(($cur_slave.obedience * $cur_slave.obedience * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
*Calc Libido Stat Growth*
<<if $cur_slave.libido < $cur_slave.libido_limit>>
---CALC AMOUNT---
<<set _libido_growth to $cur_room.libido_growth * $cur_slave.libido_growth_rate>>
---STAT GROWTH MODIFIERS---
LOYAL
<<if _cur_slave_trait_names.includes("Loyal")>>
<<if $cur_slave.love >= setup.loyal.love_req>>
<<set _libido_growth *= setup.loyal.mult>>
<</if>>
<</if>>
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _libido_growth *= setup.loathing.float>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.libido_tracker += _libido_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.libido_tracker >= $cur_slave.libido_tracker_limit>>
<<set _libido_trigger to true>>
<<set $cur_slave.libido++>>
<<set $cur_slave.libido_tracker to 0>>
<<set $cur_slave.libido_tracker_limit to Math.trunc(($cur_slave.libido * $cur_slave.libido * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
*Calc Strength Stat Growth*
<<if $cur_slave.strength < $cur_slave.strength_limit>>
---CALC AMOUNT---
<<set _strength_growth to $cur_room.strength_growth * $cur_slave.strength_growth_rate>>
---STAT GROWTH MODIFIERS---
MOTIVATED
<<if _cur_slave_trait_names.includes("Motivated")>>
<<if $cur_slave.love >= setup.loyal.love_req>>
<<set _strength_growth *= setup.motivated.mult>>
<</if>>
<</if>>
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _strength_growth *= setup.loathing.float>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.strength_tracker += _strength_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.strength_tracker >= $cur_slave.strength_tracker_limit>>
<<set _strength_trigger to true>>
<<set $cur_slave.strength++>>
<<set $cur_slave.strength_tracker to 0>>
<<set $cur_slave.strength_tracker_limit to Math.trunc(($cur_slave.strength * $cur_slave.strength * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
*Calc Energy Stat Growth*
<<if $cur_slave.energy < $cur_slave.energy_limit>>
---CALC AMOUNT---
<<set _energy_growth to $cur_room.energy_growth * $cur_slave.energy_growth_rate>>
---STAT GROWTH MODIFIERS---
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _energy_growth *= setup.loathing.float>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.energy_tracker += _energy_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.energy_tracker >= $cur_slave.energy_tracker_limit>>
<<set _energy_trigger to true>>
<<set $cur_slave.energy++>>
<<set $cur_slave.cur_energy++>>
<<set $cur_slave.energy_tracker to 0>>
<<set $cur_slave.energy_tracker_limit to Math.trunc(($cur_slave.energy * $cur_slave.energy * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
<<set _name to $cur_slave.name>>
*Display*
<</silently>>\
<div id="section">\
<div id="titlebox">\
<<switch $room_num>>\
<<case 1>>\
$cur_room.name in Room One
<<case 2>>\
$cur_room.name in Room Two
<<case 3>>\
$cur_room.name in Room Three
<<case 4>>\
$cur_room.name in Room Four
<<case 5>>\
$cur_room.name in Room Five
<<case 6>>\
$cur_room.name in Room Six
<<case 7>>\
$cur_room.name in Room Seven
<<case 8>>\
$cur_room.name in Room Eight
<<case 9>>\
$cur_room.name in Room Nine
<<case 10>>\
$cur_room.name in Room Ten
<<case 11>>\
$cur_room.name in Room Eleven
<<case 12>>\
$cur_room.name in Room Twelve
<</switch>>\
</div>\
<div class="centered">\
_pic
</div>\
<div id="textbox">\
<<if _luck === 1>>\
_name's service was excellent. \
<<elseif _luck === 0>>\
_name's service was average. \
<<else>>\
_name's service was poor. \
<</if>>\
<<if _rating === 3>>\
$cur_room.best_text
Your $cur_room.name gained _exp_amount EXP.
<<elseif _rating === 2>>\
$cur_room.average_text
Your $cur_room.name gained _exp_amount EXP.
<<else>>\
$cur_room.worst_text
Your $cur_room.name only gained _exp_amount EXP.
<</if>>\
<<if _robust_trigger === true>>\
Because she is <<hovertip "<<-setup.robust.tooltip>>">>Robust<</hovertip>>, she was not injured.
<<elseif $cur_slave.injured === true>>\
She has been injured and needs $cur_slave.injured_cd <<if $cur_slave.injured_cd === 1>>day<<else>>days<</if>> to recover.
<</if>>\
<<if _levelup_trigger === true>>\
It gained _times_leveledup <<if _times_leveledup === 1>>level<<else>>levels<</if>>. <<if $cur_room.level === $creature_levelcap>>It cannot gain anymore levels at this Rank.<</if>>
<</if>>\
<<if _obedience_trigger === true>>\
$cur_slave.name's <span style="color:cyan">Obedience</span> stat has increased. <<if $cur_slave.obedience === $cur_slave.obedience_limit>>Her <span style="color:cyan">Obedience</span> cannot go any higher.<</if>>
<</if>>\
<<if _libido_trigger === true>>\
$cur_slave.name's <span style="color:fuchsia">Libido</span> stat has increased. <<if $cur_slave.libido === $cur_slave.libido_limit>>Her <span style="color:fuchsia">Libido</span> cannot go any higher.<</if>>
<</if>>\
<<if _strength_trigger === true>>\
$cur_slave.name's <span style="color:orange">Strength</span> stat has increased. <<if $cur_slave.strength === $cur_slave.strength_limit>>Her <span style="color:orange">Strength</span> cannot go any higher.<</if>>
<</if>>\
<<if _energy_trigger === true>>\
$cur_slave.name's <span style="color:mediumseagreen">Energy</span> stat has increased. <<if $cur_slave.energy === $cur_slave.energy_limit>>Her <span style="color:mediumseagreen">Energy</span> cannot go any higher.<</if>>
<</if>>\
<<if _virgin_neg_trigger === true>>\
$cur_slave.name's virginity has been taken and because she was not ready to lose it, <span style="color:red">she has gained a new negative Trait</span>.
<</if>>\
<<if $cur_slave.cur_energy === 0 || $cur_slave.injured === true>>\
[[Finish|Slave Room]]
<<else>>\
[[Finish|Assign Slave Task]]
<</if>>\
</div>\
</div>\
<<silently>>\
---UPDATE SLAVE---
<<switch $cur_slave_num>>
<<case 1>>
<<set $slave_room_1 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 2>>
<<set $slave_room_2 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 3>>
<<set $slave_room_3 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 4>>
<<set $slave_room_4 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 5>>
<<set $slave_room_5 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 6>>
<<set $slave_room_6 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 7>>
<<set $slave_room_7 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 8>>
<<set $slave_room_8 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 9>>
<<set $slave_room_9 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 10>>
<<set $slave_room_10 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<</switch>>
---UPDATE ROOM---
<<switch $room_num>>
<<case 1>>
<<set $dungeon_room_1 to $cur_room>>
<<case 2>>
<<set $dungeon_room_2 to $cur_room>>
<<case 3>>
<<set $dungeon_room_3 to $cur_room>>
<<case 4>>
<<set $dungeon_room_4 to $cur_room>>
<<case 5>>
<<set $dungeon_room_5 to $cur_room>>
<<case 6>>
<<set $dungeon_room_6 to $cur_room>>
<<case 7>>
<<set $dungeon_room_7 to $cur_room>>
<<case 8>>
<<set $dungeon_room_8 to $cur_room>>
<<case 9>>
<<set $dungeon_room_9 to $cur_room>>
<<case 10>>
<<set $dungeon_room_10 to $cur_room>>
<<case 11>>
<<set $dungeon_room_11 to $cur_room>>
<<case 12>>
<<set $dungeon_room_12 to $cur_room>>
<</switch>>
<</silently>>\
<<silently>>\
* SETUP ROOM *
<<RoomSetup $raiders $this_room>>
<<TrapStats $this_room>>
* SETUP RAIDER *
<<RaiderSetup $raiders>>
* PRE COMBAT EFFECTS *
<<PreCombat $raiders $this_room>>
* DANCER BUFF *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].class === "Dancer">>
<<DancerBuff $raiders[_i] $this_room>>
<</if>>
<</for>>
* 4 TRAPCHECKS FOR EACH RAIDER *
<<set _wet_trapcheck_text to []>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<for _j = $this_room.num_of_trapchecks; _j > 0; _j-->>
_j TRAPCHECKS REMAINING
<<set $this_room.total_attempts++>>
<<set $this_room.report.trap_attempts++>>
CALC TRAPCHECK
<<CalcTrapcheck $raiders[_i] $this_room.cur_check>>
WET BONUS
<<if $raiders[_i].status_names.includes("Wet")>>
<<set _trapcheck += Math.clamp(Math.trunc($this_room.wet_float * _trapcheck), 1, 1000000)>>
<<set _wet_trapcheck_text.push($raiders[_i].index)>>
<</if>>
<<SimTrapcheck $raiders[_i] _trapcheck>>
<</for>>
<</for>>
* SEXUAL DAMAGE FOR EACH FAIL *
<<for _i = 0; _i < $raiders.length; _i++>>
<<set _fail_count to _text_triggers.check.trapcheck_failed.count($raiders[_i].index) + _text_triggers.check.trapcheck_crit_failed.count($raiders[_i].index)>> Holds how many times the raider failed the trapcheck
<<set $this_room.total_triggers += _fail_count>> Increases the number of times trap triggered for stats
<<set $this_room.report.trap_successes += _fail_count>>
<<set _sex to Math.trunc($this_room.cur_sex * $this_room.sex_float)>> SEX DMG: _sex
<<for _f = 0; _f < _fail_count; _f++>>
<<set _sex_mod to 1 + ($this_room.sex_mod * _f)>> SEX MOD FOR FAIL _f: _sex_mod
<<SexualAttack $raiders[_i] $this_room _sex _sex_mod>>
<</for>>
UPDATE RAIDER REPORT
<<if _fail_count === 1>>
<<set _entry to "She failed "+_fail_count+" @@.trap;Trapcheck@@ and took @@.sex;"+$raiders[_i].sex_taken+"@@ damage.">>
<<elseif _fail_count > 1>>
<<set _entry to "She failed "+_fail_count+" @@.trap;Trapchecks@@ and took @@.sex;"+$raiders[_i].sex_taken+"@@ damage.">>
<<else>>
<<set _entry to "She passed all her @@.trap;Trapchecks@@.">>
<</if>>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<</for>>
* POST COMBAT EFFECTS *
<<for _r = 0; _r < $raiders.length; _r++>>
<<PostCombat $raiders[_r] $this_room>>
<</for>>
* CHOOSE RAIDER PICTURE *
SETUP PIC ARRAY
<<set _picArray to clone($this_room.raider_pics)>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<if _text_triggers.status.captured.includes($raiders[_i].index)>>
* Raider Captured *
<<set $raiders[_i].pic to _picArray[$raiders[_i].body_type].pluck()>>
<</if>>
<</for>>
* END OF COMBAT REPORT *
<<PostCombatReport $raiders $this_room>>
* CLEAN UP *
<<CleanUp $raiders $this_room>>
* DISPLAY INFO *
<<set _cardholderID to "cardholder-raid-"+$raiders.length+"raiders">>
<<set _cardinfoID to "cardinfo-raid-"+$raiders.length+"raiders">>
<<set _textboxID to "textbox-raid-"+$raiders.length+"raiders">>
<<set _picboxID to "picbox-raid-"+$raiders.length+"raiders">>
<</silently>>\
<div class="section">\
<<NextRoomButton>>\
<div class="cardholder-raid-playerside">\
<div class="cardinfo-raid-trap">\
<div class="roomtitle-raid-player">\
Floor $cur_room_num
</div>\
<div class="picbox-raid-player">\
$this_room.pic
</div>\
<div class="namebox-raid-player">\
<strong>$this_room.name</strong>
---- $this_room.check_type: $this_room.cur_check ----
</div>\
<div class="textbox-raid-player">\
<ul>\
<<TrapRoomText $this_room>>
<<BlessingTriggerText $this_room>>
<<EffectEndingText $this_room>>
</ul>\
</div>\
</div>\
</div>\
<div class="cardholder-raid-raiderside">\
<<for _r = 0; _r < $raiders.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_textboxID">\
<ul>\
<<DancerDanceText $raiders[_r] $this_room>>
<<if _wet_trapcheck_text.includes($raiders[_r].index)>>\
<li>Her <<hovertip "<<-setup.wet.tooltip>>">>Wet<</hovertip>> pussy made her more susceptible as she crossed the bridge.</li>\
<</if>>\
<<set _times_failed to _text_triggers.check.trapcheck_crit_failed.count($raiders[_r].index) + _text_triggers.check.trapcheck_failed.count($raiders[_r].index)>>\
<<switch _times_failed>>\
<<case 0>>\
<li>She avoided all the grooves rubbing against her pussy as she crossed the bridge.</li>\
<<case 1>>\
<li>She only rubbed her crotch against a groove in the bridge once, taking <span style="color:fuchsia">$raiders[_r].sex_taken</span> Sexual damage.</li>\
<<case 2>>\
<li>She grinded her pussy against the bridge's bumps 2 times, taking <span style="color:fuchsia">$raiders[_r].sex_taken</span> Sexual damage.</li>\
<<case 3>>\
<li>She was unable to avoid pleasuring herself on the bridge 3 times, taking <span style="color:fuchsia">$raiders[_r].sex_taken</span> Sexual damage.</li>\
<<default>>\
<li>She failed to avoid any of the bumps and grooves on the bridge, taking <span style="color:fuchsia">$raiders[_r].sex_taken</span> Sexual damage.</li>\
<</switch>>\
<<if $raiders[_r].sex_taken > 0>>\
<<RaiderFetishText $raiders[_r] $this_room>>
<</if>>\
<<PostCombatText $raiders[_r] $this_room>>
</ul>\
</div>\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\<<switch $tutorial_page>>\
<<case 1>>\
<<silently>>\
* Variables *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Tutorial
</div>\
<div class="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/mistress/face.jpg]]
</div>\
<div class="dialogue-text">\
<<if $seen_intro === true>>\
Need some help learning the basics of being a dungeon lord? Don't worry, I will help guide you as the new lord of my dungeon. That's not a sexual innuendo, I promise. I want you to succeed since we both benefit from the dungeon's performance.
<<else>>\
Hello $pc_name, my name is Ahri and I am here to guide you as the new dungeon lord in my dungeon. If you are confused, that means you skipped the story plot and just want to get down to developing the lewdest dungeon you can imagine. Wonderful! I knew I was right to choose you.
<</if>>\
Unfortunately, there isn't much that remains inside my dungeon. Just enough space to start a dungeon, including a couple empty Floors for Creatures and Traps, a Vault, a Slave Room, and a few living spaces for us. Lets take a quick tour before going into detail about your job as a dungeon lord.
</div>\
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="forward"><<button [[Next|Tutorial]]>><<set $tutorial_page++>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
</div>\
<<case 2>>\
<<silently>>\
GUIDE TEXT
<<set _default_text to "You can click on the Buttons or the underlined Hot Key to learn more. Once you are done, you can click the Next button or the Right Arrow Key.">>
<<set _manager_text to "Your Dungeon Manager hold all your Creatures and Traps that guard your Vault. You can view each unit's stats, change the layout of your Dungeon, clear a floor, change a Trap's mode, or upgrade Creatures. You can also expand the Dungeon by adding Floors as you progress through the Ranks.">>
<<set _slave_text to "Your Slave Rooms is where any Slaves you have are kept, either from the enslaving Raiders or purchasing from the Slave Market. You can visit each of your Slaves to assign them a Job, Train or Discipline them, and more. You can also build new rooms to store more Slaves as you progress through the Ranks.">>
<<set _amenities_text to "Your Amenities are other rooms, including my room and yours. As you increase your Dungeon Rank, you will be able to purchase new Amenities, each with their own benefits.">>
<<set _town_text to "You can venture out of the Dungeon and into the nearby town. In town, there are various shops and stalls that offer goods and services to aid you. As time goes on and you increase your Rank, new buildings will become available.">>
<<set _guidebook_text to "The Guildbook is a very detailed book explaining anything and everything about being a Dungeon Lord. You can view it here or even during Raids so be sure to make good use of it if you forget anything. I worked very hard on this!">>
<<set _save_load_text to "A magical box that can save your game or continue old games, so mysterious.">>
<<set _end_text to "When you End Day, Slaves will perform their Jobs and Raiders will gather outside the Dungeon to begin their Raids. Be sure to take care of everything you want to do before ending the day.">>
<</silently>>\
<div class="wrapper">\
<div class="hints-main-menu">\
<div class="hints-picbox-main-menu">\
[img[images/mistress/face.jpg]]
</div>\
<div class="hints-textbox-main-menu">\
<span id="guide_text">_default_text</span>
</div>\
</div>\
<div class="bodybox-main-menu">\
<div class="buttonholder-main-menu">\
<div class="buttoncells-main-menu">\
<div class="menubutton">\
<span id="1"><<button "Dungeon Manager ^^1^^">><<replace "#guide_text">><<print _manager_text>><</replace>><</button>></span>
</div>\
</div>\
<div class="buttoncells-main-menu">\
<div class="menubutton">\
<span id="2"><<button "Slave Rooms ^^2^^">><<replace "#guide_text">><<print _slave_text>><</replace>><</button>></span>
</div>\
</div>\
<div class="buttoncells-main-menu">\
<div class="menubutton">\
<span id="3"><<button "Amenities ^^3^^">><<replace "#guide_text">><<print _amenities_text>><</replace>><</button>></span>
</div>\
</div>\
<div class="buttoncells-main-menu">\
<div class="menubutton">\
<span id="4"><<button "Town ^^4^^">><<replace "#guide_text">><<print _town_text>><</replace>><</button>></span>
</div>\
</div>\
<div class="buttoncells-main-menu">\
<div class="menubutton">\
<span id="5"><<button "Guidebook ^^5^^">><<replace "#guide_text">><<print _guidebook_text>><</replace>><</button>></span>
</div>\
</div>\
<div class="buttoncells-main-menu">\
<div class="menubutton">\
<span id="6"><<button "Save/Load ^^6^^">><<replace "#guide_text">><<print _save_load_text>><</replace>><</button>></span>
</div>\
</div>\
<div class="buttoncells-main-menu">\
<div class="raidbutton">\
<span id="7"><<button "End Day ^^7^^">><<replace "#guide_text">><<print _end_text>><</replace>><</button>></span>
</div>\
</div>\
</div>\
<div class="infoholder-main-menu">\
<div class="event-holder-main-menu">\
<div class="event-box-main-menu">\
<div class="event-title-main-menu">\
Event Information
</div>\
<div class="event-text-main-menu">\
Any current events will be shown here, which occur randomly.
</div>\
</div>\
</div>\
<div class="dungeon-holder-main-menu">\
<div class="dungeon-box-main-menu">\
<div class="dungeon-title-main-menu">\
Dungeon News
</div>\
<div class="dungeon-text-main-menu">\
<ul>\
<li>Displays information for you at a glance.</li>\
<li>Hey, listen!</li>\
<li>Information includes Slave updates, shop alerts, new missions, and more.</li>\
</ul>\
</div>\
</div>\
</div>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[Next|Tutorial]]>><<set $tutorial_page++>><</button>></span>
</div>\
</div>\
<<case 3>>\
<div class="section">\
<div class="titlebox">\
Tutorial
</div>\
<div class="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/mistress/face.jpg]]
</div>\
<div class="dialogue-text">\
Now let's quickly go over the information on the left. In addition to showing your stats, it either shows the Dungeon's stats or Raider's Health, Lust, and Statuses during their Raid. We will cover the Raider's stats later so lets focus on the information being shown.
</div>\
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="forward"><<button [[Next|Tutorial]]>><<set $tutorial_page++>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
</div>\
<<case 4>>\
<div class="section">\
<div class="titlebox">\
Tutorial
</div>\
<div class="guidebook-title">\
Player Information
</div>\
<div class="guidebook-textbox-big">\
<span class="gold">Gold</span> is stored in the Vault to lure Raiders to the Dungeon each night. It can be used to build new Floors, Slave Rooms, and Amenities or in town for goods and services. You can earn <span class="gold">Gold</span> by Capturing Raiders, from Slave Jobs or Quests, or by Selling Slaves and Treasures.
<span class="le">LE</span> is short for <span class="le">Lust Essence</span> and is used to unlock Creature, Traps, and Blessings from me, the Goddess. You gain <span class="le">LE</span> by gaining levels or from certain events.
<span class="energy">Energy</span> is needed to perform actions such as Training or Disciplining Slaves and is replenished at the start of each day.
<span class="mana">Mana</span> is required to cast Spells during Raids and is replenished at the start of each day.
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[Next|Tutorial]]>><<set $tutorial_page++>><</button>></span>
</div>\
</div>\
<<case 5>>\
<div class="section">\
<div class="titlebox">\
Tutorial
</div>\
<div class="guidebook-title">\
Dungeon Information
</div>\
<div class="guidebook-textbox-big">\
<span class="reputation">Reputation</span> is the popularity of your Dungeon, meaning the higher it is, the more Raiders that enter your Dungeon. <span class="reputation">Reputation</span> increases by Capturing Raiders or completing Quests. If a Raider clears your Dungeon, it will drop. If you have no Gold or Treasures for her to loot, your <span class="reputation">Reputation</span> will be heavily damaged.
Threat is the perceived difficulty of your Dungeon. As it increases, more skilled Raiders will come to your Dungeon. Threat increases as you Capture Raiders and decreases as Raiders clear your Dungeon. If you Fuck or Enslave any Raiders, your Threat will increase more quickly.
Ranks are assigned by the Adventurer's Guild to Raiders and Dungeons. Raiders can only enter Dungeons that are within their own Rank, even if your Threat is high. Once you have achieved the <span class="reputation">Reputation</span> milestone in your Rank, you can Rank up your Dungeon which allows you to expand your Dungeon and have access to new Creatures, Traps, and Blessings. This also means more difficult Raiders can enter your Dungeon, so make sure you are prepared before Ranking up.
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[Next|Tutorial]]>><<set $tutorial_page++>><</button>></span>
</div>\
</div>\
<<case 6>>\
<div class="section">\
<div class="titlebox">\
Tutorial
</div>\
<div class="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/mistress/face.jpg]]
</div>\
<div class="dialogue-text">\
Let's talk about how you stop Raiders from Clearing your Dungeon and looting your Vault. As Raiders go through your Dungeon, they face Creatures or Traps that you assign on each Floor. Raiders can become Captured if their Health is reduced to zero or if their Lust becomes full. They also need to be on a Floor with a unit that is capable of Capturing Raiders. All Creatures can, but some Traps cannot Capture Raiders. Each Creature and Trap will have a description of what will happen when Raiders encounter that unit and will also note any other conditions they may have, including the ability to Capture Raiders or not.
</div>\
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="forward"><<button [[Next|Tutorial]]>><<set $tutorial_page++>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
</div>\
<<case 7>>\
<div class="section">\
<div class="titlebox">\
Tutorial
</div>\
<div class="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/mistress/face.jpg]]
</div>\
<div class="dialogue-text">\
Since we are starting from scratch, I will gift you one Blessing, Creature, and Trap. Blessings can provided immediate benefit or have special effects. They can be powerful in the right situations, so be on the lookout for any that fit your strategy.
</div>\
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="forward"><<button [[Next|Tutorial]]>><<set $tutorial_page++>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
</div>\
<<case 8>>\
<<set _starting_blessing_list to clone(setup.allBlessingList.starting)>>\
<div class="section">\
<div class="titlebox">\
<strong>Choose a Blessing</strong>
</div>\
<div class="buttonbox-spellbook">\
</div>\
<div class="container-spellbook">\
<<for _i = 0; _i < _starting_blessing_list.length; _i++>>\
<<set _hotKey to _i + 1>>\
<<set _cur_blessing to _starting_blessing_list[_i]>>\
<div class="cellholder-spellbook">\
<div class="cells-blessing">\
<<if _cur_blessing.type.includes("Mythical")>>\
<div class="cell-name-blessing-gold">\
_cur_blessing.name
</div>\
<<else>>\
<div class="cell-name-blessing">\
_cur_blessing.name
</div>\
<</if>>\
<div class="cell-title-blessing">\
Blessing Tree: _cur_blessing.tree
</div>\
<div class="cell-description-blessing">\
_cur_blessing.tooltip
</div>\
<div class="cell-link-spellbook">\
<<capture _i, _hotKey>>\
<span @id="_hotKey"><<button "Free ^^_hotKey^^" "Tutorial">><<BlessingTriggers _starting_blessing_list[_i]>><<set $pc_blessing_list.push(_starting_blessing_list[_i].name)>><<set $tutorial_page++>><</button>></span>
<</capture>>\
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\
<<case 9>>\
<div class="section">\
<<silently>>\
* Setup Creature and Trap List *
<<GoddessCreatureList>>
<<GoddessTrapList>>
<</silently>>\
<div class="titlebox">\
Choose a Creature and Trap
</div>\
<div class="sidebutton-newroom">\
</div>\
<div class="cardcontainer-newroom">\
<div class="cardholder-newroom">\
<<for _c = 0; _c < _goddessCreatureList.length; _c++>>\
<<set _creature to _goddessCreatureList[_c]>>\
<<set _hotKey to _c + 1>>\
<<set _shiftKey to "shift" + _hotKey>>\
<<capture _creature, _c, _hotKey, _shiftKey>>\
<div class="cellholder-newroom">\
<div class="cells-newroom">\
<div class="cell-title-newroom">\
_creature.name
</div>\
<div class="cell-pic-newroom">\
_creature.pic
</div>\
<div class="cell-text-newroom">\
<span @id="_shiftKey"><<button "[img[images/icons/desc_icon.png]] ^^[_hotKey]^^" "Creature Preview">><<set $preview to _creature>><<set $return to "Tutorial">><</button>></span>\
<<if $pc_creature_list.length === 1>>\
<div class="offbutton">\
<<button "Free">><</button>>
</div>\
<<elseif $pc_trap_list.length === 1 && $fresh_start_bool === true>>\
<span @id="_hotKey"><<button "Free ^^_hotKey^^" "Fresh Start">><<set $pc_creature_list.push(_creature.base_name)>><<set $tutorial_page++>><</button>></span>
<<elseif $pc_trap_list.length === 1 && $fresh_start_bool === false>>\
<span @id="_hotKey"><<button "Free ^^_hotKey^^" "Tutorial">><<set $pc_creature_list.push(_creature.base_name)>><<set $tutorial_page++>><</button>></span>
<<else>>\
<span @id="_hotKey"><<button "Free ^^_hotKey^^" "Tutorial">><<set $pc_creature_list.push(_creature.base_name)>><</button>></span>
<</if>>\
</div>\
</div>\
</div>\
<</capture>>\
<</for>>\
</div>\
<div class="cardholder-newroom">\
<<for _t = 0; _t < _goddessTrapList.length; _t++>>\
<<set _trap to _goddessTrapList[_t]>>\
<<set _hotKey to _t + 5>>\
<<set _shiftKey to "shift" + _hotKey>>\
<<capture _trap, _t, _hotKey, _shiftKey>>\
<div class="cellholder-newroom">\
<div class="cells-newroom">\
<div class="cell-title-newroom">\
_trap.name
</div>\
<div class="cell-pic-newroom">\
_trap.pic
</div>\
<div class="cell-text-newroom">\
<span @id="_shiftKey"><<button "[img[images/icons/desc_icon.png]] ^^[_hotKey]^^" "Trap Preview">><<set $preview to _trap>><<set $return to "Tutorial">><</button>></span>\
<<if $pc_trap_list.length === 1>>\
<div class="offbutton">\
<<button "Free">><</button>>
</div>\
<<elseif $pc_creature_list.length === 1 && $fresh_start_bool === true>>\
<span @id="_hotKey"><<button "Free ^^_hotKey^^" "Fresh Start">><<set $pc_trap_list.push(_trap.base_name)>><<set $tutorial_page++>><</button>></span>
<<elseif $pc_creature_list.length === 1 && $fresh_start_bool === false>>\
<span @id="_hotKey"><<button "Free ^^_hotKey^^" "Tutorial">><<set $pc_trap_list.push(_trap.base_name)>><<set $tutorial_page++>><</button>></span>
<<else>>\
<span @id="_hotKey"><<button "Free ^^_hotKey^^" "Tutorial">><<set $pc_trap_list.push(_trap.base_name)>><</button>></span>
<</if>>\
</div>\
</div>\
</div>\
<</capture>>\
<</for>>\
</div>\
</div>\
<div class="sidebutton-newroom">\
</div>\
</div>\
<<case 10>>\
<div class="section">\
<div class="titlebox">\
Tutorial
</div>\
<div class="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/mistress/face.jpg]]
</div>\
<div class="dialogue-text">\
Great! Remember, before you can end the day, each of your Dungeon Floors needs a Creature or Trap occupying it. You can only have one of each Creature or Trap in your Dungeon, so be sure to create a solid layout with strong synergy to get the best results. Time to teach you about Raids and how you can help your units stop the Raiders from reaching your Vault. Why don't you assign your new Creature and Trap to a Floor in the Dungeon while I get ready.
</div>\
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="forward"><<button [[Next|Dungeon Floor Manager]]>><<set $tutorial_page++>><<set $is_tutoring to true>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
</div>\
<<case 11>>\
<<silently>>\
*Variables*
<<set _empty_bool to false>>
<<for _i = 0; _i < $dungeon_floor_list.length; _i++>>
<<if $dungeon_floor_list[_i].room_type === "Empty" && $dungeon_floor_list[_i].built === true>>
<<set _empty_bool to true>>
<<break>>
<</if>>
<</for>>
*Display*
<</silently>>\
<<if _empty_bool === true>>\
<div class="section">\
<div class="titlebox">\
Tutorial
</div>\
<div class="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/mistress/face.jpg]]
</div>\
<div class="dialogue-text">\
Whoops! Looks like one or more of your Dungeon Floors are empty. We can't continue until you assign each Floor a Creature or Trap. All you have to do is select an empty Floor and choose which Creature or Trap you want to occupy that Floor. You can only have one of each Creature or Trap in your Dungeon, so you'll have to use both the Units I taught you. Now scurry off and get those Floors filled, I believe in you!
</div>\
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="forward"><<button [[Next|Dungeon Floor Manager]]>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
</div>\
<<else>>\
<div class="section">\
<div class="titlebox">\
Tutorial
</div>\
<div class="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/mistress/face.jpg]]
</div>\
<div class="dialogue-text">\
Great! Now it is time for our mock Raid. Don't worry though, I will be there every step along the way.
</div>\
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="forward"><<button [[Next|Raiding Party]]>><<set $tutorial_page++>><<set $number_of_raiders to 1>><<set $raiding_girls_list to [$example_raider]>><<set $min_party_size to 1>><<set $max_party_size to 1>><<set $is_raiding to true>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
</div>\
<</if>>\
<<case 12>>\
<<set $is_tutoring to false>>\
<<set $is_raiding to false>>\
<<for _i = 0; _i < $dungeon_floor_list.length; _i++>>\
<<if $dungeon_floor_list[_i].room_type === "Creature">>\
<<set $dungeon_floor_list[_i].cur_hp to Math.trunc($dungeon_floor_list[_i].max_hp)>>\
<<set $dungeon_floor_list[_i].raid_levels_gained to 0>>\
<</if>>\
<</for>>\
<<if $raid_tutorial <= 3>>\
<<set $pc_blessing_list.push(setup.goddessBlessing_0.name)>>\
<</if>>\
<div class="section">\
<div class="titlebox">\
Tutorial
</div>\
<div class="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/mistress/face.jpg]]
</div>\
<div class="dialogue-text">\
<<if $raid_tutorial === 1>>\
You were able to Capture me after just the first room?! I didn't even get a chance to cover how to cast Spells! Whatever, you will probably figure it out.
<<elseif $raid_tutorial === 3>>\
Nice! You were able to Capture me. Even though I was going easy on you, it does give me confidence that I choose the right person for the job.
<</if>>\
Normally when you Capture a Raider, you will take any <span class="gold">Gold</span> and <span class="gold">Treasure</span> she was carrying and keep her in the holding area until all the Raiders have finished their Raid. Once the Raids are done, you can choose what to do with each of them. Having sex is how you earn EXP, but increases the amount of Threat gained, but it's total worth it! Releasing them means you lose out on EXP, but you won't gain as much Threat. Lastly, you can also choose to Enslave one of them if you have an available Slave Room. This greatly increases your Threat and damages your <span class="reputation">Reputation</span>, but you get a new Slave for free. You will have to break her in before she will be willing to work for you, unlike Slaves bought at the Slave Market in town.
</div>\
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="forward"><<button [[Next|Tutorial]]>><<set $tutorial_page++>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
</div>\
<<case 13>>\
<div class="section">\
<div class="titlebox">\
Tutorial
</div>\
<div class="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/mistress/face.jpg]]
</div>\
<div class="dialogue-text">\
Speaking of Slaves, they are essential to increase your productivity around the dungeon. They can be assigned various Jobs, such as earning <span class="gold">Gold</span> as a prostitute or taking care of Creatures or Traps. They can also go out on Quests at the Adventurer's Guild to earn <span class="gold">Gold</span> and <span class="reputation">Reputation</span>. You can also enroll Slaves in Classes at the Slave Market to help increase their Stats. All these tasks increases their <span class="stress">Stress</span> and once they reach @@.stress;100 Stress@@, they will become Disobedient and won't work until they it is reduced to @@.stress;0@@. Be sure to keep an eye on your Slave's <span class="stress">Stress</span> and give them days off when needed. Each Slave has their own Traits, Stats, and Sex Skills that should be considered when assigning tasks. Lets take a look at one right now to get a better feel for it. Just give me one minute to change again.
</div>\
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="forward"><<button [[Next|Tutorial]]>><<set $tutorial_page++>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
</div>\
<<case 14>>\
<<silently>>\
<<if $slaveroom_page == null>>
<<set $slaveroom_page to "skill">>
<</if>>
GUIDE TEXT
<<set _default_text to "Don't get any funny ideas, this is strictly for educational purposes!<br> Hover over the Stat icons to learn about what they do and how they effect your Slave's outcome during Jobs, Quests, and Classes or use the buttons or Hot Keys and I'll explain more about it.">>
<<set _name_text to "This icon allows you to change the name of your Slave. Since you don't own me, I won't allow you to change my name. Nyahhh!">>
<<set _skill_text to "Shows your Slave's Sex Skills at the bottom of her card. Sex Skills are used during Service and Prostitution Jobs and increases the rewards gained. They can be increased through those Jobs or by Training them.">>
<<set _record_text to "Shows your Slave's Records at the bottom of her card. That's about it, this one is really for the stat nerds.">>
<<set _job_text to "Takes you to the Jobs list, where you can assign the Slave a Job available in your Dungeon. She will complete that Job when you end the day unless she is Injured, Disobedient, has the day off, or has been assigned a Quest or Class.">>
<<set _training_text to "Allows you to Train your Slave in one Sex Skill. This action costs @@.energy;Energy@@ and increases her @@.stress;Stress@@. Multiple Training sessions in the same day has diminishing returns.">>
<<set _discipline_text to "Allows you to Discipline your Slave, reducing her @@.stress;Stress@@. This action costs @@.energy;Energy@@ and can only be used on Disobedient Slaves. Multiple Disciplining sessions in the same day has diminishing returns.">>
<<set _scolding_text to "Scolds your Slave, preventing them from failing the Obedience check during their next Job, Quest, or Class. This also increases the amount of @@.stress;Stress@@ gained and reduced the amount of @@.love;Love@@ EXP gained that day. Scolding the same Slave consecutive days increases the negative effects.">>
<<set _dayoff_text to "Gives your Slave the day off, increasing the amount of @@.stress;Stress@@ they lose and @@.love;Love@@ EXP gained at the end of the day. Slaves with the day off will not work her Job and cannot be assigned any Quests or Classes. Giving the same Slave consecutive days off decreases its effects.">>
<</silently>>\
<div class="section">\
<div class="cardholder-picside">\
<div class="picbox-inforoom-violet">\
<div class="buttonbox-slaveroom">\
</div>\
<div class="titlebox-abovepic-slaveroom">\
Slave Room Tutorial
</div>\
<div class="buttonbox-slaveroom">\
</div>\
<div class="textbox-abovepic-slaveroom">\
<strong>$example_slave.name</strong> <span id="7"><<button "[img[images/icons/edit_icon.png]] ^^7^^">><<replace '#guide_text'>><<print _name_text>><</replace>><</button>></span>
</div>\
<div class="textbox-abovepic-slaveroom">\
Upkeep: <span style="color:gold">$example_slave.upkeep Gold</span>
</div>\
<div class="picbox-slaveroom">\
$example_slave.body_pic
</div>\
<div class="statusbox-belowpic-slaveroom">\
</div>\
</div>\
</div>\
<div class="cardholder-infoside">\
<div class="textbox-inforoom-violet">\
<div class="status-textbox-slave">\
<span id="guide_text">_default_text</span>
</div>\
<div class="stats-container-slave">\
<div class="stats-titlebox-slave">\
Stats
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.love.tooltip>>">><<-setup.slave_stats.love.icon>><</hovertip>>
<<hovertip "Max Love: <<-$example_slave.love_limit>>">><span style="color:crimson">$example_slave.love</span><</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.obedience.tooltip>>">><<-setup.slave_stats.obedience.icon>><</hovertip>>
<<hovertip "Max Obedience: <<-$example_slave.obedience_limit>>">><span style="color:cyan">$example_slave.obedience</span><</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.libido.tooltip>>">><<-setup.slave_stats.libido.icon>><</hovertip>>
<<hovertip "Max Libido: <<-$example_slave.libido_limit>>">><span style="color:fuchsia">$example_slave.libido</span><</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.strength.tooltip>>">><<-setup.slave_stats.strength.icon>><</hovertip>>
<<hovertip "Max Strength: <<-$example_slave.strength_limit>>">><span style="color:orange">$example_slave.strength</span><</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.intelligence.tooltip>>">><<-setup.slave_stats.intelligence.icon>><</hovertip>>
<<hovertip "Max Intelligence: <<-$example_slave.intelligence_limit>>">><span style="color:darkorchid">$example_slave.intelligence</span><</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.stress.tooltip>>">><<-setup.slave_stats.stress.icon>><</hovertip>>
<strong><span style="color:slategray">$example_slave.cur_stress</span></strong>
</div>\
<div class="stats-titlebox-slave">\
Traits
</div>\
<div class="stats-bigcell-slave">\
<<for _t = 0; _t < $example_slave.traits.length; _t++>>\
<<print '<span style="color:'+$example_slave.traits[_t].color+'"><<hovertip "$example_slave.traits[_t].tooltip">>$example_slave.traits[_t].name<</hovertip>></span>'>><<if _t + 1 < $example_slave.traits.length>>, <</if>>\
<</for>>\
</div>\
</div>\
<div class="rec-skill-container-slave">\
<div class="rec-titlebox-slave">\
Sex Skills
</div>\
<div class="skill-cell-slave">\
Handjobs
$example_slave.handjob
</div>\
<div class="skill-cell-slave">\
Blowjobs
$example_slave.blowjob
</div>\
<div class="skill-cell-slave">\
Titjobs
$example_slave.titjob
</div>\
<div class="skill-cell-slave">\
Footjobs
$example_slave.footjob
</div>\
<div class="skill-cell-slave">\
Missionary
$example_slave.missionary
</div>\
<div class="skill-cell-slave">\
Cowgirl
$example_slave.cowgirl
</div>\
<div class="skill-cell-slave">\
Doggy
$example_slave.doggy
</div>\
<div class="skill-cell-slave">\
Anal
$example_slave.anal
</div>\
</div>\
</div>\
<div class="button-container-slave">\
<div class="button-box-slave purplebutton">\
<span id="1"><<button "Jobs ^^1^^">><<replace '#guide_text'>><<print _job_text>><</replace>><</button>></span>
</div>\
<div class="button-box-slave purplebutton">\
<span id="2"><<button "Train ^^2^^">><<replace '#guide_text'>><<print _training_text>><</replace>><</button>></span>
</div>\
<div class="button-box-slave purplebutton">\
<span id="3"><<button "Discipline ^^3^^">><<replace '#guide_text'>><<print _discipline_text>><</replace>><</button>></span>
</div>\
<div class="button-box-slave purplebutton">\
<span id="4"><<button "Scold ^^4^^">><<replace '#guide_text'>><<print _scolding_text>><</replace>><</button>></span>
</div>\
<div class="button-box-slave purplebutton">\
<span id="5"><<button "Day Off ^^5^^">><<replace '#guide_text'>><<print _dayoff_text>><</replace>><</button>></span>
</div>\
<div class="button-box-slave purplebutton">\
<span id="6"><<button "View Skill/Stat ^^6^^">>\
<<if $slaveroom_page === "record">>\
<<set $slaveroom_page to "skill">>
<<replace '#guide_text'>><<print _skill_text>><</replace>>\
<<replace '.rec-skill-container-slave' t8n>><div class="rec-titlebox-slave">Sex Skills</div><div class="skill-cell-slave">Handjobs<br>$example_slave.handjob</div><div class="skill-cell-slave">Blowjobs<br>$example_slave.blowjob</div><div class="skill-cell-slave">Titjobs<br>$example_slave.titjob</div><div class="skill-cell-slave">Footjobs<br>$example_slave.footjob</div><div class="skill-cell-slave">Missionary<br>$example_slave.missionary</div><div class="skill-cell-slave">Cowgirl<br>$example_slave.cowgirl</div><div class="skill-cell-slave">Doggy<br>$example_slave.doggy</div><div class="skill-cell-slave">Anal<br>$example_slave.anal</div>\
<</replace>>\
<<elseif $slaveroom_page === "skill">>\
<<set $slaveroom_page to "record">>\
<<replace '#guide_text'>><<print _record_text>><</replace>>\
<<replace '.rec-skill-container-slave' t8n>><div class="rec-titlebox-slave">Records</div><div class="rec-cell-slave"><u>Days Owned</u><br>$example_slave.total_days</div><div class="rec-cell-slave"><u>Days Off</u><br>$example_slave.total_daysoff</div><div class="rec-cell-slave"><u>Days Injured</u><br>$example_slave.total_injured</div><div class="rec-cell-slave"><u>Jobs Done</u><br>$example_slave.total_jobs</div><div class="rec-cell-slave"><u>Quests Completed</u><br>$example_slave.total_quests</div><div class="rec-cell-slave"><u>Classes Passed</u><br>$example_slave.total_classes</div><div class="rec-cell-slave"><u>Times Trained</u><br>$example_slave.total_trainings</div><div class="rec-cell-slave"><u>Times Disciplined</u><br>$example_slave.total_disciplinings</div><div class="rec-cell-slave"><u>Gold Earned</u><br>$example_slave.total_gold</div><div class="rec-cell-slave"><u>Treasures Received</u><br>$example_slave.total_treasures</div><div class="rec-cell-slave"><u>EXP Given</u><br>$example_slave.total_exp</div><div class="rec-cell-slave"><u>Reputation Gained</u><br>$example_slave.total_reputation</div>\
<</replace>>\
<</if>>\
<</button>></span>
</div>\
</div>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[Next|Tutorial]]>><<set $tutorial_page++>><<unset $slaveroom_page, $slave_tour>><</button>></span>
</div>\
<<case 15>>\
<div class="section">\
<div class="titlebox">\
Tutorial
</div>\
<div class="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/mistress/face.jpg]]
</div>\
<div class="dialogue-text">\
There is so much more I could teach you but I can tell you are itching to see things for yourself. You know enough to get you started. Just remember if you ever get stuck or confused or just want to learn more about being a Dungeon Lord, check out the Guidebook. Like seriously, I worked way to hard to make sure anything and everything is in there! So please make good use of it. Have fun and be sure to harvest lots of lust for me!
</div>\
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="forward"><<button [[Start Game|Main Menu]]>><<unset $tutorial_page>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
</div>\
<</switch>>\<<silently>>\
* Set Next Level EXP *
<<set $preview.next_level_exp += Math.round((($preview.level * $preview.level) + setup.creature_nextlevel_constant) * $preview.growth_rate)>>
* Use Saved Creature if Able *
<<if !$pc_saved_list>>
<<set $pc_saved_list to []>>
<</if>>
<<for _z = 0; _z < $pc_saved_list.length; _z++>>
<<if $pc_saved_list[_z].base_name === $preview.base_name>>
<<CreatureLevelUp $preview $pc_saved_list[_z].exp>>
<<set $preview.total_dmgdealt to $pc_saved_list[_z].total_dmgdealt>>
<<set $preview.total_sexdealt to $pc_saved_list[_z].total_sexdealt>>
<<set $preview.total_dmgtaken to $pc_saved_list[_z].total_dmgtaken>>
<<set $preview.total_raiders to $pc_saved_list[_z].total_raiders>>
<<set $preview.total_captures to $pc_saved_list[_z].total_captures>>
<<set $preview.total_deaths to $pc_saved_list[_z].total_deaths>>
<<break>>
<</if>>
<</for>>
* Update Stats *
<<for _z = $preview.level; $preview.level < $creature_start_level; _z++>>
INCREASE LEVEL AND SET NEXT EXP AMOUNT
<<set _expGained to $preview.next_level_exp - $preview.exp>>
<<CreatureLevelUp $preview _expGained>>
<</for>>
* Set Current Health *
<<set $preview.cur_hp to Math.trunc($preview.max_hp)>>
* Set Upkeep *
<<set $preview.upkeep to Math.trunc($preview.base_upkeep + ($preview.base_upkeep * (setup.creature_upkeep_float * ($preview.level - 1))))>>
* Creature Stats *
<<CreatureStats $preview>>
<<set _max_hp to Math.trunc($preview.max_hp)>>
<<set _atk to Math.trunc($preview.atk)>>
<<set _pres to Math.trunc($preview.pres)>>
<<set _mres to Math.trunc($preview.mres)>>
<<set _sex to Math.trunc($preview.sex)>>
* Creature Description *
<<CreatureDescription $preview>>
<</silently>>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|$return]]>><<unset $preview, $return>><</button>></span>
</div>\
<div class="cardholder-picside">\
<div class="picbox-inforoom-green">\
<div class="titlebox-abovepic">\
Creature Info
</div>\
<div class="textboxlarge-abovepic">\
<strong>$preview.name</strong>
</div>\
<div class="textbox-abovepic">\
<<hovertip "$preview.exp / $preview.next_level_exp">>Lvl. $preview.level<</hovertip>>
</div>\
<div class="textbox-abovepic">\
Upkeep: <span style="color:gold">$preview.upkeep Gold</span>
</div>\
<div class="picbox-inforoom">\
$preview.pic
</div>\
<div class="statusbox-belowpic">\
</div>\
</div>\
</div>\
<div class="cardholder-infoside">\
<div class="textbox-inforoom-green">\
<div class="description-stats">\
$preview.description
</div>\
<div class="table-stats">\
<div class="cell-stats">\
<span class="health"><u>Health</u>
$preview.cur_hp / $preview.max_hp</span>
</div>\
<div class="cell-stats">\
<span class="health"><u>Health per Level</u>
$preview.hp_per_lvl</span>
</div>\
<div class="cell-stats">\
<<if $preview.attack_type === "Physical">>\
<span class="physical"><u>Physical Attack</u>
$preview.cur_atk</span>
<<elseif $preview.attack_type === "Magical">>\
<span class="magical"><u>Magical Attack</u>
$preview.cur_atk</span>
<</if>>\
</div>\
<div class="cell-stats">\
<<if $preview.attack_type === "Physical">>\
<span class="physical"><u>Attack per Level</u>
$preview.atk_per_lvl</span>
<<elseif $preview.attack_type === "Magical">>\
<span class="magical"><u>Attack per Level</u>
$preview.atk_per_lvl</span>
<</if>>\
</div>\
<div class="cell-stats">\
<span class="lust"><u>Sexual Attack</u>
$preview.cur_sex</span>
</div>\
<div class="cell-stats">\
<span class="lust"><u>Attack per Level</u>
$preview.sex_per_lvl</span>
</div>\
<div class="cell-stats">\
<span class="pres"><u>Physical Resistance</u>
$preview.cur_pres</span>
</div>\
<div class="cell-stats">\
<span class="pres"><u>Resistance per Level</u>
$preview.pres_per_lvl</span>
</div>\
<div class="cell-stats">\
<span class="mres"><u>Magical Resistance</u>
$preview.cur_mres</span>
</div>\
<div class="cell-stats">\
<span class="mres"><u>Resistance per Level</u>
$preview.mres_per_lvl</span>
</div>\
<div class="halfcell-stats">\
<u>Creature Types</u>
$preview.creature_types
</div>\
<div class="halfcell-stats">\
<u>Fetishes</u>
<<if $preview.fetishes.length === 0>>\
None
<<else>>\
$preview.fetishes
<</if>>\
</div>\
</div>\
</div>\
<div class="linkbox-inforoom">\
<div class="links-inforoom">\
</div>\
<div class="links-inforoom">\
<span id="1"><<button "Upgrades ^^1^^" "Creature Upgrades">><<set $upgrade_room to $preview>><<set $sent_from to "Creature Preview">><</button>></span>
</div>\
<div class="links-inforoom">\
</div>\
</div>\
</div>\<<silently>>\
* Use Saved Unit if Able *
<<if !$pc_saved_list>>
<<set $pc_saved_list to []>>
<</if>>
<<for _z = 0; _z < $pc_saved_list.length; _z++>>
<<if $pc_saved_list[_z].base_name === $preview.base_name>>
<<set $preview.total_dmgdealt to $pc_saved_list[_z].total_dmgdealt>>
<<set $preview.total_sexdealt to $pc_saved_list[_z].total_sexdealt>>
<<set $preview.total_raiders to $pc_saved_list[_z].total_raiders>>
<<set $preview.total_captures to $pc_saved_list[_z].total_captures>>
<<set $preview.total_statuses to $pc_saved_list[_z].total_statuses>>
<<set $preview.total_attempts to $pc_saved_list[_z].total_attempts>>
<<set $preview.total_triggers to $pc_saved_list[_z].total_triggers>>
<<break>>
<</if>>
<</for>>
* Update Stats *
<<if $statsBool == null>>
<<for _i = 1; _i < $dungeon_rank; _i++>>
<<set $preview.level++>>
<<set $preview.atk += $preview.atk_per_level>>
<<set $preview.sex += $preview.sex_per_level>>
<<set $preview.check += $preview.check_per_level>>
<</for>>
<<set $statsBool to true>>
<</if>>
<<set $preview.upkeep to Math.trunc($preview.base_upkeep + ($preview.base_upkeep * (setup.trap_upkeep_float * ($dungeon_rank - 1))))>>
* Trap Stats *
<<TrapStats $preview>>
* Trap Description *
<<TrapDescription $preview>>
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<span id="back"><<button [[Back|$return]]>><<unset $preview, $return $statsBool>><</button>></span>
</div>\
<div class="cardholder-picside">\
<div class="picbox-inforoom-blue">\
<div class="titlebox-abovepic">\
Trap Description
</div>\
<div class="textboxlarge-abovepic">\
<strong>$preview.name</strong>
</div>\
<div class="textbox-abovepic">\
Rank $preview.level
</div>\
<div class="textbox-abovepic">\
Upkeep: <span style="color:gold">$preview.upkeep Gold</span>
</div>\
<div class="picbox-inforoom">\
$preview.pic
</div>\
<div class="statusbox-belowpic">\
</div>\
</div>\
</div>\
<div class="cardholder-infoside">\
<div class="textbox-inforoom-blue">\
<div class="description-stats-trap">\
$preview.description
</div>\
<div class="table-stats-trap">\
<div class="cell-stats-trap">\
<<if $preview.attack_type === "Physical">>\
<span style="color:orange"><u>Physical Attack</u>
$preview.cur_atk</span>
<<elseif $preview.attack_type === "Magical">>\
<span style="color:deepskyblue"><u>Magical Attack</u>
$preview.cur_atk</span>
<<elseif $preview.attack_type === "True">>\
<u>True Attack</u>
$preview.cur_atk
<</if>>\
</div>\
<div class="cell-stats-trap">\
<<if $preview.attack_type === "Physical">>\
<span style="color:orange"><u>Attack per Rank</u>
$preview.atk_per_level</span>
<<elseif $preview.attack_type === "Magical">>\
<span style="color:deepskyblue"><u>Attack per Rank</u>
$preview.atk_per_level</span>
<<elseif $preview.attack_type === "True">>\
<u>Attack per Rank</u>
$preview.atk_per_level
<</if>>\
</div>\
<div class="cell-stats-trap">\
<span style="color:fuchsia"><u>Sexual Attack</u>
$preview.cur_sex</span>
</div>\
<div class="cell-stats-trap">\
<span style="color:fuchsia"><u>Attack per Rank</u>
$preview.sex_per_level</span>
</div>\
<div class="cell-stats-trap">\
<u>$preview.check_type</u>
$preview.cur_check
</div>\
<div class="cell-stats-trap">\
<u>$preview.check_type per Rank</u>
$preview.check_per_level
</div>\
<div class="cell-stats-trap">\
<u>Trap Types</u>
$preview.trap_types
</div>\
<div class="cell-stats-trap">\
<u>Fetishes</u>
<<if $preview.fetishes.length === 0>>\
None
<<else>>\
$preview.fetishes
<</if>>\
</div>\
<div class="longcell-stats-trap">\
<u>Modes</u>
<<if $preview.mode_list.length === 0>>\
None
<<else>>\
<<set _newList to []>>\
<<for _i = 0; _i < $preview.mode_list.length; _i++>>\
<<set _newList.push($preview.mode_list[_i].name)>>\
<</for>>\
_newList
<</if>>\
</div>\
</div>\
</div>\
<div class="linkbox-inforoom">\
<div class="links-inforoom">\
</div>\
<div class="links-inforoom">\
<<if $preview.mode_list.length === 0>>\
<div class="offbutton">\
<<button "View Modes">><</button>>
</div>\
<<else>>\
<span id="1"><<button "Modes ^^1^^" "Trap Modes">><<set $display_trap to $preview>><<set $sent_from to "Trap Preview">><</button>></span>
<</if>>\
</div>\
<div class="links-inforoom">\
</div>\
</div>\
</div>\
</div>\<div class="section">\
<div class="titlebox">\
<span style="color:red">You Have An Empty Room</span>
</div>\
<div class="textbox">\
One or more of your available dungeon rooms are empty. You need to add a Creature or Trap in every available room before you can begin tonight's Raids.
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[Got it!|Dungeon Floor Manager]]>><</button>></span>
</div>\
</div>\<<switch $fresh_start_page>>\
<<case 1>>\
<div class="titlebox">\
New Beginnings
</div>\
<div class="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/mistress/face.jpg]]
</div>\
<div class="dialogue-text">\
Well, aren't you in a rush to see what lewd dungeon you can create. I <em>love</em> the enthusiasm. Before I can set you free, you should choose which Creature, Trap, and Blessing you wish to start with. You'll still have to assign them in your dungeon later, but with your energy, I don't think that will be an issue to figure out all on your own.
</div>\
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="forward"><<button [[Continue|Tutorial]]>><<set $tutorial_page to 8>><<set $fresh_start_bool to true>><<set $fresh_start_page++>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
<<case 2>>\
<div class="titlebox">\
New Beginnings
</div>\
<div class="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/mistress/face.jpg]]
</div>\
<div class="dialogue-text">\
Excellent choices, I can't wait to see how my dungeon turns out under your care. I know you will do great! Remember you still need to set up the dungeon by assigning Creatures or Traps to a Floor. If you ever need help, be sure to check the Guidebook. Have fun!
</div>\
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="forward"><<button [[Begin Game|Main Menu]]>><<unset $tutorial_page>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
<</switch>>\<div class="section">\
<div class="titlebox">\
<span style="color:crimson">Game Over</span>
</div>\
<div class="imagebox">\
[img[images/mistress/game_over_0.jpg]]
</div>\
<div class="textbox">\
Failing to fulfill your duty as Ahri's Dungeon Lord, you sit in your room, waiting to find out what happens next. It's been weeks since anyone has come. Hungry, cold, and alone, she appears outside your door, ready to take the last of your strength until she can find a new, more capable Dungeon Lord. You have no energy left to resist as she harvests your life.
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[The End|Title]]>><</button>></span>
</div>\
</div>\<<silently>>\
* SETUP ROOM *
<<RoomSetup $raiders $this_room>>
<<CreatureStats $this_room>>
<<set _cannot_attack to []>> holds list of raiders who cannot attack
* SETUP RAIDER *
<<RaiderSetup $raiders>>
* PRE COMBAT EFFECTS *
<<PreCombat $raiders $this_room>>
* SPIDER TRAP *
CHECK IF HAS TRAPCHECK
<<if $this_room.name === "Silk Weaver">>
<<set _failedBool to false>> set to true if raider fails trapcheck
<<set _spider_trapcheck to Math.trunc($this_room.trapcheck_int + ($this_room.cur_atk * $this_room.trapcheck_float))>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<CalcTrapcheck $raiders[_i] _spider_trapcheck>>
<<SimTrapcheck $raiders[_i] _trapcheck>>
<<if _text_triggers.check.trapcheck_failed.includes($raiders[_i].index) || _text_triggers.check.trapcheck_crit_failed.includes($raiders[_i].index)>>
<<if _failedBool === false>>
<<set $raiders[_i].targeted to true>>
<<set _failedBool to true>>
<</if>>
<<set _entry to "She was snared in a spider web, hindering her attack and making her more vulnerable.">>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<</if>>
<</for>>
<</if>>
* SPIDER ATTACKS *
<<CreatureChooseTarget $raiders $this_room>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].attacked === true>>
<<if _text_triggers.check.trapcheck_failed.includes($raiders[_i].index) || _text_triggers.check.trapcheck_crit_failed.includes($raiders[_i].index)>>
<<set _dmg_mod to clone($this_room.silk_float)>>
<<else>>
<<set _dmg_mod to 1>>
<</if>>
<<NormalAttack $raiders[_i] $this_room $this_room.cur_atk _dmg_mod>>
<<SexualAttack $raiders[_i] $this_room $this_room.cur_sex _dmg_mod>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage.">>
SPIDER QUEEN INFLICTS STATUSES
<<if $this_room.name === "Spider Queen">>
<<set _poisoned_stacks to Math.trunc($this_room.queen_stacks + ($this_room.cur_atk * $this_room.queen_float))>> POISONED GAINED: _poisoned_stacks
<<set _aroused_stacks to Math.trunc($this_room.queen_stacks + ($this_room.cur_sex * $this_room.queen_float))>> AROUSED GAINED: _aroused_stacks
<<AddStacks $raiders[_i] setup.poisoned _poisoned_stacks true>>
<<AddStacks $raiders[_i] setup.aroused _aroused_stacks true>>
<<for _s = 0; _s < $raiders[_i].statuses.length; _s++>>
<<if $raiders[_i].statuses[_s].id === setup.poisoned.id>>
<<set _poisoned_gained to $raiders[_i].statuses[_s].gain>>
<<break>>
<</if>>
<</for>>
<<for _s = 0; _s < $raiders[_i].statuses.length; _s++>>
<<if $raiders[_i].statuses[_s].id === setup.aroused.id>>
<<set _aroused_gained to $raiders[_i].statuses[_s].gain>>
<<break>>
<</if>>
<</for>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage and gained "+_poisoned_gained+" Poisoned and "+_aroused_gained+" Aroused.">>
<</if>>
COCOON SPINNER PREVENTS ATTACK
<<if $this_room.name === "Cocoon Spinner">>
<<AddStacks $raiders[_i] setup.sticky $this_room.cocoon_stacks true>>
<<for _s = 0; _s < $raiders[_i].statuses.length; _s++>>
<<if $raiders[_i].statuses[_s].id === setup.sticky.id>>
<<set _sticky_gained to $raiders[_i].statuses[_s].gain>>
<<break>>
<</if>>
<</for>>
<<set _cannot_attack.push($raiders[_i].index)>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage and was wrapped in a cocoon, gaining "+_sticky_gained+" Sticky, and unable to attack.">>
<</if>>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
PREGNANT CHECK
<<PregnantCheck $raiders[_i] $this_room $this_room.rate>>
<<else>>
UPDATE RAIDER REPORT
<<set _entry to "She was not attacked.">>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<</if>>
<</for>>
* DANCER BUFF IF CAN ATTACK *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].class === "Dancer" && !_cannot_attack.includes($raiders[_i].index)>>
<<DancerBuff $raiders[_i] $this_room>>
<</if>>
<</for>>
* RAIDERS ATTACK *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if !_cannot_attack.includes($raiders[_i].index)>>
<<if _text_triggers.check.trapcheck_failed.includes($raiders[_i].index) || _text_triggers.check.trapcheck_crit_failed.includes($raiders[_i].index)>>
<<set _dmg_mod to clone($this_room.silk_float)>>
<<else>>
<<set _dmg_mod to 1>>
<</if>>
<<RaiderAttack $raiders[_i] $this_room _dmg_mod>>
<</if>>
<</for>>
* POST COMBAT EFFECTS *
<<for _r = 0; _r < $raiders.length; _r++>>
<<PostCombat $raiders[_r] $this_room>>
<</for>>
* SPIDER EXP & DAMAGE *
<<CreaturePostCombat $raiders $this_room>>
* CHOOSE PICTURE *
SETUP PIC ARRAY
<<set _picArray to clone($this_room.raider_pics)>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].attacked === true>>
* Attacked Pictures *
<<set $raiders[_i].pic to _picArray[$raiders[_i].body_type].pluck()>>
<<elseif _text_triggers.check.trapcheck_failed.includes($raiders[_i].index) || _text_triggers.check.trapcheck_crit_failed.includes($raiders[_i].index)>>
* Trapped Pictures *
<<set $raiders[_i].pic to _picArray.trapped[$raiders[_i].body_type].pluck()>>
<</if>>
<</for>>
* END OF COMBAT REPORT *
<<PostCombatReport $raiders $this_room>>
* CLEAN UP *
<<CleanUp $raiders $this_room>>
* DISPLAY INFO *
<<set _cardholderID to "cardholder-raid-"+$raiders.length+"raiders">>
<<set _cardinfoID to "cardinfo-raid-"+$raiders.length+"raiders">>
<<set _picboxID to "picbox-raid-"+$raiders.length+"raiders">>
<<set _textboxID to "textbox-raid-"+$raiders.length+"raiders">>
<</silently>>\
<div class="section">\
<<NextRoomButton>>\
<div class="cardholder-raid-playerside">\
<div class="cardinfo-raid-creature">\
<div class="roomtitle-raid-player">\
Floor $cur_room_num
</div>\
<div class="picbox-raid-player">\
_room_image
</div>\
<div class="namebox-raid-player">\
<strong>$this_room.name</strong>
---- Health: $this_room.cur_hp / $this_room.cur_max_hp ----
</div>\
<div class="textbox-raid-player">\
<ul>\
<<CreatureRoomText $this_room>>
<<BlessingTriggerText $this_room>>
<<EffectEndingText $this_room>>
</ul>\
</div>\
</div>\
</div>\
<div class="cardholder-raid-raiderside">\
<<for _r = 0; _r < $raiders.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_textboxID">\
<ul>\
<<if $this_room.name === "Silk Weaver">>\
<<if _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_failed.includes($raiders[_r].index)>>\
<li><<if _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)>><strong>Critical Failure!</strong> <</if>>She tried her best to avoid the spider's webs, but ended up getting entangled in them, reducing the damage she dealt and increasing all damage taken by the $this_room.name.</li>\
<<elseif _text_triggers.check.trapcheck_crit_passed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_passed.includes($raiders[_r].index)>>\
<li><<if _text_triggers.check.trapcheck_crit_passed.includes($raiders[_r].index)>><strong>Critical Success!</strong> <</if>>She managed to weave her way through the $this_room.name's trap.</li>\
<</if>>\
<</if>>\
<<CreatureTargetText $raiders[_r] $this_room>>
<<if !_cannot_attack.includes($raiders[_r].index)>>\
<<DancerDanceText $raiders[_r] $this_room>>
<<RaiderAtkText $raiders[_r] $this_room>>
<</if>>\
<<if $raiders[_r].attacked === true>>\
<<if $this_room.name === "Spider">>\
<li>The $this_room.name pulled her into its web and penetrated her anus, dealing <span style="color:orange">$raiders[_r].dmg_taken</span> Physical damage and <span style="color:fuchsia">$raiders[_r].sex_taken</span> Sexual damage to her.</li>\
<<elseif $this_room.name === "Spider Queen">>\
<li>The $this_room.name aggressively descended on her with her poisonous fangs, dealing <span style="color:orange">$raiders[_r].dmg_taken</span> Physical damage and <span style="color:fuchsia">$raiders[_r].sex_taken</span> Sexual damage to her.</li>\
<<elseif $this_room.name === "Silk Weaver">>\
<li>The $this_room.name crawled through its elaborate web network to find the best angle to attack her, dealing <span style="color:orange">$raiders[_r].dmg_taken</span> Physical damage and <span style="color:fuchsia">$raiders[_r].sex_taken</span> Sexual damage to her.</li>\
<<elseif $this_room.name === "Cocoon Spinner">>\
<li>The $this_room.name wrapped her up in a cocoon and attempted to impregnant her anus, preventing her from attacking and dealing <span style="color:orange">$raiders[_r].dmg_taken</span> Physical damage and <span style="color:fuchsia">$raiders[_r].sex_taken</span> Sexual damage to her.</li>\
<</if>>\
<<RaiderFetishText $raiders[_r] $this_room>>
<</if>>\
<<PostCombatText $raiders[_r] $this_room>>
</ul>\
</div>\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\<<silently>>\
*Variables*
<<set _levelup_trigger to false>> set to true if creature gained level
<<set _times_leveledup to 0>> number of times the creature leveled up
<<set _risk_percent to $cur_room.risk_percent>>
<<set _robust_trigger to false>> set to true if robust triggered
<<set _obedience_trigger to false>> set to true if slave obedience stat increased, triggers text
<<set _strength_trigger to false>> set to true if slave strength stat increased, triggers text
<<set _libido_trigger to false>> set to true if slave libido stat increased, triggers text
<<set _energy_trigger to false>> set to true if slave energy increased, triggers text
<<set _virgin_neg_trigger to false>> set to true if slave virginity is broken and replaced with a negative trait
<<set _exp_mod to 0.15>> increase or decrease the amount of exp earned based on the difficulty
*Picture*
BASIC CAPTURE
<<set _petite_capture_pic0 to "[img[images/creatures/spider/basic_spider/petite/0.jpg]]">>
<<set _petite_capture_pic1 to "[img[images/creatures/spider/basic_spider/petite/1.jpg]]">>
<<set _petite_capture_pic2 to "[img[images/creatures/spider/basic_spider/petite/2.jpg]]">>
<<set _petite_capture_pic3 to "[img[images/creatures/spider/basic_spider/petite/3.jpg]]">>
<<set _petite_capture_pic4 to "[img[images/creatures/spider/basic_spider/petite/4.jpg]]">>
<<set _busty_capture_pic0 to "[img[images/creatures/spider/basic_spider/busty/0.jpg]]">>
<<set _busty_capture_pic1 to "[img[images/creatures/spider/basic_spider/busty/1.jpg]]">>
<<set _busty_capture_pic2 to "[img[images/creatures/spider/basic_spider/busty/2.jpg]]">>
<<set _busty_capture_pic3 to "[img[images/creatures/spider/basic_spider/busty/3.jpg]]">>
<<set _busty_capture_pic4 to "[img[images/creatures/spider/basic_spider/busty/4.jpg]]">>
BASIC CAPTURE LIST
<<set _petite_capture_list to [_petite_capture_pic0, _petite_capture_pic1, _petite_capture_pic2, _petite_capture_pic3, _petite_capture_pic4]>>
<<set _busty_capture_list to [_busty_capture_pic0, _busty_capture_pic1, _busty_capture_pic2, _busty_capture_pic3, _busty_capture_pic4]>>
QUEEN SPIDER
<<if $this_room.name === "Queen Spider">>
<<set _petite_capture_pic5 to "[img[images/creatures/spider/queen_spider/petite/0.jpg]]">>
<<set _petite_capture_pic6 to "[img[images/creatures/spider/queen_spider/petite/1.jpg]]">>
<<set _busty_capture_pic5 to "[img[images/creatures/spider/queen_spider/busty/0.jpg]]">>
<<set _busty_capture_pic6 to "[img[images/creatures/spider/queen_spider/busty/1.jpg]]">>
<<set _petite_capture_list.push(_petite_capture_pic5, _petite_capture_pic6)>>
<<set _busty_capture_list.push(_busty_capture_pic5, _busty_capture_pic6)>>
<</if>>
COCOON SPINNER
<<if $this_room.name === "Cocoon Spinner">>
<<set _petite_capture_pic5 to "[img[images/creatures/spider/cocoon_spinner/petite/0.jpg]]">>
<<set _petite_capture_pic6 to "[img[images/creatures/spider/cocoon_spinner/petite/1.jpg]]">>
<<set _busty_capture_pic5 to "[img[images/creatures/spider/cocoon_spinner/busty/0.jpg]]">>
<<set _busty_capture_pic6 to "[img[images/creatures/spider/cocoon_spinner/busty/1.jpg]]">>
<<set _petite_capture_list.push(_petite_capture_pic5, _petite_capture_pic6)>>
<<set _busty_capture_list.push(_busty_capture_pic5, _busty_capture_pic6)>>
<</if>>
<<switch $cur_slave.body_type>>
<<case "Busty">>
<<set _pic to _busty_capture_list.random()>>
<<case "Petite">>
<<set _pic to _petite_capture_list.random()>>
<</switch>>
*Get Slave Info*
<<set _cur_slave_trait_names to []>>
<<for _i = 0; _i < $cur_slave.positive_traits.length; _i++>>
<<set _trait to $cur_slave.positive_traits[_i].name>>
<<set _cur_slave_trait_names.push(_trait)>>
<</for>>
<<for _i = 0; _i < $cur_slave.negative_traits.length; _i++>>
<<set _trait to $cur_slave.negative_traits[_i].name>>
<<set _cur_slave_trait_names.push(_trait)>>
<</for>>
*Luck*
<<set _rng to random(1, 6)>>
<<if _rng === 6>>
<<set _luck to 1>>
<<elseif _rng === 1>>
<<set _luck to -1>>
<<else>>
<<set _luck to 0>>
<</if>>
*Base EXP gained*
<<set _exp_amount to Math.round(random($cur_room.min_base_service_exp, $cur_room.max_base_service_exp) + ($cur_room.exp_per_libido * $cur_slave.libido))>>
*Set Stat to use for Rating*
<<switch $cur_room.service_stat>>
<<case "Love">>
<<set _service_stat to $cur_slave.love>>
<<case "Libido">>
<<set _service_stat to $cur_slave.libido>>
<<case "Strength">>
<<set _service_stat to $cur_slave.strength>>
<<case "Intelligence">>
<<set _service_stat to $cur_slave.intelligence>>
<<case "Obedience">>
<<set _service_stat to $cur_slave.obedience>>
<<case "Energy">>
<<set _service_stat to $cur_slave.energy>>
<</switch>>
*Rating*
<<if _service_stat + _luck >= $cur_room.best>>
<<set _rating to 3>>
<<set _exp_amount to Math.round(_exp_amount * setup.service_best_mod)>>
<<elseif _service_stat + _luck >= $cur_room.average>>
<<set _rating to 2>>
<<else>>
<<set _rating to 1>>
<<set _exp_amount to Math.round(_exp_amount * setup.service_worst_mod)>>
<</if>>
*Risk and Strength Check*
<<set _rng to random(1, 100)>>
<<if _risk_percent >= _rng>>
<<set _rng to random($cur_room.min_strength, $cur_room.max_strength)>>
<<if _rng > $cur_slave.strength + _luck>>
ROBUST CHECK
<<if _cur_slave_trait_names.includes("Robust")>>
<<set _rng to random(1, 100)>>
<<if _rng <= setup.robust.percent>>
<<set _robust_trigger to true>>
<<else>>
<<set $cur_slave.injured to true>>
<<set $cur_slave.injured_cd to random($cur_task.min_injured, $cur_task.max_injured)>>
SOFT TRAIT
<<if _cur_slave_trait_names.includes("Soft")>>
<<set $cur_slave.injured_cd *= setup.soft.mult>>
<</if>>
<</if>>
<<else>>
<<set $cur_slave.injured to true>>
<<set $cur_slave.injured_cd to random($cur_room.min_injured, $cur_room.max_injured)>>
SOFT TRAIT
<<if _cur_slave_trait_names.includes("Soft")>>
<<set $cur_slave.injured_cd *= setup.soft.mult>>
<</if>>
<</if>>
<</if>>
<</if>>
*Virgin Check*
<<if _cur_slave_trait_names.includes(setup.virginity.name)>>
REMOVE VIRGINITY TRAIT
<<for _i = 0; _i < $cur_slave.positive_traits.length; _i++>>
<<if $cur_slave.positive_traits[_i].name === setup.virginity.name>>
<<set _remove to $cur_slave.positive_traits.deleteAt(_i)>>
<<break>>
<</if>>
<</for>>
<<set $cur_slave.positive_traits.push(setup.loathing)>>
<<set _virgin_neg_trigger to true>>
<</if>>
*EXP MODIFIERS*
SEXY TRAIT
<<if _cur_slave_trait_names.includes("Sexy")>>
<<set _amount to Math.round(_exp_amount * setup.sexy.float)>>
<<set _exp_amount += _amount>>
<</if>>
CARING TRAIT
<<if _cur_slave_trait_names.includes("Caring")>>
<<set _exp_amount *= setup.caring.mult>>
<</if>>
RUDE TRAIT
<<if _cur_slave_trait_names.includes("Rude")>>
<<set _amount to Math.round(_exp_amount * setup.rude.float)>>
<<set _exp_amount -= _amount>>
<</if>>
*ADD EXP*
DIFFICULTY MOD
<<set _amount to Math.round(_exp_amount * _exp_mod)>>
<<switch $difficulty>>
<<case "casual">>
<<set _exp_amount += _amount>>
<<case "brutal">>
<<set _exp_amount -= _amount>>
<</switch>>
CLAMP MIN
<<if _exp_amount < 1>>
<<set _exp_amount to 1>>
<</if>>
ADD EXP AND STATS
<<if $cur_room.level < $creature_levelcap>>
<<set $cur_room.exp += _exp_amount>>
<</if>>
<<set $cur_slave.total_exp_given += _exp_amount>>
<<set $cur_slave.total_tasks++>>
LEVEL UP CHECK
<<if $cur_room.exp >= $cur_room.next_level_exp && $cur_room.level < $creature_levelcap>>
<<for _i = 0; _i < 1; _i++>>
<<set _levelup_trigger to true>>
<<set _times_leveledup++>>
<<set $cur_room.level++>>
INCREASE STATS
HEALTH
<<set _amount to random($cur_room.low_hp, $cur_room.high_hp)>>
<<set $cur_room.max_hp += _amount>>
<<set $cur_room.cur_hp += _amount>>
ATTACK
<<set _amount to random($cur_room.low_atk, $cur_room.high_atk)>>
<<set $cur_room.atk += _amount>>
PHYSICAL RESISTANCE
<<set _amount to random($cur_room.low_pres, $cur_room.high_pres)>>
<<set $cur_room.pres += _amount>>
MAGICAL RESISTANCE
<<set _amount to random($cur_room.low_mres, $cur_room.high_mres)>>
<<set $cur_room.mres += _amount>>
SEX
<<set _amount to random($cur_room.low_sex, $cur_room.high_sex)>>
<<set $cur_room.sex += _amount>>
RATE
<<if $cur_room.level % $cur_room.rate_modular === 0>>
<<set $cur_room.rate += $cur_room.rate_gained>>
<</if>>
<<set $cur_room.next_level_exp to Math.round(((($cur_room.level + $cur_room.growth_rate) * ($cur_room.level + $cur_room.growth_rate) * ($cur_room.level + $cur_room.growth_rate)) / setup.creature_nextlevel_divisor) - (setup.creature_nextlevel_constant - ($cur_room.growth_rate * $cur_room.level)))>>
<<if $cur_room.exp >= $cur_room.next_level_exp && $cur_room.level < $creature_levelcap>>
CHECK IF GAINED ANOTHER LEVEL
<<set _i-->>
<<elseif $cur_room.level === $creature_levelcap>>
SET EXP TO LOWEST AMOUNT POSSIBLE TO REACH LEVEL, NO MORE LEVELS GAINED
<<set _last_level to $cur_room.level - 1>>
<<set $cur_room.exp to Math.round((((_last_level + $cur_room.growth_rate) * (_last_level + $cur_room.growth_rate) * (_last_level + $cur_room.growth_rate)) / setup.creature_nextlevel_divisor) - (setup.creature_nextlevel_constant - ($cur_room.growth_rate * _last_level)))>>
<</if>>
<</for>>
<</if>>
*Calc Obedience Stat Growth*
<<if $cur_slave.obedience < $cur_slave.obedience_limit>>
---CALC AMOUNT---
<<set _obedience_growth to $cur_room.obedience_growth * $cur_slave.obedience_growth_rate>>
---STAT GROWTH MODIFIERS---
LOYAL
<<if _cur_slave_trait_names.includes("Loyal")>>
<<if $cur_slave.love >= setup.loyal.love_req>>
<<set _obedience_growth *= setup.loyal.mult>>
<</if>>
<</if>>
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _obedience_growth *= setup.loathing.float>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.obedience_tracker += _obedience_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.obedience_tracker >= $cur_slave.obedience_tracker_limit>>
<<set _obedience_trigger to true>>
<<set $cur_slave.obedience++>>
<<set $cur_slave.obedience_tracker to 0>>
<<set $cur_slave.obedience_tracker_limit to Math.trunc(($cur_slave.obedience * $cur_slave.obedience * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
*Calc Libido Stat Growth*
<<if $cur_slave.libido < $cur_slave.libido_limit>>
---CALC AMOUNT---
<<set _libido_growth to $cur_room.libido_growth * $cur_slave.libido_growth_rate>>
---STAT GROWTH MODIFIERS---
LOYAL
<<if _cur_slave_trait_names.includes("Loyal")>>
<<if $cur_slave.love >= setup.loyal.love_req>>
<<set _libido_growth *= setup.loyal.mult>>
<</if>>
<</if>>
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _libido_growth *= setup.loathing.float>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.libido_tracker += _libido_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.libido_tracker >= $cur_slave.libido_tracker_limit>>
<<set _libido_trigger to true>>
<<set $cur_slave.libido++>>
<<set $cur_slave.libido_tracker to 0>>
<<set $cur_slave.libido_tracker_limit to Math.trunc(($cur_slave.libido * $cur_slave.libido * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
*Calc Strength Stat Growth*
<<if $cur_slave.strength < $cur_slave.strength_limit>>
---CALC AMOUNT---
<<set _strength_growth to $cur_room.strength_growth * $cur_slave.strength_growth_rate>>
---STAT GROWTH MODIFIERS---
MOTIVATED
<<if _cur_slave_trait_names.includes("Motivated")>>
<<if $cur_slave.love >= setup.loyal.love_req>>
<<set _strength_growth *= setup.motivated.mult>>
<</if>>
<</if>>
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _strength_growth *= setup.loathing.float>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.strength_tracker += _strength_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.strength_tracker >= $cur_slave.strength_tracker_limit>>
<<set _strength_trigger to true>>
<<set $cur_slave.strength++>>
<<set $cur_slave.strength_tracker to 0>>
<<set $cur_slave.strength_tracker_limit to Math.trunc(($cur_slave.strength * $cur_slave.strength * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
*Calc Energy Stat Growth*
<<if $cur_slave.energy < $cur_slave.energy_limit>>
---CALC AMOUNT---
<<set _energy_growth to $cur_room.energy_growth * $cur_slave.energy_growth_rate>>
---STAT GROWTH MODIFIERS---
LOATHING
<<if _cur_slave_trait_names.includes("Loathing")>>
<<set _energy_growth *= setup.loathing.float>>
<</if>>
---ADD STAT GROWTH---
<<set $cur_slave.energy_tracker += _energy_growth>>
---STAT INCREASE CHECK---
<<if $cur_slave.energy_tracker >= $cur_slave.energy_tracker_limit>>
<<set _energy_trigger to true>>
<<set $cur_slave.energy++>>
<<set $cur_slave.cur_energy++>>
<<set $cur_slave.energy_tracker to 0>>
<<set $cur_slave.energy_tracker_limit to Math.trunc(($cur_slave.energy * $cur_slave.energy * setup.slave_exp_mod) + setup.slave_exp_constant)>>
<</if>>
<</if>>
<<set _name to $cur_slave.name>>
*Display*
<</silently>>\
<div id="section">\
<div id="titlebox">\
<<switch $room_num>>\
<<case 1>>\
$cur_room.name in Room One
<<case 2>>\
$cur_room.name in Room Two
<<case 3>>\
$cur_room.name in Room Three
<<case 4>>\
$cur_room.name in Room Four
<<case 5>>\
$cur_room.name in Room Five
<<case 6>>\
$cur_room.name in Room Six
<<case 7>>\
$cur_room.name in Room Seven
<<case 8>>\
$cur_room.name in Room Eight
<<case 9>>\
$cur_room.name in Room Nine
<<case 10>>\
$cur_room.name in Room Ten
<<case 11>>\
$cur_room.name in Room Eleven
<<case 12>>\
$cur_room.name in Room Twelve
<</switch>>\
</div>\
<div class="centered">\
_pic
</div>\
<div id="textbox">\
<<if _luck === 1>>\
_name's service was excellent. \
<<elseif _luck === 0>>\
_name's service was average. \
<<else>>\
_name's service was poor. \
<</if>>\
<<if _rating === 3>>\
$cur_room.best_text
Your $cur_room.name gained _exp_amount EXP.
<<elseif _rating === 2>>\
$cur_room.average_text
Your $cur_room.name gained _exp_amount EXP.
<<else>>\
$cur_room.worst_text
Your $cur_room.name only gained _exp_amount EXP.
<</if>>\
<<if _robust_trigger === true>>\
Because she is <<hovertip "<<-setup.robust.tooltip>>">>Robust<</hovertip>>, she was not injured.
<<elseif $cur_slave.injured === true>>\
She has been injured and needs $cur_slave.injured_cd <<if $cur_slave.injured_cd === 1>>day<<else>>days<</if>> to recover.
<</if>>\
<<if _levelup_trigger === true>>\
It gained _times_leveledup <<if _times_leveledup === 1>>level<<else>>levels<</if>>. <<if $cur_room.level === $creature_levelcap>>It cannot gain anymore levels at this Rank.<</if>>
<</if>>\
<<if _obedience_trigger === true>>\
$cur_slave.name's <span style="color:cyan">Obedience</span> stat has increased. <<if $cur_slave.obedience === $cur_slave.obedience_limit>>Her <span style="color:cyan">Obedience</span> cannot go any higher.<</if>>
<</if>>\
<<if _libido_trigger === true>>\
$cur_slave.name's <span style="color:fuchsia">Libido</span> stat has increased. <<if $cur_slave.libido === $cur_slave.libido_limit>>Her <span style="color:fuchsia">Libido</span> cannot go any higher.<</if>>
<</if>>\
<<if _strength_trigger === true>>\
$cur_slave.name's <span style="color:orange">Strength</span> stat has increased. <<if $cur_slave.strength === $cur_slave.strength_limit>>Her <span style="color:orange">Strength</span> cannot go any higher.<</if>>
<</if>>\
<<if _energy_trigger === true>>\
$cur_slave.name's <span style="color:mediumseagreen">Energy</span> stat has increased. <<if $cur_slave.energy === $cur_slave.energy_limit>>Her <span style="color:mediumseagreen">Energy</span> cannot go any higher.<</if>>
<</if>>\
<<if _virgin_neg_trigger === true>>\
$cur_slave.name's virginity has been taken and because she was not ready to lose it, <span style="color:red">she has gained a new negative Trait</span>.
<</if>>\
<<if $cur_slave.cur_energy === 0 || $cur_slave.injured === true>>\
[[Finish|Slave Room]]
<<else>>\
[[Finish|Assign Slave Task]]
<</if>>\
</div>\
</div>\
<<silently>>\
---UPDATE SLAVE---
<<switch $cur_slave_num>>
<<case 1>>
<<set $slave_room_1 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 2>>
<<set $slave_room_2 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 3>>
<<set $slave_room_3 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 4>>
<<set $slave_room_4 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 5>>
<<set $slave_room_5 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 6>>
<<set $slave_room_6 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 7>>
<<set $slave_room_7 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 8>>
<<set $slave_room_8 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 9>>
<<set $slave_room_9 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<<case 10>>
<<set $slave_room_10 to $cur_slave>>
<<set $display_slave to $cur_slave>>
<</switch>>
---UPDATE ROOM---
<<switch $room_num>>
<<case 1>>
<<set $dungeon_room_1 to $cur_room>>
<<case 2>>
<<set $dungeon_room_2 to $cur_room>>
<<case 3>>
<<set $dungeon_room_3 to $cur_room>>
<<case 4>>
<<set $dungeon_room_4 to $cur_room>>
<<case 5>>
<<set $dungeon_room_5 to $cur_room>>
<<case 6>>
<<set $dungeon_room_6 to $cur_room>>
<<case 7>>
<<set $dungeon_room_7 to $cur_room>>
<<case 8>>
<<set $dungeon_room_8 to $cur_room>>
<<case 9>>
<<set $dungeon_room_9 to $cur_room>>
<<case 10>>
<<set $dungeon_room_10 to $cur_room>>
<<case 11>>
<<set $dungeon_room_11 to $cur_room>>
<<case 12>>
<<set $dungeon_room_12 to $cur_room>>
<</switch>>
<</silently>>\<<silently>>\
* Variables *
<<set _floor_names to ["Floor One", "Floor Two", "Floor Three", "Floor Four", "Floor Five", "Floor Six", "Floor Seven", "Floor Eight", "Floor Nine", "Floor Ten", "Floor Eleven", "Floor Twelve"]>> Display name for each room
* Calc Damage Buff *
OVERLOAD SPELL
<<if $overloadSpellBool === true>>
SPELL OVERLOADED
<<set $pc_spellbook[$spell_index].cur_health += (Math.round($pc_spellbook[$spell_index].cur_health * setup.blessing_02_12.float)).clamp(1, 1000000)>>
<<set $pc_spellbook[$spell_index].cur_atk += (Math.round($pc_spellbook[$spell_index].cur_atk * setup.blessing_02_12.float)).clamp(1, 1000000)>>
<<set $pc_spellbook[$spell_index].cur_duration += (Math.round($pc_spellbook[$spell_index].cur_duration * setup.blessing_02_12.float)).clamp(1, 1000000)>>
<<set $overloadSpellBool to false>> prevents it from increasing stats again
<</if>>
*Display*
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<span id="back"><<button [[Back|View Spells]]>><<unset $mana_cost, $spell_index>><</button>></span>
</div>\
<div class="titlebox">\
$pc_spellbook[$spell_index].title
</div>\
<div class="tableholder-manager">\
<<for _i = 0; _i < $dungeon_floor_list.length; _i++>>\
<<set _hotKey to _i + 1>>\
<div class="cell-manager">\
<div class="cell-textholder-manager">\
<<- _floor_names[_i]>>
<<if $dungeon_floor_list[_i].room_type === "Creature" && $pc_cur_mana >= $mana_cost>>\
<<if $dungeon_floor_list[_i].cur_hp > 0 && !$dungeon_floor_list[_i].effect_names.includes($pc_spellbook[$spell_index].id)>>\
<<capture _i, _hotKey>>\
<span @id="_hotKey"><<button "Cast ^^_hotKey^^" "View Spells">>\
<<silently>>\
CREATE EFFECT
<<set _newBuff to clone(setup.creature_effect)>>
<<set _newBuff.id to $pc_spellbook[$spell_index].id>>
<<set _newBuff.effect_types to $pc_spellbook[$spell_index].effect_types>>
<<set _newBuff.hp_int to $pc_spellbook[$spell_index].cur_health>>
<<set _newBuff.atk_int to $pc_spellbook[$spell_index].cur_atk>>
<<set _newBuff.sex_int to $pc_spellbook[$spell_index].cur_atk>>
<<set _newBuff.duration to $pc_spellbook[$spell_index].cur_duration>>
<<set _newBuff.effect_end to $pc_spellbook[$spell_index].effect_end>>
<<set _newBuff.icon to setup.effect_icons.spell>>
UPDATE NAME AND TOOLTIP
<<set _newBuff.name to _newBuff.id +" x"+_newBuff.duration>>
<<if $dungeon_floor_list[_i].attack_type === "Physical">>
<<set _newBuff.tooltip to "Increases @@.health;Health@@ by @@.health;"+_newBuff.hp_int+"@@ and @@.phy;Physical Attack@@ and @@.sex;Sexual Attack@@ by "+_newBuff.atk_int+".">>
<<else>>
<<set _newBuff.tooltip to "Increases @@.health;Health@@ by @@.health;"+_newBuff.hp_int+"@@ and @@.mag;Magical Attack@@ and @@.sex;Sexual Attack@@ by "+_newBuff.atk_int+".">>
<</if>>
ADD EFFECT
<<set $dungeon_floor_list[_i].effects.push(_newBuff)>>
<<set $dungeon_floor_list[_i].effect_names.push(_newBuff.id)>>
INCREASE CURRENT HEALTH
<<set $dungeon_floor_list[_i].cur_hp += _newBuff.hp_int>>
CASTING SPELL WIDGET
<<CastingSpell $pc_spellbook[$spell_index] $mana_cost>>
UNSET
<<unset $mana_cost, $spell_index>>
<</silently>>\
<</button>></span>\
<</capture>>\
<<else>>\
<div class="offbutton">\
<<button "Cast">><</button>>
</div>\
<</if>>\
<<else>>\
<div class="offbutton">\
<<button "Cast">><</button>>
</div>\
<</if>>\
</div>\
<div class="cell-picholder-manager">\
$dungeon_floor_list[_i].pic
</div>\
</div>\
<</for>>\
</div>\
</div>\
<<if $spell_targeting === true>>\
<<silently>>\
*Variables*
<<set _spell_percent_list to []>> Holds all the spell percent for each raider
* Overload Spellcheck *
<<if $overloadSpellBool === true>>
<<set $pc_spellbook[$spell_index].cur_check += (Math.round($pc_spellbook[$spell_index].cur_check * setup.blessing_02_12.float)).clamp(1, 1000000)>>
<</if>>
* Setup Raiders *
<<RaiderSetup $raiders>>
*Calc Percent for each Raider*
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].trait_names.includes("Absent Minded")>>
<<set _percent to 0>>
<<set _spell_percent_list.push(_percent)>>
<<else>>
CALC CHANCE
<<CalcSpellcheck $raiders[_i] $pc_spellbook[$spell_index].cur_check "Player">>
SET RAIDERS SPELL PERCENT
<<set _spell_percent_list.push(_spellcheck)>>
<</if>>
<</for>>
* Display Info *
<<set _cardholderID to "cardholder-"+$raiders.length+"girls">>
<<set _cardinfoID to "cardinfo-"+$raiders.length+"girls">>
<<set _picboxID to "picbox-"+$raiders.length+"girls">>
<<set _textboxID to "textbox-"+$raiders.length+"girls">>
<<set _linkboxID to "linkbox-targeting-"+$raiders.length+"girls">>
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<span id="back"><<button [[Back|View Spells]]>><<unset $mana_cost, $spell_index>><</button>></span>
</div>\
<div class="titlebox">\
Choose a Target
</div>\
<<for _r = 0; _r < $raiders.length; _r++>>\
<<set _hotKey to _r + 1>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
<div @class="_textboxID">\
Name: $raiders[_r].name
Class: $raiders[_r].subclass.name $raiders[_r].class
Role: $raiders[_r].role
Traits: <<for _i = 0; _i < $raiders[_r].traits.length; _i++>>\
<<if $raiders[_r].traits[_i].type === "Special">>\
<span style="color:gold"><<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>></span><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<<else>>\
<<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<</if>>\
<</for>>
Kinks: <<if $raiders[_r].kinks.length === 0>>None<<else>>$raiders[_r].kinks<</if>>
Turn-Offs: <<if $raiders[_r].turnoffs.length === 0>>None<<else>>$raiders[_r].turnoffs<</if>>
Statuses: <<if $raiders[_r].statuses.length == 0>>\
None
<<else>>\
<<for _i = 0; _i < $raiders[_r].statuses.length; _i++>>\
<<hovertip "$raiders[_r].statuses[_i].tooltip">>$raiders[_r].statuses[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].statuses.length>>, <</if>><</for>><</if>>
</div>\
</div>\
<div @class="_linkboxID">\
<<if _spell_percent_list[_r] <= 39>>\
<<set _color to "bad">>\
<<elseif _spell_percent_list[_r] <= 69>>\
<<set _color to "neutral">>\
<<else>>\
<<set _color to "good">>\
<</if>>\
$pc_spellbook[$spell_index].name Success Rate: <span @class="_color">_spell_percent_list[_r]%</span> \
<<if _spell_percent_list[_r] === 0>>\
<div class="offbutton">\
<<hovertip "Already has Absent Minded Trait">><<button "Target Raider">><</button>><</hovertip>>
</div>\
<<else>>\
<<capture _r, _hotKey>>\
<span @id="_hotKey"><<button "Target Raider ^^_hotKey^^" $pc_spellbook[$spell_index].passage>><<unset $spell_targeting>><<set $target to _r>><<set $spell_percent to _spell_percent_list[_r]>><</button>></span>
<</capture>>\
<</if>>\
</div>\
</div>\
<</for>>\
</div>\
<<else>>\
<<silently>>\
*Setup Raiders*
<<RaiderSetup $raiders>>
CASTING SPELL WIDGET
<<CastingSpell setup.confusion_spell $mana_cost>>
*Spell Check*
CALC CHANCE
<<SimSpellcheck $raiders[$target] $spell_percent "Player">>
<<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[$target].index) || _text_triggers.check.spellcheck_failed.includes($raiders[$target].index)>>
ADD ABSENT MINDED
<<set _newTrait to clone(setup.absentminded)>>
<<set $raiders[$target].traits.push(_newTrait)>>
<<set $raiders[$target].trait_names.push(_newTrait.name)>>
SET GIF
<<set _gif to $pc_spellbook[$spell_index].gif>>
UPDATE REPORT
<<set _entry to "She failed to resist your Confusion Spell and gained the Absent Minded Trait.">>
<<set _lastLog to $raiders[$target].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[$target].report.log.push(_lastLog)>>
NEW ABSENT MINDED CHECK IF THERE ISNT ALREADY ONE TRIGGERED
<<if $absentminded_trigger === false && $cur_room_num > 0>>
<<set _bool to false>>
<<for _x = $cur_room_num - 1; _x >= 0; _x-->>
<<if $dungeon_floor_list[_x].room_type != "Empty">>
<<set _bool to true>>
<<break>>
<</if>>
<</for>>
<<if _bool === true>>
RNG CHECK
<<set _rng to random(1, 100)>>
<<if setup.absentminded.percent >= _rng>>
SET TRIGGER TO TRUE
<<set $absentminded_trigger to true>>
<<set $absentminded_raider to $raiders[$target].index>>
<</if>>
<</if>>
<</if>>
<<else>>
* Spell Failed *
UPDATE REPORT
<<set _entry to "She resisted your Confusion Spell.">>
<<set _lastLog to $raiders[$target].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[$target].report.log.push(_lastLog)>>
SET GIF
<<set _gif to setup.spell_failed_gif_list.random()>>
<</if>>
*Display*
<</silently>>\
<div class="section">\
<<NextSpellButton>>\
<div class="titlebox">\
$pc_spellbook[$spell_index].name Spell
</div>\
<div class="imagebox">\
_gif
</div>\
<div class="textbox-center">\
<<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[$target].index) || _text_triggers.check.spellcheck_failed.includes($raiders[$target].index)>>\
<<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[$target].index)>><strong>Critical Failure!</strong> <</if>>She was easily manipulated and became <<hovertip '<<- setup.absentminded.tooltip>>'>>Absent Minded<</hovertip>>.
<<elseif _text_triggers.check.spellcheck_crit_passed.includes($raiders[$target].index) || _text_triggers.check.spellcheck_passed.includes($raiders[$target].index)>>\
<<if _text_triggers.check.spellcheck_crit_passed.includes($raiders[$target].index)>><strong>Critical Success!</strong> <</if>>She was not affected.
<</if>>\
<<if _text_triggers.blessing.resourceful_sorcerer === true && $modifiers.blessing.resourceful_sorcerer === 1>>\
<li>You recovered the spell's @@.mana;Mana Cost@@ after it failed.</li>\
<<elseif _text_triggers.blessing.resourceful_sorcerer === true && $modifiers.blessing.resourceful_sorcerer < 1>>\
<li>You recovered half of the spell's @@.mana;Mana Cost@@ after it failed.</li>\
<</if>>\
</div>\
</div>\
<</if>>\<<if $spell_targeting === true>>\
<<silently>>\
*Variables*
<<set _spell_percent_list to []>> Holds all the spell percent for each raider
<<set _already_at_entrance to false>> set to true if already at dungeon start to prevent warping nowhere
<<set _creature_dead to false>> set to true if the previous room has no hp remaining to fight
* Overload Spellcheck *
<<if $overloadSpellBool === true>>
<<set $pc_spellbook[$spell_index].cur_check += (Math.round($pc_spellbook[$spell_index].cur_check * setup.blessing_02_12.float)).clamp(1, 1000000)>>
<</if>>
* Setup Raiders *
<<RaiderSetup $raiders>>
* Find Distance From Entrance *
<<set _distance to 0>>
<<for _z = $cur_room_num; _z >= 0; _z-->>
<<set _distance++>>
<</for>>
*Calc Percent for each Raider*
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $at_entrance === true>>
<<set _percent to 0>>
<<set _spell_percent_list.push(_percent)>>
<<set _already_at_entrance to true>>
<<else>>
BASE SPELLCHECK
<<set _base_check to $pc_spellbook[$spell_index].cur_check - Math.round((_distance * $pc_spellbook[$spell_index].distance_penalty) * $pc_spellbook[$spell_index].distance_mod)>>
CALC CHANCE
<<CalcSpellcheck $raiders[_i] _base_check "Player">>
SET RAIDERS SPELL PERCENT
<<set _spell_percent_list.push(_spellcheck)>>
<</if>>
<</for>>
* Display Info *
<<set _cardholderID to "cardholder-"+$raiders.length+"girls">>
<<set _cardinfoID to "cardinfo-"+$raiders.length+"girls">>
<<set _picboxID to "picbox-"+$raiders.length+"girls">>
<<set _textboxID to "textbox-"+$raiders.length+"girls">>
<<set _linkboxID to "linkbox-targeting-"+$raiders.length+"girls">>
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<span id="back"><<button [[Back|View Spells]]>><<unset $mana_cost, $spell_index>><</button>></span>
</div>\
<div class="titlebox">\
Choose a Target
</div>\
<<for _r = 0; _r < $raiders.length; _r++>>\
<<set _hotKey to _r + 1>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
<div @class="_textboxID">\
Name: $raiders[_r].name
Class: $raiders[_r].subclass.name $raiders[_r].class
Role: $raiders[_r].role
Traits: <<for _i = 0; _i < $raiders[_r].traits.length; _i++>>\
<<if $raiders[_r].traits[_i].type === "Special">>\
<span style="color:gold"><<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>></span><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<<else>>\
<<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<</if>>\
<</for>>
Kinks: <<if $raiders[_r].kinks.length === 0>>None<<else>>$raiders[_r].kinks<</if>>
Turn-Offs: <<if $raiders[_r].turnoffs.length === 0>>None<<else>>$raiders[_r].turnoffs<</if>>
Statuses: <<if $raiders[_r].statuses.length == 0>>\
None
<<else>>\
<<for _i = 0; _i < $raiders[_r].statuses.length; _i++>>\
<<hovertip "$raiders[_r].statuses[_i].tooltip">>$raiders[_r].statuses[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].statuses.length>>, <</if>><</for>><</if>>
</div>\
</div>\
<div @class="_linkboxID">\
<<if _spell_percent_list[_r] <= 39>>\
<<set _color to "bad">>\
<<elseif _spell_percent_list[_r] <= 69>>\
<<set _color to "neutral">>\
<<else>>\
<<set _color to "good">>\
<</if>>\
$pc_spellbook[$spell_index].name Success Rate: <span @class="_color">_spell_percent_list[_r]%</span> \
<<if _spell_percent_list[_r] === 0>>\
<div class="offbutton">\
<<hovertip "Already at Entrance">><<button "Target Raider">><</button>><</hovertip>>
</div>\
<<else>>\
<<capture _r, _hotKey>>\
<span @id="_hotKey"><<button "Target Raider ^^_hotKey^^" $pc_spellbook[$spell_index].passage>><<unset $spell_targeting>><<set $target to _r>><<set $spell_percent to _spell_percent_list[_r]>><</button>></span>
<</capture>>\
<</if>>\
</div>\
</div>\
<</for>>\
</div>\
<<else>>\
<<silently>>\
* Cast Spell *
<<CastingSpell $pc_spellbook[$spell_index] $mana_cost>>
* Setup Raiders *
<<RaiderSetup $raiders>>
CALC CHANCE
<<SimSpellcheck $raiders[$target] $spell_percent "Player">>
<<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[$target].index) || _text_triggers.check.spellcheck_failed.includes($raiders[$target].index)>>
UPDATE RAIDER
<<AddStatus $raiders[$target] setup.teleported true>>
SET GIF
<<set _gif to $pc_spellbook[$spell_index].gif>>
UPDATE REPORT
<<set _entry to "She was teleported back to the start of the Dungeon by your Warp Spell.">>
<<set _lastLog to $raiders[$target].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[$target].report.log.push(_lastLog)>>
<<else>>
UPDATE REPORT
<<set _entry to "She was able to resist your Warp Spell.">>
<<set _lastLog to $raiders[$target].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[$target].report.log.push(_lastLog)>>
SET GIF
<<set _gif to setup.spell_failed_gif_list.random()>>
<</if>>
* Set Link *
<<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[$target].index) || _text_triggers.check.spellcheck_failed.includes($raiders[$target].index)>>
<<set _success_bool to true>>
<<else>>
<<set _failed_bool to false>>
<</if>>
<<if _success_bool === true>>
<<if $raiders.length > 1>>
<<if $raiders.length > 2>>
<<set _text to "After the Raider was teleported out of the Dungeon, the remaining group pressed forward.">>
<<else>>
<<set _text to "After the Raider was teleported out of the Dungeon, the remaining Raider went on alone.">>
<</if>>
<<set _link to "Continue">>
<<set _passage to "View Spells">>
<<elseif $raiding_girls_list.length > 0>>
<<set _text to "She was alone, so the next group will enter the dungeon soon.">>
<<set _link to "Next Group">>
<<set _passage to "Raiding Party">>
<<else>>
<<set _text to "She is the last Raider tonight, so now she gets to start all over again.">>
<<set _link to "Next Group">>
<<set _passage to "Raiding Party">>
<</if>>
<<else>>
<<if $raiders.length > 1>>
<<set _text to "The group of Raiders pressed forward undeterred.">>
<<else>>
<<set _text to "The Raider continued her Raid undeterred.">>
<</if>>
<<set _link to "Continue">>
<<set _passage to "View Spells">>
<</if>>
* Display *
<</silently>>\
<div class="section">\
<<NextSpellButton>>\
<div class="titlebox">\
$pc_spellbook[$spell_index].name Spell
</div>\
<div class="imagebox">\
_gif
</div>\
<div class="textbox-center">\
<<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[$target].index) || _text_triggers.check.spellcheck_failed.includes($raiders[$target].index)>>\
<<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[$target].index)>><strong>Critical Failure! </strong><</if>>She was warped outside the dungeon. \
<<elseif _text_triggers.check.spellcheck_crit_passed.includes($raiders[$target].index) || _text_triggers.check.spellcheck_passed.includes($raiders[$target].index)>>\
<<if _text_triggers.check.spellcheck_crit_passed.includes($raiders[$target].index)>><strong>Critical Success! </strong><</if>>She was able to prevent herself from being sent back to the dungeon's entrance. \
<</if>>\
_text
<<if _text_triggers.blessing.resourceful_sorcerer === true && $modifiers.blessing.resourceful_sorcerer === 1>>\
<li>You recovered the spell's @@.mana;Mana Cost@@ after it failed.</li>\
<<elseif _text_triggers.blessing.resourceful_sorcerer === true && $modifiers.blessing.resourceful_sorcerer < 1>>\
<li>You recovered half of the spell's @@.mana;Mana Cost@@ after it failed.</li>\
<</if>>\
</div>\
</div>\
<</if>>\Version 0.2.2
<ul>\
<li>Guidebook available. The Guidebook contains information about how to play and various aspects of the game</li>
<li>Quick Menu Button added to more passages</li>\
<li>Added Links in Dungeon News to quick travel to relevant passages</li>\
<li>Minor bug fixes</li>\
</ul>\
Version 0.2.1
<ul>\
<li>Lots of minor bug fixes</li>\
<li>Updated Change Log</li>\
</ul>\
Version 0.2.0
<ul>\
<li>Updated Change Log</li>\
<li>Added ability to Rank Up!</li>\
<li>Added 1 new Creature and 1 new Trap in Rank 1</li>\
<li>Added 4 new Creatures and 4 new Traps in Rank 2</li>\
<li>Changes to every Creature and Trap</li>\
<li>Added new Raider Traits and Statuses</li>\
<li>Added two new Raider Classes</li>\
<li>Reworked Slaves and their mechanics</li>\
<li>Improved system to add Slave Packs to game</li>\
<li>Slave Packs can be used as Raiders standing picture and will carry over as a Slave if they are Captured</li>\
<li>Choose which Slave Pack can be used for each Raider Class in the Slave Pack Menu</li>\
<li>Slave Pack limitations removed, view the README text doc in the .example_pack for more details</li>\
<li>Player Missions are option tasks that provide unique rewards once completed</li>\
<li>Player Mission log can be found in the Player's Quarters</li>\
<li>Facilities replaced by Amenities</li>\
<li>Blessings are upgrades that can affect the Player, Slaves, Creatures, and Traps</li>\
<li>Blessings are sorted into Trees, unlocking Blessings in a Tree will make stronger Blessings in the same Tree available</li>\
<li>Blessings can be purchased from the Goddess</li>\
<li>Lust Essence is earned when the Player levels up and through Player Missions</li>\
<li>Use Lust Essence to purchase Creatures, Traps, and Blessings from the Goddess in her Quarters, replaces Research Lab</li>\
<li>Added new Player Spells, including Summoning Spells</li>\
<li>Summoning Spells allow the Player to cast various different Creatures during Raids</li>\
<li>Reworked Treasures</li>\
<li>Added lots of stat tracking</li>\
<li>Updated UI</li>\
<li>Guidebook unavailable (WIP)</li>\
<li>Probably more</li>\
</ul>\
Version 0.1 to 0.1.1 Changes
- Reduced the amount of Gold Raiders steal
- Shatter Spell fixed
- Selling Slaves fixed
- Added a confirm page when selling slaves
- Minor error fixed in Treasure Shop
- Camilla Slave Pack fixed to show all images correctly
- Removed Private Training, Training will be available at Rank 2
- Reduced the amount of EXP required to increase slave's stats
- Entering Study after reaching Reputation Milestone no longer increases your Dungeon Rank, breaking the game (whoops)
- Added option to disable room tutorials when starting a new game
- Disabled input shortcuts on passages where you can type (thank you android 18)
- Fixed cocoon spinner's sticky pictures for raiders
- Giant Slime upgrade now works properly
- Giant Slime now properly shows special capture images if capturing two or more raiders at the same time
- Fixed various tooltip issues in text
Version 0.1.1 to 0.1.2 Changes
- Added change log in Study
- Petite Slave Folders now display properly
- Busty Slave Packs can now be removed
- Virgin Trait now properly triggers and removes itself during Slave Tasks
- Fixed Lover Trait
- Fixed Rare Slave event
- Wizard and Spider room properly display critical hits and misses from Raiders
- Upgrading to Control Wizard during Raids doesn't cause issues
- Shatter Spell fixed again, for reals
- Absentminded cannot trigger after casting warp
- Adept Raiders on Casual Difficulty no longer break the game
- Performance improvements
- Game now Autosaves after nightly report
- Beauty trait now correctly shows bonus gold amount when assigning tasks
- Increased base magical and sexual damage for Jolt Spell
- Small changes to Reputation and Threat system
- Small changes to when Raiders clear your dungeon. Changes reflected in the Guidebook
- TL;DR: Less gap between Reputation and Threat gains/losses between fucking and releasing them. Raiders loot more gold but stealing treasures reduce the amount of gold stolen.
Version 0.1.2 to 0.1.3 Changes
- Ultimate Potion works properly
- Busty Slave Packs can be removed (promise)
- Warp only moves Raider back one room instead of to the dungeon entrance, Mana cost reduced to 3
- A lot of clean up under the hood
- Added quick travel menu
- Added new Trap: Magical Rune
- Special Traits for Raiders show as gold text
- Pictures in quick menu, visit town, and facilities now act as link (not implemented for dungeon rooms or slaves)
- Room Tutorials now show when the Enable Room Tutorial box is checked
Version 0.1.3 to 0.1.? Changes
SLAVE PACKS
- Slave Pack Folders can now have up to 100 images, using the same naming method as before. The first image in each folder should be named 0 counting up to 99
- All Slave Packs now go into the slave folder of your game, instead you assign each slave pack's body type in the game
- Petite is now called Slender and there is a new body type, Average, for all the girls you couldn't decide which body type they were
- Added footjob, titjob, lesbian and raider folders
- The raider folder will be the images used if a raider is assigned a slave pack. Therefore these images should showcase the girl as you'd image them before being a slave. They can be fighting, exploring, traveling, preparing, holding weapons or armor, ect. They MUST use the a vertical 4:3 aspect ratio
- The footjob folder should contain images that will be used during services using her feet
- The titjob folder should contain images that will be used during services using her breasts
- The lesbian folder should contain images that will be used during sexual activities with another girl
- You can now assign each slave pack to raider classes. For example, if you enable the Megumin Slave Pack to be used as a Witch, images from her raider folder will be used instead and if you capture her, she will remain as the captured slave
- Multiple of the same slave pack will not be used in the same party, even if you assign a Slave Pack with multiple classes. If the game cannot find a available Slave Pack to use, it will use the default pictures from before
RAIDERS
- All Raiders got some stat buffs and new descriptions to match the following changes in the class focus
- Alchemists: Increased stat buff from potions.
- Priestesses: Increased healing between rooms. Reduced Magical Resistance and Spellchecks
- Warriors: Increased Health, Lust total, and Physical Attack. Reduced Trapchecks
- Witches: Increased Magical Resistance and Spellchecks. Reduced Lust total and Endurance
- Removed Abilities but are now part of the Class identity, no changes functionally.
RAIDER TRAITS
- Flat: NEW Reduces maximum Health and Lust by 15%.
- Teraphobia: NEW Deals 50% less damage to Monsters. After a Monster attacks her, she has a 33% chance to Abandon the Dungeon.
- Entomophobia: NEW Deals 50% less damage to Insects. After a Insect attacks her, she has a 33% chance to Abandon the Dungeon.
- Zoophobia: NEW Deals 50% less damage to Beasts. After a Beast attacks her, she has a 33% chance to Abandon the Dungeon.
- Wild: NEW Gains 25% more Lust from Beasts, Insects, and Monsters.
- Reserved: NEW Gains 75% more lust from Humanoids but 25% less Lust from any other Creature Types.
- Holy: REMOVED Increases party's Spellcheck by 25%.
- Dragonborn: REMOVED Increases other party members stats by 10%. Increased her stat gains by 25%
- REPLACED Night Vision with Lone Wolf: While alone, her damage and Trapchecks are increased by 25%.
- REPLACE Biologist with Naturalist: Increases her Trap and Spellcheck against creatures by 25%.
STATUSES
- Blessed: REMOVED No longer grants immunity to statuses. NEW Increases Spellcheck by 50%
- Sticky: Trapchecks decreased changed to 50% from 30%
- NEW! Dazzled: Trapchecks decreased by 25%, caused by Glistening Moon Event to help with clarity
- Pregnant: Reduces all stats by 10% instead of 5% and does 25% of her maximum Lust as Sexual damage instead of 50% when giving birth.
CREATURES
- Silk Weaver
- Trapcheck changed to 30% + 10% physical attack from 60%
- Wizard
- Wizard deals Sexual damage to Raiders in a Trance. If the only target to attack is in a Trance, increase the amount of Sexual damage they take by 50%
- Wizard and all upgrades Trance Spell changed to 35% + 10% magical attack from 40%
TRAPS
- Changed Success Rate to either Trapcheck or Spellcheck depending on the conditions of the Trap, functionally the same
- Dart Trap
- Added 5 images for each mode
- Magic Rune Trap
- All modes only effect the first Raider who failed the trapcheck
- Spellcheck changed to 72% from 64%
- Spellcheck per Rank changed to 2% from 4%
- Flame Rune Mode: Deals Magical and Sexual damage, no longer causes Horny
- Lust Rune Mode: No longer deals Sexual damage but ALWAYS inflicts Mark of Lust Status
- Fertility Rune Mode: ALWAYS inflicts Mark of Fertility status
SLAVES
- Reworked most aspects of Slaves, more focus on automated jobs, building relations, creating the perfect slave, and sex.
- Changed Traits to work with new system, added Traits that only appear from Raiders (green) or Slaves in the Slave Market (blue)
LURING
- Each Treasure increases the chance of seeing Raiders that value that treasure, the amount based on the rarity, up to a total of 50%
- The amount of Gold increases the chance of seeing Thieves, up to 50%
- You can view how much your Treasures and Gold are luring each class in your Study
- Luring can only effect half the number of total Raiders entering your Dungeon (excluding hired Raiders)
Adventurer's Guild
- Hiring Raiders
- Removed fee cost but limited number of requests per day
- Increase the cost to hire Raiders slightly
- Quest Board
- Quests can be assigned to your Slaves to be completed, earning Gold, Reputation, and sometimes Treasure if she completes the Quest
- Quests can last 1 or more days, longer Quests give better rewards but you are unable to interact with her while she is on the Quest
- Assigning a Slave to a Quest cost Gold, the amount depends on the Level of the Quest. Higher Level Quests are more expensive and difficult to complete but give better rewards
LUST ESSENCE
- A new currency for the player
- Can be spent in Ahri's Quarters to learn new Creatures, Traps, and Echantments
- Earn Lust Essence whenever you gain a level or through other events in the game
AHRI'S QUARTERS
- Replaces Research Lab
- Purchase Creatures, Traps, and Enchantments from Ahri by spending Lust Essence
SLAVE MAREKT
- Value of each stat changes everyday
- Layout updated
- Slave Classes available at the Slave Market
- Classes can increase a stats growth, the amount increase depends on how well she did in the class
- Classes can last 1 or more days, longer Classes increase stat growth more but you are unable to interact with her while shes in the Class
- Assigning a Slave to a Class cost Gold, the amount depends on the Level of the Class. Higher Level Classes are more expensive and harder to pass but increase stat growth more
EVENTS
GENERAL
- Gaining a level no longer increases your maximum Mana by 1
- Creature Types are no longer Fetishes
- Added Trap Types (Toxin, Obstacle, Arcane, and Captive)
- Updated most Creature and Trap Descriptions
- Enslaving no longer Locks your Threat
- Study has been changed to your Quarters
- Facilities has been changed to Amenities
BUG FIXES
- Control Wizard triggers Raider's Squirting trait properly
Double-click this passage to edit it.<<silently>>\
* Variables *
*Empty Room Check*
If any room is empty and unlocked, the player cannot start the raids
<<set _empty_bool to false>>
<<for _i = 0; _i < $dungeon_floor_list.length; _i++>>
<<if $dungeon_floor_list[_i].room_type === "Empty" && $dungeon_floor_list[_i].built === true>>
<<set _empty_bool to true>>
<<break>>
<</if>>
<</for>>
* Display *
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<span id="back"><<button "Back" `previous()`>><</button>></span>
</div>\
<div class="titlebox">\
Quick Travel
</div>\
<div class="subheader-quick-travel">\
Click on an image to travel to that location
</div>\
<div class="cardholder-quick-travel">\
<div class="titlebox-quick-travel">\
<span id="1"><<button "Dungeon Manager ^^1^^" "Dungeon Floor Manager">><</button>></span>
</div>\
<div class="picbox-quick-travel">\
<<link [img[images/misc/quick_menu/dungeon.jpg][Dungeon Floor Manager]]>><</link>>
</div>\
</div>\
<div class="cardholder-quick-travel">\
<div class="titlebox-quick-travel">\
<span id="2"><<button "Slave Rooms ^^2^^" "Slave Room Manager">><</button>></span>
</div>\
<div class="picbox-quick-travel">\
[img[images/misc/quick_menu/slave.jpg][Slave Room Manager]]
</div>\
</div>\
<div class="cardholder-quick-travel">\
<div class="titlebox-quick-travel">\
<span id="3"><<button "Amenities ^^3^^" "Amenities">><</button>></span>
</div>\
<div class="picbox-quick-travel">\
[img[images/misc/quick_menu/amenities.jpg][Amenities]]
</div>\
</div>\
<div class="cardholder-quick-travel">\
<div class="titlebox-quick-travel">\
<span id="4"><<button "Town ^^4^^" "Town Menu">><</button>></span>
</div>\
<div class="picbox-quick-travel">\
<<link [img[images/town/town.jpg][Town Menu]]>><</link>>
</div>\
</div>\
<div class="cardholder-quick-travel">\
<div class="titlebox-quick-travel">\
<span id="5"><<button "Guidebook ^^5^^" "Guidebook">><</button>></span>
</div>\
<div class="picbox-quick-travel">\
<<link [img[images/misc/guidebook/0.jpg][Guidebook]]>><</link>>
</div>\
</div>\
<div class="cardholder-quick-travel">\
<div class="titlebox-quick-travel">\
<span id="6"><<button "Slave Packs ^^6^^" "Slave Pack Menu">><</button>></span>
</div>\
<div class="picbox-quick-travel">\
<<link [img[images/misc/slave_packs_pic.jpg][Slave Pack Menu]]>><</link>>
</div>\
</div>\
<div class="cardholder-quick-travel">\
<<if _empty_bool === true>>\
<div class="titlebox-quick-travel">\
<span id="7"><<button "End Day ^^7^^" "Empty Dungeon Warning">><</button>></span>
</div>\
<div class="picbox-quick-travel">\
<<link [img[images/misc/title.jpg][Empty Dungeon Warning]]>><</link>>
</div>\
<<elseif $treasureroom_size < $treasureroom_inventory.length>>\
<div class="titlebox-quick-travel">\
<span id="7"><<button "End Day ^^7^^" "Treasure Vault Warning">><</button>></span>
</div>\
<div class="picbox-quick-travel">\
<<link [img[images/misc/title.jpg][Treasure Vault Warning]]>><</link>>
</div>\
<<else>>\
<div class="titlebox-quick-travel">\
<span id="7"><<button "End Day ^^7^^" "Pre Raid Report">><</button>></span>
</div>\
<div class="picbox-quick-travel">\
<<link [img[images/misc/title.jpg][Pre Raid Report]]>><</link>>
</div>\
<</if>>\
</div>\
<div class="cardholder-quick-travel">\
<div class="titlebox-quick-travel">\
<span id="8"><<button "Main Menu ^^8^^" "Main Menu">><</button>></span>
</div>\
<div class="picbox-quick-travel">\
[img[images/misc/quick_menu/main_menu.jpg][Main Menu]]
</div>\
</div>\
</div>\<div class="wrapper">\
<div class="titlebox">\
Change Log
</div>\
<div class="guidebook-titlebox">\
Version 0.2.2
</div>\
<div class="guidebook-textbox">\
<ul>\
<li>Guidebook available. The Guidebook contains information about how to play and various aspects of the game</li>
<li>Quick Menu Button added to more passages</li>\
<li>Added Links in Dungeon News to quick travel to relevant passages</li>\
<li>Minor bug fixes</li>\
</ul>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Player's Stats]]>><</button>></span>
</div>\
</div>\<<silently>>\
* SETUP ROOM *
<<RoomSetup $raiders $this_room>>
<<TrapStats $this_room>>
* SETUP RAIDER *
<<RaiderSetup $raiders>>
* PRE COMBAT EFFECTS *
<<PreCombat $raiders $this_room>>
* DANCER BUFF *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].class === "Dancer">>
<<DancerBuff $raiders[_i] $this_room>>
<</if>>
<</for>>
* TRAPCHECKS FOR EACH RAIDER OR UNTIL ONE FAILS *
<<for _r = 0; _r < $raiders.length; _r++>>
<<set $this_room.total_attempts++>>
<<set $this_room.report.trap_attempts++>>
<<CalcTrapcheck $raiders[_r] $this_room.cur_check>>
<<SimTrapcheck $raiders[_r] _trapcheck>>
<<if _text_triggers.check.trapcheck_failed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)>>
<<set $this_room.total_triggers++>>
<<set $this_room.report.trap_successes++>>
UPDATE RAIDER REPORT
<<set _entry to "She stepped in the "+$this_room.mode+" and triggered it.">>
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[_r].report.log.push(_lastLog)>>
END TRAPCHECKS
<<break>>
<<else>>
UPDATE RAIDER REPORT
<<set _entry to "She did not set off the "+$this_room.mode+".">>
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[_r].report.log.push(_lastLog)>>
<</if>>
<</for>>
* TRAP TRIGGERS *
<<if _text_triggers.check.trapcheck_failed.length + _text_triggers.check.trapcheck_crit_failed.length > 0>>
<<for _r = 0; _r < $raiders.length; _r++>>
<<if _text_triggers.check.trapcheck_failed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)>>
* DAMAGE *
<<if $this_room.mode === "Fire Rune">>
<<set _matk to Math.trunc($this_room.cur_atk * $this_room.high_float)>>
<<set _satk to Math.trunc($this_room.cur_sex * $this_room.low_float)>>
<<elseif $this_room.mode === "Lust Rune">>
<<set _matk to Math.trunc($this_room.cur_atk * $this_room.low_float)>>
<<set _satk to Math.trunc($this_room.cur_sex * $this_room.high_float)>>
<<elseif $this_room.mode === "Lewd Rune">>
<<set _matk to Math.trunc($this_room.cur_atk * $this_room.low_float)>>
<<set _satk to Math.trunc($this_room.cur_sex * $this_room.low_float)>>
<</if>>
<<NormalAttack $raiders[_r] $this_room _matk>>
<<SexualAttack $raiders[_r] $this_room _satk>>
* EFFECTS *
<<if $this_room.mode === "Fire Rune">>
<<AddStatus $raiders[_r] setup.stripped true>>
UPDATE RAIDER REPORT
<<if _text_triggers.status.stripped.includes($raiders[_r].index)>>
<<set _entry to "She took @@.mag;"+$raiders[_r].dmg_taken+"@@ and @@.sex;"+$raiders[_r].sex_taken+"@@ damage and became Stripped.">>
<<else>>
<<set _entry to "She took @@.mag;"+$raiders[_r].dmg_taken+"@@ and @@.sex;"+$raiders[_r].sex_taken+"@@ damage.">>
<</if>>
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[_r].report.log.push(_lastLog)>>
<<elseif $this_room.mode === "Lust Rune">>
<<AddStatus $raiders[_r] setup.mark_of_lust true>>
UPDATE RAIDER REPORT
<<if _text_triggers.status.markoflust.includes($raiders[_r].index)>>
<<set _entry to "She took @@.mag;"+$raiders[_r].dmg_taken+"@@ and @@.sex;"+$raiders[_r].sex_taken+"@@ damage and was branded with the Mark of Lust.">>
<<else>>
<<set _entry to "She took @@.mag;"+$raiders[_r].dmg_taken+"@@ and @@.sex;"+$raiders[_r].sex_taken+"@@ damage.">>
<</if>>
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[_r].report.log.push(_lastLog)>>
<<elseif $this_room.mode === "Lewd Rune">>
<<AddStacks $raiders[_r] setup.futanari $this_room.futa_stacks true>>
<<AddStatus $raiders[_r] setup.horny true>>
FIND FUTA GAINED FOR REPORT
<<if $raiders[_r].status_names.includes("Futanari")>>
<<for _s = 0; _s < $raiders[_r].statuses.length; _s++>>
<<if $raiders[_r].statuses[_s].id === setup.futanari.id>>
<<set _futa_gained to $raiders[_r].statuses[_s].gain>>
<<break>>
<</if>>
<</for>>
<</if>>
UPDATE RAIDER REPORT
<<if _text_triggers.status.horny.includes($raiders[_r].index)>>
<<set _entry to "She took @@.mag;"+$raiders[_r].dmg_taken+"@@ and @@.sex;"+$raiders[_r].sex_taken+"@@ damage, gained "+_futa_gained+" Futanari, and became Horny.">>
<<else>>
<<set _entry to "She took @@.mag;"+$raiders[_r].dmg_taken+"@@ and @@.sex;"+$raiders[_r].sex_taken+"@@ damage and gained "+_futa_gained+" Futanari.">>
<</if>>
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[_r].report.log.push(_lastLog)>>
<</if>>
<<else>>
UPDATE RAIDER REPORT
<<set _entry to "She watched her ally step in the "+$this_room.mode+".">>
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[_r].report.log.push(_lastLog)>>
<</if>>
<</for>>
<</if>>
* POST COMBAT EFFECTS *
<<for _r = 0; _r < $raiders.length; _r++>>
<<PostCombat $raiders[_r] $this_room>>
<</for>>
* RAIDER IMAGES *
SETUP PIC ARRAY
<<set _picArray to clone($this_room.raider_pics)>>
<<for _r = 0; _r < $raiders.length; _r++>>
<<if (_text_triggers.check.trapcheck_failed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index))>>
*Raider Triggered Trap *
<<set $raiders[_r].pic to _picArray[$raiders[_r].body_type].pluck()>>
<</if>>
<</for>>
* END OF COMBAT REPORT *
<<PostCombatReport $raiders $this_room>>
* CLEAN UP *
<<CleanUp $raiders $this_room>>
*Display Info*
<<set _cardholderID to "cardholder-raid-"+$raiders.length+"raiders">>
<<set _cardinfoID to "cardinfo-raid-"+$raiders.length+"raiders">>
<<set _picboxID to "picbox-raid-"+$raiders.length+"raiders">>
<<set _textboxID to "textbox-raid-"+$raiders.length+"raiders">>
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<<NextRoomButton>>\
</div>\
<div class="cardholder-raid-playerside">\
<div class="cardinfo-raid-trap">\
<div class="roomtitle-raid-player">\
Floor $cur_room_num
</div>\
<div class="picbox-raid-player">\
$this_room.pic
</div>\
<div class="namebox-raid-player">\
<strong>$this_room.name</strong>
---- $this_room.check_type: $this_room.cur_check ----
</div>\
<div class="textbox-raid-player">\
<ul>\
<<TrapRoomText $this_room>>
<<BlessingTriggerText $this_room>>
<<EffectEndingText $this_room>>
</ul>\
</div>\
</div>\
</div>\
<div class="cardholder-raid-raiderside">\
<<for _r = 0; _r < $raiders.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_textboxID">\
<ul>\
<<DancerDanceText $raiders[_r] $this_room>>
<<if _text_triggers.check.trapcheck_crit_passed.includes($raiders[_r].index) ||_text_triggers.check.trapcheck_passed.includes($raiders[_r].index)>>\
<li><<if _text_triggers.check.trapcheck_crit_passed.includes($raiders[_r].index)>><strong>Critical Success!</strong> <</if>>She walked through the room, easily avoiding the $this_room.mode.</li>\
<<elseif _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_failed.includes($raiders[_r].index)>>\
<<if $this_room.mode === "Fire Rune">>\
<li><<if _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)>><strong>Critical Failure!</strong> <</if>>She took a wrong step and was engulfed in fire, taking @@.mag;$raiders[_r].dmg_taken Magical@@ damage and @@.sex;$raiders[_r].sex_taken Sexual@@ damage.</li>\
<<elseif $this_room.mode === "Lust Rune">>\
<li><<if _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)>><strong>Critical Failure!</strong> <</if>>She took a wrong step and was enveloped in lustful magic, taking @@.mag;$raiders[_r].dmg_taken Magical@@ damage and @@.sex;$raiders[_r].sex_taken Sexual@@ damage.</li>\
<<elseif $this_room.mode === "Lewd Rune">>\
<li><<if _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)>><strong>Critical Failure!</strong> <</if>>She took a wrong step and was caught in lewd energy, taking @@.mag;$raiders[_r].dmg_taken Magical@@ damage and @@.sex;$raiders[_r].sex_taken Sexual@@ damage.</li>\
<</if>>\
<</if>>\
<<if !_text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index) && !_text_triggers.check.trapcheck_failed.includes($raiders[_r].index) && _text_triggers.check.trapcheck_crit_failed.length + _text_triggers.check.trapcheck_failed.length > 0>>\
<<set _rText to ["She could only watched as her teammate trigger the trap.", "She helplessly watched as her ally was caught in the trap.", "She stepped back from her teammate caught in the Trap, unable to help her.", "She tried to stop her teammate from stepping onto the rune, but she was too late.", "She was unable to watch her ally as they were caught in the rune."]>>\
<<set _text to _rText.random()>>\
<li>_text</li>\
<</if>>\
<<RaiderFetishText $raiders[_r] $this_room>>
<<PostCombatText $raiders[_r] $this_room>>
</ul>\
</div>\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\<<silently>>\
* Variables *
<<set _list to ["slender", "average", "busty"]>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Edit Slave Packs
</div>\
<div class="cardholder-packs-edit">\
<div class="textbox-packs-edit">\
Add Slave Pack (see left side menu for available packs)
<<textbox "_newSlave" "">> <<button [[Add|Slave Pack Add]]>>\
<<silently>>\
<<set _newPack = {
folder: _newSlave,
body_type: "average",
classes: ["Hunter","Sorcerer","Knight","Warrior","Thief","Priestess","Alchemist","Witch","Dancer","Brawler"],
hunter: false,
sorcerer: false,
knight: false,
warrior: false,
thief: false,
priestess: false,
alchemist: false,
witch: false,
dancer: false,
brawler: false,
used: false,
new: true
}>>
<<set $slave_pack_array.push(clone(_newPack))>>
<<= loadSlavePackImageData()>>
<</silently>>\
<</button>>
</div>\
<div class="slavebox-packs-edit">\
<<for _i = 0; _i < $slave_pack_array.length; _i++>>\
<div class="slaveholder-packs-edit">\
<div class="slavecell-packs-edit">\
<div class="cellpic-packs-edit">\
<<if $slave_pack_array[_i].face == null>>\
<<set _pic to "[img[images/misc/unknown.png]]">>\
<<else>>\
<<set _pic to $slave_pack_array[_i].face.random()>>\
<</if>>\
_pic
</div>\
<div class="cellname-packs-edit">\
<<- $slave_pack_array[_i].folder>>\
</div>\
<div class="cellbody-packs-edit">\
<<capture _i>>\
<<listbox "$slave_pack_array[_i].body_type" autoselect>>\
<<optionsfrom _list>>
<</listbox>>\
<</capture>>\
</div>\
<div class="cellbutton-packs-edit">\
<<capture _i>>\
<<button [[Remove|Slave Pack Edit]]>>\
<<set _remove to $slave_pack_array.deleteAt(_i)>>\
<</button>>\
<</capture>>\
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Slave Pack Menu]]>><</button>></span>
</div>\
</div><<silently>>\
* Variables *
<<set _classList to ["hunter","sorcerer","knight","warrior","thief","priestess","alchemist","witch","dancer","brawler"]>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Assigning Classes
</div>\
<div class="slaveheader-packs-assign">\
<strong>Slave Name</strong>
</div>\
<div class="header-packs-assign">\
<<hovertip "Hunter">><<- setup.hunter.icon>><</hovertip>>
<<silently>>\
* Hunter Check/Uncheck All *
<<set _checked_bool to true>>
<<for _z = 0; _z < $slave_pack_array.length; _z++>>
<<if $slave_pack_array[_z].hunter === false>>
<<set _checked_bool to false>>
<<break>>
<</if>>
<</for>>
<</silently>>\
<div class="header-packs-assign-checkbox">\
<<if _checked_bool === true>>\
<<link "[img[images/icons/checked_icon.png]]" "Slave Pack Classes">><<for _z = 0; _z < $slave_pack_array.length; _z++>><<set $slave_pack_array[_z].hunter to false>><</for>><</link>>
<<else>>\
<<link "[img[images/icons/unchecked_icon.png]]" "Slave Pack Classes">><<for _z = 0; _z < $slave_pack_array.length; _z++>><<set $slave_pack_array[_z].hunter to true>><</for>><</link>>
<</if>>\
</div>
</div>\
<div class="header-packs-assign">\
<<hovertip "Sorcerer">><<- setup.sorcerer.icon>><</hovertip>>
<<silently>>\
* Sorcerer Check/Uncheck All *
<<set _checked_bool to true>>
<<for _z = 0; _z < $slave_pack_array.length; _z++>>
<<if $slave_pack_array[_z].sorcerer === false>>
<<set _checked_bool to false>>
<<break>>
<</if>>
<</for>>
<</silently>>\
<div class="header-packs-assign-checkbox">\
<<if _checked_bool === true>>\
<<link "[img[images/icons/checked_icon.png]]" "Slave Pack Classes">><<for _z = 0; _z < $slave_pack_array.length; _z++>><<set $slave_pack_array[_z].sorcerer to false>><</for>><</link>>
<<else>>\
<<link "[img[images/icons/unchecked_icon.png]]" "Slave Pack Classes">><<for _z = 0; _z < $slave_pack_array.length; _z++>><<set $slave_pack_array[_z].sorcerer to true>><</for>><</link>>
<</if>>\
</div>
</div>\
<div class="header-packs-assign">\
<<hovertip "Knight">><<- setup.knight.icon>><</hovertip>>
<<silently>>\
* Knight Check/Uncheck All *
<<set _checked_bool to true>>
<<for _z = 0; _z < $slave_pack_array.length; _z++>>
<<if $slave_pack_array[_z].knight === false>>
<<set _checked_bool to false>>
<<break>>
<</if>>
<</for>>
<</silently>>\
<div class="header-packs-assign-checkbox">\
<<if _checked_bool === true>>\
<<link "[img[images/icons/checked_icon.png]]" "Slave Pack Classes">><<for _z = 0; _z < $slave_pack_array.length; _z++>><<set $slave_pack_array[_z].knight to false>><</for>><</link>>
<<else>>\
<<link "[img[images/icons/unchecked_icon.png]]" "Slave Pack Classes">><<for _z = 0; _z < $slave_pack_array.length; _z++>><<set $slave_pack_array[_z].knight to true>><</for>><</link>>
<</if>>\
</div>
</div>\
<div class="header-packs-assign">\
<<hovertip "Warrior">><<- setup.warrior.icon>><</hovertip>>
<<silently>>\
* Warrior Check/Uncheck All *
<<set _checked_bool to true>>
<<for _z = 0; _z < $slave_pack_array.length; _z++>>
<<if $slave_pack_array[_z].warrior === false>>
<<set _checked_bool to false>>
<<break>>
<</if>>
<</for>>
<</silently>>\
<div class="header-packs-assign-checkbox">\
<<if _checked_bool === true>>\
<<link "[img[images/icons/checked_icon.png]]" "Slave Pack Classes">><<for _z = 0; _z < $slave_pack_array.length; _z++>><<set $slave_pack_array[_z].warrior to false>><</for>><</link>>
<<else>>\
<<link "[img[images/icons/unchecked_icon.png]]" "Slave Pack Classes">><<for _z = 0; _z < $slave_pack_array.length; _z++>><<set $slave_pack_array[_z].warrior to true>><</for>><</link>>
<</if>>\
</div>
</div>\
<div class="header-packs-assign">\
<<hovertip "Thief">><<- setup.thief.icon>><</hovertip>>
<<silently>>\
* Thief Check/Uncheck All *
<<set _checked_bool to true>>
<<for _z = 0; _z < $slave_pack_array.length; _z++>>
<<if $slave_pack_array[_z].thief === false>>
<<set _checked_bool to false>>
<<break>>
<</if>>
<</for>>
<</silently>>\
<div class="header-packs-assign-checkbox">\
<<if _checked_bool === true>>\
<<link "[img[images/icons/checked_icon.png]]" "Slave Pack Classes">><<for _z = 0; _z < $slave_pack_array.length; _z++>><<set $slave_pack_array[_z].thief to false>><</for>><</link>>
<<else>>\
<<link "[img[images/icons/unchecked_icon.png]]" "Slave Pack Classes">><<for _z = 0; _z < $slave_pack_array.length; _z++>><<set $slave_pack_array[_z].thief to true>><</for>><</link>>
<</if>>\
</div>
</div>\
<div class="header-packs-assign">\
<<hovertip "Priestess">><<- setup.priestess.icon>><</hovertip>>
<<silently>>\
* Priestess Check/Uncheck All *
<<set _checked_bool to true>>
<<for _z = 0; _z < $slave_pack_array.length; _z++>>
<<if $slave_pack_array[_z].priestess === false>>
<<set _checked_bool to false>>
<<break>>
<</if>>
<</for>>
<</silently>>\
<div class="header-packs-assign-checkbox">\
<<if _checked_bool === true>>\
<<link "[img[images/icons/checked_icon.png]]" "Slave Pack Classes">><<for _z = 0; _z < $slave_pack_array.length; _z++>><<set $slave_pack_array[_z].priestess to false>><</for>><</link>>
<<else>>\
<<link "[img[images/icons/unchecked_icon.png]]" "Slave Pack Classes">><<for _z = 0; _z < $slave_pack_array.length; _z++>><<set $slave_pack_array[_z].priestess to true>><</for>><</link>>
<</if>>\
</div>
</div>\
<div class="header-packs-assign">\
<<hovertip "Alchemist">><<- setup.alchemist.icon>><</hovertip>>
<<silently>>\
* Alchemist Check/Uncheck All *
<<set _checked_bool to true>>
<<for _z = 0; _z < $slave_pack_array.length; _z++>>
<<if $slave_pack_array[_z].alchemist === false>>
<<set _checked_bool to false>>
<<break>>
<</if>>
<</for>>
<</silently>>\
<div class="header-packs-assign-checkbox">\
<<if _checked_bool === true>>\
<<link "[img[images/icons/checked_icon.png]]" "Slave Pack Classes">><<for _z = 0; _z < $slave_pack_array.length; _z++>><<set $slave_pack_array[_z].alchemist to false>><</for>><</link>>
<<else>>\
<<link "[img[images/icons/unchecked_icon.png]]" "Slave Pack Classes">><<for _z = 0; _z < $slave_pack_array.length; _z++>><<set $slave_pack_array[_z].alchemist to true>><</for>><</link>>
<</if>>\
</div>
</div>\
<div class="header-packs-assign">\
<<hovertip "Witch">><<- setup.witch.icon>><</hovertip>>
<<silently>>\
* Witch Check/Uncheck All *
<<set _checked_bool to true>>
<<for _z = 0; _z < $slave_pack_array.length; _z++>>
<<if $slave_pack_array[_z].witch === false>>
<<set _checked_bool to false>>
<<break>>
<</if>>
<</for>>
<</silently>>\
<div class="header-packs-assign-checkbox">\
<<if _checked_bool === true>>\
<<link "[img[images/icons/checked_icon.png]]" "Slave Pack Classes">><<for _z = 0; _z < $slave_pack_array.length; _z++>><<set $slave_pack_array[_z].witch to false>><</for>><</link>>
<<else>>\
<<link "[img[images/icons/unchecked_icon.png]]" "Slave Pack Classes">><<for _z = 0; _z < $slave_pack_array.length; _z++>><<set $slave_pack_array[_z].witch to true>><</for>><</link>>
<</if>>\
</div>
</div>\
<div class="header-packs-assign">\
<<hovertip "Dancer">><<- setup.dancer.icon>><</hovertip>>
<<silently>>\
* dancer Check/Uncheck All *
<<set _checked_bool to true>>
<<for _z = 0; _z < $slave_pack_array.length; _z++>>
<<if $slave_pack_array[_z].dancer === false>>
<<set _checked_bool to false>>
<<break>>
<</if>>
<</for>>
<</silently>>\
<div class="header-packs-assign-checkbox">\
<<if _checked_bool === true>>\
<<link "[img[images/icons/checked_icon.png]]" "Slave Pack Classes">><<for _z = 0; _z < $slave_pack_array.length; _z++>><<set $slave_pack_array[_z].dancer to false>><</for>><</link>>
<<else>>\
<<link "[img[images/icons/unchecked_icon.png]]" "Slave Pack Classes">><<for _z = 0; _z < $slave_pack_array.length; _z++>><<set $slave_pack_array[_z].dancer to true>><</for>><</link>>
<</if>>\
</div>
</div>\
<div class="header-packs-assign">\
<<hovertip "Brawler">><<- setup.brawler.icon>><</hovertip>>
<<silently>>\
* Brawler Check/Uncheck All *
<<set _checked_bool to true>>
<<for _z = 0; _z < $slave_pack_array.length; _z++>>
<<if $slave_pack_array[_z].brawler === false>>
<<set _checked_bool to false>>
<<break>>
<</if>>
<</for>>
<</silently>>\
<div class="header-packs-assign-checkbox">\
<<if _checked_bool === true>>\
<<link "[img[images/icons/checked_icon.png]]" "Slave Pack Classes">><<for _z = 0; _z < $slave_pack_array.length; _z++>><<set $slave_pack_array[_z].brawler to false>><</for>><</link>>
<<else>>\
<<link "[img[images/icons/unchecked_icon.png]]" "Slave Pack Classes">><<for _z = 0; _z < $slave_pack_array.length; _z++>><<set $slave_pack_array[_z].brawler to true>><</for>><</link>>
<</if>>\
</div>
</div>\
<div class="tablebox-packs-assign">\
<<for _i = 0; _i < $slave_pack_array.length; _i++>>\
<div class="row-packs-assign">\
<div class="slavecell-packs-assign">\
<<silently>>\
* Slave Folder Check/Uncheck All *
<<set _checked_bool to true>>
<<for _z = 0; _z < _classList.length; _z++>>
<<if $slave_pack_array[_i][_classList[_z]] === false>>
<<set _checked_bool to false>>
<<break>>
<</if>>
<</for>>
<</silently>>\
<<- $slave_pack_array[_i].folder>> \
<<capture _i>>\
<<if _checked_bool === true>>\
<<link "[img[images/icons/checked_icon.png]]" "Slave Pack Classes">><<for _z = 0; _z < _classList.length; _z++>><<set $slave_pack_array[_i][_classList[_z]] to false>><</for>><</link>>
<<else>>\
<<link "[img[images/icons/unchecked_icon.png]]" "Slave Pack Classes">><<for _z = 0; _z < _classList.length; _z++>><<set $slave_pack_array[_i][_classList[_z]] to true>><</for>><</link>>
<</if>>\
<</capture>>
</div>\
<div class="cell-packs-assign">\
<<capture _i>><<checkbox "$slave_pack_array[_i].hunter" false true autocheck>><</capture>>
</div>\
<div class="cell-packs-assign">\
<<capture _i>><<checkbox "$slave_pack_array[_i].sorcerer" false true autocheck>><</capture>>
</div>\
<div class="cell-packs-assign">\
<<capture _i>><<checkbox "$slave_pack_array[_i].knight" false true autocheck>><</capture>>
</div>\
<div class="cell-packs-assign">\
<<capture _i>><<checkbox "$slave_pack_array[_i].warrior" false true autocheck>><</capture>>
</div>\
<div class="cell-packs-assign">\
<<capture _i>><<checkbox "$slave_pack_array[_i].thief" false true autocheck>><</capture>>
</div>\
<div class="cell-packs-assign">\
<<capture _i>><<checkbox "$slave_pack_array[_i].priestess" false true autocheck>><</capture>>
</div>\
<div class="cell-packs-assign">\
<<capture _i>><<checkbox "$slave_pack_array[_i].alchemist" false true autocheck>><</capture>>
</div>\
<div class="cell-packs-assign">\
<<capture _i>><<checkbox "$slave_pack_array[_i].witch" false true autocheck>><</capture>>
</div>\
<div class="cell-packs-assign">\
<<capture _i>><<checkbox "$slave_pack_array[_i].dancer" false true autocheck>><</capture>>
</div>\
<div class="cell-packs-assign">\
<<capture _i>><<checkbox "$slave_pack_array[_i].brawler" false true autocheck>><</capture>>
</div>\
</div>\
<</for>>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Slave Pack Menu]]>><</button>></span>
</div>\
</div>\<<silently>>\
* Variables *
<<if $slave_view_list == null>>
<<set $view_slave to $slave_pack_array[0]>>
<<set $view_num to 0>>
<<set $view_sex to "slave">>
<<set $folder to $view_sex>>
<<set $slave_view_list to []>>
<<for _i = 0; _i < $slave_pack_array.length; _i++>>
<<set _folder to $slave_pack_array[_i].folder>>
<<set $slave_view_list.push(_folder)>>
<</for>>
<<else>>
<<set $slave to $view_slave.folder>>
<<set $folder to $view_sex>>
<</if>>
*Display*
<</silently>>\
<div class="section">\
<div class="titlebox">\
Slaves Packs
</div>\
<div class="cardholder-packs-view">\
<div class="listbox-packs-view">\
<strong>Slave</strong>
<<listbox "$slave" autoselect>>\
<<optionsfrom $slave_view_list>>\
<</listbox>>
</div>\
<div class="listbox-packs-view">\
<strong>Folder</strong>
<<listbox "$folder" autoselect>>\
<<optionsfrom setup.folderTypes>>\
<</listbox>>\
</div>\
<div class="listbox-packs-view">\
<span id="forward"><<button [[Update|View Slave Packs]]>>\
<<silently>>\
<<set $view_num to 0>>
<<set $view_sex to $folder>>
<<for _n = 0; _n < $slave_pack_array.length; _n++>>
<<if $slave_pack_array[_n].folder === $slave>>
<<set $view_slave to $slave_pack_array[_n]>>
<<break>>
<</if>>
<</for>>
<</silently>>\
<</button>></span>
</div>\
<div class="slavebox-packs-view">\
<span id="left"><<button [[Previous|View Slave Packs]]>><<set $view_num-->><<if $view_num <= -1>><<set $view_num to $view_slave[$view_sex].length - 1>><</if>><</button>></span> <strong>Image <<- $view_num + 1>> of $view_slave[$view_sex].length</strong> <span id="right"><<button [[Next|View Slave Packs]]>><<set $view_num++>><<if $view_num >= $view_slave[$view_sex].length>><<set $view_num to 0>><</if>><</button>></span>
</div>\
</div>\
<<silently>>\
*SET PICTURE*
<<set _pic to $view_slave[$view_sex][$view_num]>>
<</silently>>\
<div class="slavepic-packs-view">\
_pic
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Slave Pack Menu]]>><<unset $view_slave, $view_sex, $view_num, $slave_view_list, $folder, $slave>><</button>></span>
</div>\
</div>\<<silently>>\
* Variables *
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox-packs-reset">\
Reset Slave Pack Data?
</div>\
<div class="textbox-packs-reset">\
Resetting your Slave Pack Data will only reset your Slave Pack information in the game. The Slave packs in your Slave folder will remain unchange, meaning if you removed any Slave Packs that came with the game you will fail to load images for Slaves using those Slave Packs.
</div>\
<div class="buttonbox-packs-reset">\
Reset Data?
<span id="forward"><<button [[Reset|Slave Pack Edit]]>>\
<<silently>>\
<</silently>>\
<</button>></span> <span id="back"><<button [[Keep Data|Slave Pack Menu]]>><</button>></span>
</div>\
</div>\<<if $visited_jobs === false && $tutorial_guides === true>>\
TUTORIAL
<<else>>\
<<silently>>\
* Variables *
* Set Job List *
<<set _slaveJobList to setup.serviceJobs.concat(setup.prostitutionJobs, setup.caretakerJobs, setup.maintenanceJobs)>>
CLEAN UP LIST
<<if $filter_jobs == null>>
<<set $filter_jobs to true>>
<</if>>
<<for _z = 0; _z < _slaveJobList.length; _z++>>
<<if ($cur_slave.love < _slaveJobList[_z].unlock_req.love || $cur_slave.libido < _slaveJobList[_z].unlock_req.libido || $cur_slave.strength < _slaveJobList[_z].unlock_req.strength || $cur_slave.intelligence < _slaveJobList[_z].unlock_req.intelligence) && $filter_jobs === true>>
$cur_slave.name DOES NOT MEET _slaveJobList[_z].name's REQUIREMENTS
<<set _remove to _slaveJobList.deleteAt(_z)>>
<<set _z-->>
<<continue>>
<</if>>
<<if (($cur_slave.trait_names.includes("Loathing") && _slaveJobList[_z].type === "Service") || ($cur_slave.trait_names.includes("Traumatized") && _slaveJobList[_z].type === "Prostitution") || ($cur_slave.trait_names.includes("Clingy") && _slaveJobList[_z].type != "Service") || ($cur_slave.trait_names.includes("Slutty") && _slaveJobList[_z].type != "Prostitution")) && $filter_jobs === true>>
$cur_slave.name CANNOT WORK _slaveJobList[_z].type JOBS
<<set _remove to _slaveJobList.deleteAt(_z)>>
<<set _z-->>
<<continue>>
<</if>>
ADDED _slaveJobList[_z].name TO LIST
<</for>>
<<if $cur_slave.trait_names.includes("Motherly")>>
<<if ($cur_slave.love < setup.motherly_service_job.unlock_req.love || $cur_slave.libido < setup.motherly_service_job.unlock_req.libido || $cur_slave.strength < setup.motherly_service_job.unlock_req.strength || $cur_slave.intelligence < setup.motherly_service_job.unlock_req.intelligence || $cur_slave.trait_names.includes("Loathing")) && $filter_jobs === true>>
$cur_slave.name DOES NOT MEET setup.motherly_service_job.name's REQUIREMENTS
<<else>>
<<set _slaveJobList.push(setup.motherly_service_job)>>
<</if>>
<</if>>
* Assigned Service Jobs *
List of jobs assigned to slave currently
<<set _serviceJobList to []>>
<<for _z = 0; _z < $slave_room_list.length; _z++>>
<<if $slave_room_list[_z].room_type === "Slave">>
<<if $slave_room_list[_z].job !== "">>
<<if $slave_room_list[_z].job.type === "Service">>
<<set _newEntry to {
index: $slave_room_list[_z].index,
name: $slave_room_list[_z].job.name
}>>
<<set _serviceJobList.push(clone(_newEntry))>>
<</if>>
<</if>>
<</if>>
<</for>>
* Job Pages *
<<if !$job_page>>
<<set $job_page to 0>>
<</if>>
<<set _jobs_per_page to 8>> the number of jobs that can be on each page, starting count from 0
<<set _start_pos to _jobs_per_page * $job_page>> Set where to start the list based on what the page is
<<if _start_pos + _jobs_per_page < _slaveJobList.length>>
<<set _end_pos to _start_pos + _jobs_per_page>> Set where to end the list based on what the page is
<<else>>
<<set _end_pos to _slaveJobList.length>>
<</if>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Job List
</div>\
<div class="slaveholder-assignjob">\
<div class="sidebutton-assignjob">\
</div>\
<div class="slaveinfo-assignjob">\
<div class="picbox-slaveinfo-assignjob">\
$cur_slave.pic
</div>\
<div class="textholder-slaveinfo-assignjob">\
<div class="namebox-slaveinfo-assignjob">\
$cur_slave.name
</div>\
<div class="statholder-slaveinfo-assignjob">\
<div class="statbox-slaveinfo-assignjob">\
<<hovertip "<<- setup.slave_stats.love.tooltip>>">><<-setup.slave_stats.love.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.love_tracker / $cur_slave.love_tracker_limit<br>Max: $cur_slave.love_limit">>@@.love;$cur_slave.love@@<</hovertip>>\
</div>\
<div class="statbox-slaveinfo-assignjob">\
<<hovertip "<<- setup.slave_stats.obedience.tooltip>>">><<-setup.slave_stats.obedience.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.obedience_tracker / $cur_slave.obedience_tracker_limit<br>Max: $cur_slave.obedience_limit">>@@.obedience;$cur_slave.obedience@@<</hovertip>>\
</div>\
<div class="statbox-slaveinfo-assignjob">\
<<hovertip "<<- setup.slave_stats.libido.tooltip>>">><<-setup.slave_stats.libido.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.libido_tracker / $cur_slave.libido_tracker_limit<br>Max: $cur_slave.libido_limit">>@@.libido;$cur_slave.libido@@<</hovertip>>\
</div>\
<div class="statbox-slaveinfo-assignjob">\
<<hovertip "<<- setup.slave_stats.strength.tooltip>>">><<-setup.slave_stats.strength.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.strength_tracker / $cur_slave.strength_tracker_limit<br>Max: $cur_slave.strength_limit">>@@.strength;$cur_slave.strength@@<</hovertip>>\
</div>\
<div class="statbox-slaveinfo-assignjob">\
<<hovertip "<<- setup.slave_stats.intelligence.tooltip>>">><<-setup.slave_stats.intelligence.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.intelligence_tracker / $cur_slave.intelligence_tracker_limit<br>Max: $cur_slave.intelligence_limit">>@@.intelligence;$cur_slave.intelligence@@<</hovertip>>\
</div>\
<div class="statbox-slaveinfo-assignjob">\
<<hovertip "<<- setup.slave_stats.stress.tooltip>>">><<-setup.slave_stats.stress.icon>><</hovertip>>
<strong><span style="color:slategray">$cur_slave.cur_stress</span></strong>\
</div>\
</div>\
<div class="traitbox-slaveinfo-assignjob">\
<u>Traits</u>
<<for _t = 0; _t < $cur_slave.traits.length; _t++>>\
<<print '<span style="color:'+$cur_slave.traits[_t].color+'"><<hovertip "$cur_slave.traits[_t].tooltip">>$cur_slave.traits[_t].name<</hovertip>></span>'>><<if _t + 1 < $cur_slave.traits.length>>, <</if>>\
<</for>>\
</div>\
</div>\
</div>\
<div class="sidebutton-assignjob">\
</div>\
</div>\
<div class="jobinfo-assignjob">\
<<for _i = _start_pos; _i < _end_pos; _i++>>\
<<set _hotKey to (_i % 8) + 1>>\
<<set _shiftKey to "shift"+_hotKey>>\
<<if _slaveJobList[_i].type === "Service">>\
<<set _serviceBool to false>>\
<<set _serviceBoolIndex to "">>\
<<for _z = 0; _z < _serviceJobList.length; _z++>>\
<<if _slaveJobList[_i].name === _serviceJobList[_z].name && $cur_slave.index !== _serviceJobList[_z].index>>\
<<set _serviceBool to true>>\
<<set _serviceBoolIndex to _serviceJobList[_z].index>>\
<<break>>\
<</if>>\
<</for>>\
<</if>>\
<div class="cardholder-jobinfo-assignjob">\
<div class="card-jobinfo-assignjob">\
<div class="title-jobinfo-assignjob">\
<<capture _i>>\
_slaveJobList[_i].name <<button "[img[images/icons/desc_icon.png]]" "Job Description">><<set $cur_job to _slaveJobList[_i]>><</button>>
<</capture>>
</div>\
<div class="text-jobinfo-assignjob">\
Type: _slaveJobList[_i].type
</div>\
<div class="icon-jobinfo-assignjob">\
<<for _z = 0; _z < _slaveJobList[_i].stats_used.length; _z++>>\
<<set _lowerCase to _slaveJobList[_i].stats_used[_z].toLowerCase()>>\
<<hovertip "_slaveJobList[_i].stats_used[_z] Required: _slaveJobList[_i].unlock_req[_lowerCase]">><<- setup.slave_stats[_lowerCase].icon>><</hovertip>>\
<</for>>\
</div>\
<div class="button-jobinfo-assignjob">\
<<if $cur_slave.love < _slaveJobList[_i].unlock_req.love || $cur_slave.libido < _slaveJobList[_i].unlock_req.libido || $cur_slave.strength < _slaveJobList[_i].unlock_req.strength || $cur_slave.intelligence < _slaveJobList[_i].unlock_req.intelligence>>\
<span class="offbutton"><<hovertip "Doesn't Meet Requirements">><<button "Assign Job">><</button>><</hovertip>></span>
<<elseif ($cur_slave.trait_names.includes("Loathing") && _slaveJobList[_i].type === "Service") || ($cur_slave.trait_names.includes("Traumatized") && _slaveJobList[_i].type === "Prostitution") || ($cur_slave.trait_names.includes("Clingy") && _slaveJobList[_i].type != "Service") || ($cur_slave.trait_names.includes("Slutty") && _slaveJobList[_i].type != "Prostitution")>>\
<span class="offbutton"><<hovertip "Cannot be Assigned">><<button "Assign Job">><</button>><</hovertip>></span>
<<else>>\
<<capture _i, _hotKey, _shiftKey, _serviceBoolIndex>>\
<span @id="_hotKey">\
<<if _slaveJobList[_i].type === "Service">>\
<<if _serviceBool === true>>\
<<button "Assign ^^_hotKey^^" "Service Bool Passage">><<set $cur_slave.job to clone(_slaveJobList[_i])>><<set $job to "job">><<set $serviceIndex to _serviceBoolIndex>><</button>>\
<<else>>\
<<button "Assign ^^_hotKey^^" "Choose Service Type">><<set $cur_slave.job to clone(_slaveJobList[_i])>><<set $job to "job">><</button>>\
<</if>>\
<<elseif _slaveJobList[_i].type === "Prostitution">>\
<<button "Assign ^^_hotKey^^" "Choose Prostitution Type">><<set $cur_slave.job to clone(_slaveJobList[_i])>><<set $job to "job">><</button>>\
<<elseif _slaveJobList[_i].type === "Caretaker">>\
<<button "Assign ^^_hotKey^^" "Choose Creature Room">><<set $cur_slave.job to clone(_slaveJobList[_i])>><<set $job to "job">><</button>>\
<<elseif _slaveJobList[_i].type === "Maintenance">>\
<<button "Assign ^^_hotKey^^" "Choose Trap Room">><<set $cur_slave.job to clone(_slaveJobList[_i])>><<set $job to "job">><</button>>\
<</if>>\
</span>\
<<if $pc_blessing_list.includes("Conviction of Loyalty")>>\
<span @id="_shiftKey">\
<<if $cur_slave.job === "">>\
<span class="offbutton"><<hovertip "Assign Main Job first">><<button "Side Job">><</button>><</hovertip>></span>
<<elseif $cur_slave.job.name === _slaveJobList[_i].name>>\
<span class="offbutton"><<hovertip "Assigned as Main Job">><<button "Side Job">><</button>><</hovertip>></span>
<<elseif $cur_slave.love < _slaveJobList[_i].unlock_req.love || $cur_slave.libido < _slaveJobList[_i].unlock_req.libido || $cur_slave.strength < _slaveJobList[_i].unlock_req.strength || $cur_slave.intelligence < _slaveJobList[_i].unlock_req.intelligence>>\
<span class="offbutton"><<hovertip "Doesn't Meet Requirements">><<button "Assign Job">><</button>><</hovertip>></span>
<<elseif ($cur_slave.trait_names.includes("Loathing") && _slaveJobList[_i].type === "Service") || ($cur_slave.trait_names.includes("Traumatized") && _slaveJobList[_i].type === "Prostitution") || ($cur_slave.trait_names.includes("Clingy") && _slaveJobList[_i].type != "Service") || ($cur_slave.trait_names.includes("Slutty") && _slaveJobList[_i].type != "Prostitution")>>\
<span class="offbutton"><<hovertip "Cannot be Assigned">><<button "Assign Job">><</button>><</hovertip>></span>
<<else>>\
<<if _slaveJobList[_i].type === "Service">>\
<<if _serviceBool === true>>\
<<button "Assign ^^_hotKey^^" "Service Bool Passage">><<set $cur_slave.job to clone(_slaveJobList[_i])>><<set $job to "side_job">><<set $serviceIndex to _serviceBoolIndex>><</button>>\
<<else>>\
<<button "Assign ^^_hotKey^^" "Choose Service Type">><<set $cur_slave.job to clone(_slaveJobList[_i])>><<set $job to "side_job">><</button>>\
<</if>>\
<<elseif _slaveJobList[_i].type === "Prostitution">>\
<<button "Side Job ^^[_hotKey]^^" "Choose Prostitution Type">><<set $cur_slave.side_job to clone(_slaveJobList[_i])>><<set $job to "side_job">><</button>>\
<<elseif _slaveJobList[_i].type === "Caretaker">>\
<<button "Side Job ^^[_hotKey]^^" "Choose Creature Room">><<set $cur_slave.side_job to clone(_slaveJobList[_i])>><<set $job to "side_job">><</button>>\
<<elseif _slaveJobList[_i].type === "Maintenance">>\
<<button "Side Job ^^[_hotKey]^^" "Choose Trap Room">><<set $cur_slave.side_job to clone(_slaveJobList[_i])>><<set $job to "side_job">><</button>>\
<</if>>\
<</if>>\
</span>\
<</if>>\
<</capture>>\
<</if>>\
</div>\
</div>\
</div>\
<</for>>\
</div>\
<div class="buttons-assignjob">\
<div class="box-buttons-assignjob">\
<<if $job_page > 0>>\
<span id="left"><<button [[Previous Page|Assign Slave Job]]>><<set $job_page-->><</button>></span>
<<else>>\
<div class="offbutton">\
<<button "Previous Page">><</button>>
</div>\
<</if>>\
</div>\
<div class="box-buttons-assignjob">\
<<if $filter_jobs === true>>\
<div class="transparent-button">\
<span id="a"><<button "<u>A</u>ll Jobs" "Assign Slave Job">><<set $filter_jobs to false>><</button>></span>
</div>\
<<else>>\
<span id="a"><<button "<u>A</u>ll Jobs" "Assign Slave Job">><<set $filter_jobs to true>><</button>></span>
<</if>>\
</div>\
<div class="box-buttons-assignjob">\
<<if _slaveJobList.length > _end_pos>>\
<span id="right"><<button [[Next Page|Assign Slave Job]]>><<set $job_page++>><</button>></span>
<<else>>\
<div class="offbutton">\
<<button "Next Page">><</button>>
</div>\
<</if>>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Slave Room]]>><<unset $job_page, $filter_jobs>><</button>></span>
</div>\
</div>\
<</if>>\
<<silently>>\
* Variables *
* Set List *
<<set _list to $cur_slave.slave_pack.service_positions.concat($cur_slave.slave_pack.sex_positions)>>
ALPHABETIZE
<<set _list.sort(function (a, b) {
var
nameA = a.toUpperCase(),
nameB = b.toUpperCase();
if (nameA < nameB) {
return -1;
}
else if (nameA > nameB) {
return 1;
}
return 0;
});>>
<<if $cur_slave.last_sex_type != "">>
<<set $discipline_sex to $cur_slave.last_sex_type>>
<<else>>
<<set $discipline_sex to $last_sex_type>>
<</if>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Discipline $cur_slave.name
</div>\
<div class="listbox-sexlist">\
<<listbox "$discipline_sex" autoselect>>\
<<optionsfrom _list>>
<</listbox>>\
<span id="forward"><<button [[Confirm|Discipline Sex]]>><</button>></span>
</div>\
<div class="picbox-sexlist">\
$cur_slave.body_pic
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Slave Room]]>><<unset $discipline_sex>><</button>></span>
</div>\
</div>\<<silently>>\
* Variables *
* Find Slave Working Job *
<<for _s = 0; _s < $slave_room_list.length; _s++>>
<<if $slave_room_list[_s].index === $cur_job.slave_index>>
<<set $cur_slave to $slave_room_list[_s]>>
<<break>>
<</if>>
<</for>>
<<SlaveSetup $cur_slave>>
* Obedience Check *
<<SlaveObedienceCheck $cur_slave $cur_job.base_obedience_check>>
PASSIONATE SERVICE BLESSING
<<if $pc_blessing_list.includes("Passionate Service") && $cur_slave.love >= setup.blessing_04_8.love_req && _obedience_result < 1>>
TRIGGERED
<<set _obedience_result to 1>>
<</if>>
* Player EXP Earned *
SET BASE EXP GAINED
<<set _exp_gained to random($cur_job.base_min_exp, $cur_job.base_max_exp)>>
BASE EXP: _exp_gained
ADD SLAVE BONUS
LOVE
<<set _loveBonus to $cur_slave.love.clamp(1, $cur_job.stat_cap) * $cur_job.love_mod * setup.obedienceCheckOutcome[_obedience_result]>>
_loveBonus
LIBIDO
<<set _libidoBonus to $cur_slave.libido.clamp(1, $cur_job.stat_cap) * $cur_job.libido_mod * setup.obedienceCheckOutcome[_obedience_result]>>
_libidoBonus
SEX SKILL
<<set _sexBonus to $cur_slave[$cur_job.service_sex].clamp(1, $cur_job.stat_cap) * $cur_job.sexskill_mod * setup.obedienceCheckOutcome[_obedience_result]>>
_sexBonus
ADD TOTAL, ROUND
<<set _exp_gained += Math.round(_loveBonus + _libidoBonus + _sexBonus)>>
Slave Bonus: _exp_gained
GODDESS'S DEVOTION
<<set _blessing to $pc_blessing_list.delete("Goddess's Devotion I", "Goddess's Devotion II", "Goddess's Devotion III", "Goddess's Devotion IV", "Goddess's Devotion V")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.devotion.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.devotion[_z].name)>>
<<set _exp_gained += (Math.round(_exp_gained * setup.allBlessingList.devotion[_z].float)).clamp(1, 1000000)>>
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
POSITIVE TRAITS
CARING
<<if $cur_slave.trait_names.includes("Caring")>>
TRIGGERED
<<set _exp_gained += Math.round(_exp_gained * setup.caring.float)>>
<</if>>
LOVER
<<if $cur_slave.trait_names.includes("Lover")>>
TRIGGERED
<<set _exp_gained *= setup.lover.mult>>
<</if>>
CLINGY
<<if $cur_slave.trait_names.includes("Clingy")>>
TRIGGERED
<<set _exp_gained += Math.round(_exp_gained * setup.clingy.exp_float)>>
<</if>>
NEGATIVE TRAITS
RUDE
<<if $cur_slave.trait_names.includes("Rude")>>
TRIGGERED
<<set _exp_gained -= Math.round(_exp_gained * setup.rude.float)>>
<</if>>
PASSIONATE SERVICE BLESSING
<<if $pc_blessing_list.includes("Passionate Service") && $cur_slave.love >= setup.blessing_04_8.love_req>>
TRIGGERED
<<set _exp_gained += (Math.round(_exp_gained * setup.blessing_04_8.float)).clamp(1, 1000000)>>
<</if>>
<<PCLevelUp _exp_gained>>
* Love Stat Gained *
<<set _slave_exp to clone($cur_job.love_exp)>>
<<SlaveLoveGrowth $cur_slave _slave_exp>>
* Obedience Stat Gained *
<<set _slave_exp to clone($cur_job.obedience_exp)>>
<<SlaveObedienceGrowth $cur_slave _slave_exp>>
* Libido Stat Gained *
<<set _slave_exp to clone($cur_job.libido_exp)>>
<<SlaveLibidoGrowth $cur_slave _slave_exp>>
* Sex Skill Gained *
<<set _slave_exp to clone($cur_job.sexskill_exp)>>
<<SexSkillGrowth $cur_slave _slave_exp $cur_job.service_sex>>
* Stress Increase *
SET BASE AMOUNT
<<set _stress_amount to random($cur_job.min_stress, $cur_job.max_stress)>>
CONVICTION OF LOYALTY
<<if $cur_slave.job != "" && $cur_slave.side_job != "" && $pc_blessing_list.includes("Conviction of Loyalty")>>
REDUCE STRESS
<<set _stress_amount -= Math.round(_stress_amount * setup.blessing_07_12.float)>>
<</if>>
<<SlaveStressCalc $cur_slave _stress_amount "Gained">>
* Supportive Trait *
<<if $cur_slave.trait_names.includes("Supportive")>>
<<set $pc_cur_mana += setup.supportive.int>>
<<set _slave_triggers.trait.supportive += setup.supportive.int>>
<</if>>
* Motherly Job *
<<if $cur_job.name === setup.motherly_service_job.name>>
<<set _slave_triggers.trait.motherly += setup.motherly.energy_int>>
<<set $pc_energy_extra += setup.motherly.energy_int>>
<</if>>
* Essence Tribute Blessing *
<<if $pc_blessing_list.includes("Essence Tribute") && $cur_slave.love >= setup.blessing_08_11.love_req>>
<<set _rng to random(1, 100)>> RNG: _rng
<<if setup.blessing_08_11.percent >= _rng>>
GAIN @@.le;ONE LUST ESSENCE@@
<<set $pc_lust += setup.blessing_08_11.int>>
<<set $pc_lust_gained += setup.blessing_08_11.int>>
<<set _slave_triggers.earned.le += setup.blessing_08_11.int>>
<</if>>
<</if>>
* Update Stats *
PLAYER STATS
<<set $pc_sex_stats[$cur_job.service_sex]++>>
<<set $pc_sex_stats.total++>>
CURRENT SLAVE STATS
<<set $cur_slave.total_jobs++>>
<<set $cur_slave.total_exp += _exp_gained>>
ALL SLAVE STATS
<<set $slaves_sex_stats[$cur_job.service_sex]++>>
<<set $slaves_sex_stats.total++>>
<<set $slaves_task_stats[$cur_job.type.toLowerCase()]++>>
<<set $slaves_exp_given += _exp_gained>>
* Assign Picture *
<<set _pic to $cur_slave.slave_pack[$cur_job.service_sex].random()>>
* Virginity Check *
<<SlaveVirginCheck $cur_slave $cur_job.service_sex $cur_job.type>>
* Create Report *
<<if $cur_job.service_sex === "blowjob" || $cur_job.service_sex === "handjob" || $cur_job.service_sex === "titjob" || $cur_job.service_sex === "footjob">>
<<set _outcome to "She gave you a " + $cur_job.service_sex + " during her " + $cur_job.name + " Job">>
<<elseif $cur_job.service_sex === "missionary">>
<<set _outcome to "She accepted your dick during her " + $cur_job.name + " Job">>
<<elseif $cur_job.service_sex === "cowgirl">>
<<set _outcome to "She rode your cock during her " + $cur_job.name + " Job">>
<<elseif $cur_job.service_sex === "doggy">>
<<set _outcome to "She took your cock on all fours during her " + $cur_job.name + " Job">>
<<elseif $cur_job.service_sex === "anal">>
<<set _outcome to "Her ass was penetrated by your dick during her " + $cur_job.name + " Job">>
<</if>>
REWARD TEXT
<<set _reward_text to []>>
<<if _exp_gained > 0>>
<<if _reward_text.length === 0>>
<<set _reward_text.push(", granting you "+_exp_gained+" EXP")>>
<<else>>
<<set _reward_text.push(" "+_exp_gained+" EXP")>>
<</if>>
<</if>>
<<if _slave_triggers.trait.supportive > 0>>
<<if _reward_text.length === 0>>
<<set _reward_text.push(", granting you @@.mana;"+_slave_triggers.trait.supportive+" Mana@@")>>
<<else>>
<<set _reward_text.push(" @@.mana;"+_slave_triggers.trait.supportive+" Mana@@")>>
<</if>>
<</if>>
<<if _slave_triggers.earned.le > 0>>
<<if _reward_text.length === 0>>
<<set _reward_text.push(", granting you @@.le;"+_slave_triggers.earned.le+" Lust Essence@@")>>
<<else>>
<<set _reward_text.push(" @@.le;"+_slave_triggers.earned.le+" Lust Essence@@")>>
<</if>>
<</if>>
<<if _slave_triggers.trait.motherly > 0>>
<<if _reward_text.length === 0>>
<<set _reward_text.push(", granting you @@.energy;"+_slave_triggers.trait.motherly+"@@ additional @@.energy;Energy@@ tomorrow")>>
<<else>>
<<set _reward_text.push(" @@.energy;"+_slave_triggers.trait.motherly+"@@ additional @@.energy;Energy@@ tomorrow")>>
<</if>>
<</if>>
ADD REWARD TEXT TO OUTCOME
<<if _reward_text.length === 1>>
<<set _outcome += _reward_text + ".">>
<<elseif _reward_text.length === 2>>
<<set _last_text to _reward_text.pop()>>
<<set _outcome += _reward_text + " and" + _last_text + ".">>
<<elseif _reward_text.length > 2>>
<<set _last_text to _reward_text.pop()>>
<<set _outcome += _reward_text + ", and" + _last_text + ".">>
<</if>>
OBEDIENCE CHECK RESULT
<<if _obedience_result === 0>>
<<set _outcome += " Her service was poor.">>
<<else>>
<<set _outcome += " Her service was excellent.">>
<</if>>
CAN'T GAIN EXP
<<if _exp_gained <= 0>>
<<set _outcome += " You reached the max level, preventing you from earning EXP.">>
<</if>>
UPDATE REPORT
<<if $cur_slave.side_job.name === $cur_job.name>>
<<set $cur_slave.report.stress_gained += _slave_triggers.general.stress_gained>>
<<set $cur_slave.report.side_outcome to _outcome>>
<<else>>
<<set $cur_slave.report.type to "Service">>
<<set $cur_slave.report.job_type to $cur_job.job_type>>
<<set $cur_slave.report.stress_gained += _slave_triggers.general.stress_gained>>
<<set $cur_slave.report.outcome to _outcome>>
<</if>>
<<UpdateSlaveReport $cur_slave>>
* Update Job List *
<<if ($cur_slave.disobedient === true || $cur_slave.injured === true) && $cur_slave.side_job != "">>
<<RemoveSlaveJob $cur_job.slave_index>>
<</if>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
$cur_job.name
</div>\
<div class="imagebox">\
_pic
</div>\
<div class="textbox">\
<li>_outcome</li>\
<<if _levelup_trigger === true>>\
<li>You gained _times_leveledup <<if _times_leveledup === 1>>level<<else>>levels<</if>><<if $pc_level === $pc_levelcap>> and have reached the max level in this Rank<</if>>.</li>\
<</if>>\
<<SlaveText $cur_slave>>
</div>\
<<silently>>\
* Set Next Link *
<<if $cur_slave_jobs.length > 0>>
<<set $next_job to $cur_slave_jobs.pluck()>>
<<set $link to $next_job.passage>>
<<elseif $cur_job.name === "Morning Gratitude">>
<<set $link to "Main Menu">>
<<else>>
<<set $link to "Raiding Party">>
<</if>>
<</silently>>\
<div class="exit-link-right">\
<<if $link === "Raiding Party">>\
<span id="forward"><<button [[Begin Raid|$link]]>><<unset $link, $cur_slave, $cur_job, $next_job>><</button>></span>
<<elseif $link === "Main Menu">>
<span id="forward"><<button [[Start Day|$link]]>><<unset $link, $cur_slave, $cur_job, $next_job>><</button>></span>
<<else>>\
<span id="forward"><<button [[Next Job|$link]]>><<set $cur_job to $next_job>><<unset $link, $cur_slave>><</button>></span>
<</if>>\
</div>\
</div>\<div class="section">\
<div class="description-assignjob">\
<div class="title-description-assignjob">\
$cur_job.name
</div>\
<div class="subtitle-description-assignjob">\
Job Type: $cur_job.type
</div>\
<div class="body-description-assignjob">\
$cur_job.description
</div>\
<div class="link-description-assignjob">\
<span id="back"><<button "Back" `previous()`>><</button>></span>
</div>\
</div>\
</div>\<<silently>>\
<<set _dupArray to []>>
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if _dupArray.includes($dungeon_floor_list[_z].name) && $dungeon_floor_list[_z].name !== "Empty Room">>
<<print "<<script>>console.log('DUP FOUND:"+$dungeon_floor_list[_z].name+"')<</script>>">>
<<script>>Save.autosave.save("Dup Error")<</script>>
<<else>>
<<set _dupArray.push($dungeon_floor_list[_z].name)>>
<</if>>
<</for>>
<<if $previous_bool == null>>
<<set $previous_bool to false>>
<</if>>
<<if $first_time_check_report === false && $previous_bool === false>> prevents multiple triggers of gaining or losing threat or rep.
<<set $first_time_check_report to true>>
<<unset $slave_list_page>> unset slave page from captured list
*Variables*
<<set _game_over_bool to false>> set to true if game over has occurred
<<set _dungeon_king_bool to false>> set to true if dungeon king blessing triggers
<<set _perfect_mult to 0.05>> amount to mult rep gained from captured raiders if no raiders cleared dungeon
<<set _perfect_base to 20>> base amount gained when no raiders cleared dungeon
<<set $rep_released_amount to 0>>
<<set $rep_fucked_amount to 0>>
<<set $rep_abandoned_amount to 0>>
<<set $rep_cleared_amount to 0>>
<<set $rep_idol_amount to 0>>
<<set $rep_prized_amount to 0>>
<<set $threat_released_amount to 0>>
<<set $threat_fucked_amount to 0>>
<<set $threat_cleared_amount to 0>>
<<set $threat_medallion_amount to 0>>
<<set $gleaming_interest_amount to 0>>
<<set $gleaming_interest_percent to 0>> shows percent of interest
<<set _update_pic_num to 10>> updates slaves face and body pic ever this many days
* Display Popup *
<<set _display_popup to false>>
<<script>>
Dialog.setup("Slave Updates");
<</script>>
<<for _i = 0; _i < $slave_room_list.length; _i++>>
<<if $slave_room_list[_i].room_type === "Slave">>
<<capture _i, _slave_triggers>>
<<if ($slave_room_list[_i].report.type === "Quest" || $slave_room_list[_i].report.type === "Class") && $slave_room_list[_i].report.complete === true>>
<<set _display_popup to true>>
<<if $slave_room_list[_i].report.type === "Quest">>
<<BasicQuest $slave_room_list[_i] $slave_room_list[_i].quest>>
<<elseif $slave_room_list[_i].report.type === "Class">>
<<BasicClass $slave_room_list[_i] $slave_room_list[_i].class>>
<</if>>
<<script>>
Dialog.wiki(Story.get("Quest/Class Popup Passage").processText());
<</script>>
<</if>>
<</capture>>
<</if>>
<</for>>
*Update Stats*
ABANDONED RAIDERS
<<for _z = 0; _z < $abandoned_girl_list.length; _z++>>
<<set _class to $abandoned_girl_list[_z].class.toLowerCase()>>
<<set $raider_abandoned_stats[_class]++>>
<<set $raider_abandoned_stats.total++>>
<</for>>
* Motherly Trait *
<<for _i = 0; _i < $slave_room_list.length; _i++>>
<<if $slave_room_list[_i].room_type === "Slave">>
<<if $slave_room_list[_i].job !== "" && $slave_room_list[_i].dayoff_bool === false && $slave_room_list[_i].injured === false && $slave_room_list[_i].disobedient === false && $slave_room_list[_i].quest === "" && $slave_room_list[_i].class === "">>
<<if $slave_room_list[_i].job.name === setup.motherly_service_job.name>>
FOUND MOTHERLY WORKING SLAVE
<<MotherlyJob $slave_room_list[_i]>>
<<break>>
<</if>>
<</if>>
<</if>>
<</for>>
* Disruptive Slave Check *
<<set _disruptive_index_list to []>> list of slave's who are being disruptive
<<for _i = 0; _i < $slave_room_list.length; _i++>>
<<if $slave_room_list[_i].room_type === "Slave">>
<<if $slave_room_list[_i].disobedient === true && $slave_room_list[_i].trait_names.includes("Disruptive") && $enslaved_index !== _i>>
<<set _disruptive_index_list.push(clone(_i))>>
PUSHED $slave_room_list[_i].name
<</if>>
<</if>>
<</for>>
* Conviction of Conformity *
<<if $pc_blessing_list.includes("Conviction of Conformity")>>
<<for _i = 0; _i < $slave_room_list.length; _i++>>
<<if $slave_room_list[_i].room_type === "Slave">>
<<if $slave_room_list[_i].obedience >= setup.blessing_09_12.obedience_req && $slave_room_list[_i].injured === false && $slave_room_list[_i].disobedient === false && $slave_room_list[_i].quest_cd === 0 && $slave_room_list[_i].class_cd === 0 && $slave_room_list[_i].dayoff_bool === false>>
<<SlaveConformity $slave_room_list[_i]>>
<</if>>
<</if>>
<</for>>
<</if>>
* End of Day Slave Effects *
<<for _i = 0; _i < $slave_room_list.length; _i++>>
<<if $slave_room_list[_i].room_type === "Slave">>
SETUP SLAVE
<<SlaveSetup $slave_room_list[_i]>>
INCREASE DAYS OWNED
<<set $slave_room_list[_i].total_days++>>
/*
CHANGE BODY AND FACE PIC AFTER 10 DAYS
<<if $slave_room_list[_i].total_days % _update_pic_num === 0>>
<<set $slave_room_list[_i].body_pic to $slave_room_list[_i].slave_pack.slave.random()>>
<</if>>
EDITED OUT BECAUSE NOBODY LIKED IT
*/
RESET TRAINING AND DISCIPLINE COUNT
<<set $slave_room_list[_i].training_count to 0>>
<<set $slave_room_list[_i].discipline_count to 0>>
SLAVES NOT ON QUEST OR CLASS REDUCE STRESS & GAIN LOVE & REDUCE INJURY
<<if $slave_room_list[_i].quest_cd === 0 && $slave_room_list[_i].class_cd === 0 && _i !== $enslaved_index>>
* Daily Love EXP *
<<set _love_exp to Math.round($slave_room_list[_i].love * $daily_love_growth) + $daily_love_exp>>
STARTING LOVE EXP IS _love_exp
LOVE STAT MODIFIERS
ONSEN BUILT
<<if $onsen.built === true>>
<<set _love_exp += _love_exp * $onsen.float>>
<</if>>
INJURED OR DISOBEDIENT SLAVES PREVENT LOVE GAINED
<<if $slave_room_list[_i].injured === true || $slave_room_list[_i].disobedient === true>>
<<set _love_exp to 0>>
<</if>>
* Daily Stress Reduced *
<<set _stress_reduced to clone($daily_stress_lost)>>
NO ASSIGNMENT
<<if $slave_room_list[_i].report.type === "Nothing">>
<<set $slave_room_list[_i].dayoff_bool to true>>
<</if>>
BASE STRESS _stress_reduced
INJURED REDUCES STRESS LOST
<<if $slave_room_list[_i].injured === true>>
<<set _stress_reduced to Math.round(_stress_reduced * 0.5)>>
<</if>>
ONSEN BUILT
<<if $onsen.built === true>>
<<set _stress_reduced += Math.trunc(_stress_reduced * $onsen.float) + 1>>
ONSEN INCREASED STRESS REDUCED TO _stress_reduced
<</if>>
SET TO STRESS REDUCED TO 0 FOR ENSLAVED
<<if _i === $enslaved_index>>
<<set _stress_reduced to 0>>
<</if>>
DISRUPTIVE SLAVES
<<for _z = 0; _z < _disruptive_index_list.length; _z++>>
<<if _i !== _disruptive_index_list[_z]>>
<<set _stress_reduced -= Math.round(setup.disruptive.float * _stress_reduced)>>
$slave_room_list[_i].name REDUCED LESS STRESS FROM BECAUSE OF ANOTHER SLAVE
<<elseif _i === _disruptive_index_list[_z]>>
<<set _slave_triggers.trait.disruptive_trig to true>>
$slave_room_list[_i].name IS DISRUPTIVE
<</if>>
<</for>>
* VOLUNTARY SUBMISSION *
<<if $pc_blessing_list.includes("Voluntary Submission") && $slave_room_list[_i].disobedient != true>>
<<set _obedience_exp to Math.round($slave_room_list[_i].obedience * setup.blessing_09_5.mod) + setup.blessing_09_5.exp>>
<<SlaveObedienceGrowth $slave_room_list[_i] _obedience_exp>>
<</if>>
* Calc Stress and Love *
CALC STRESS REDUCED
<<if _stress_reduced > 0>>
<<SlaveStressCalc $slave_room_list[_i] _stress_reduced "Reduced">>
<</if>>
CALC LOVE STAT
<<if _love_exp > 0>>
<<SlaveLoveGrowth $slave_room_list[_i] _love_exp>>
<</if>>
* Injured Slave CD *
<<if $slave_room_list[_i].injured === true && $slave_room_list[_i].injured_cd <= 0>>
<<set $slave_room_list[_i].injured to false>>
<<set $slave_room_list[_i].injured_cd to 0>>
<<set $slave_room_list[_i].report.end_of_day.injury_cured to true>>
<</if>>
* Update Report *
<<UpdateSlaveEOD $slave_room_list[_i]>>
<<if $slave_room_list[_i].report.end_of_day.injury_cured === true && $slave_room_list[_i].report.end_of_day.disobedient_cured === true>>
<<set _display_popup to true>>
<<set _title to "Recovered Fully">>
<<set _outcome to "After resting, she has recovered from her Injury and has become Obedient.">>
<<capture _i, _title, _outcome>>
<<script>>
Dialog.wiki(Story.get("Popup Passage").processText());
<</script>>
<</capture>>
<<elseif $slave_room_list[_i].report.end_of_day.injury_cured === true>>
<<set _display_popup to true>>
<<set _title to "Healed Injury">>
<<set _outcome to "After resting, she has recovered from her Injury.">>
<<capture _i, _title, _outcome>>
<<script>>
Dialog.wiki(Story.get("Popup Passage").processText());
<</script>>
<</capture>>
<<elseif $slave_room_list[_i].report.end_of_day.disobedient_cured === true>>
<<set _display_popup to true>>
<<set _title to "Restored Mental">>
<<set _outcome to "After resting, she has become Obedient.">>
<<capture _i, _title, _outcome>>
<<script>>
Dialog.wiki(Story.get("Popup Passage").processText());
<</script>>
<</capture>>
<<elseif $slave_room_list[_i].report.end_of_day.sneaky_treasure !== "">>
<<set _display_popup to true>>
<<set _title to "Picking Pockets">>
<<set _outcome to clone($slave_room_list[_i].report.outcome)>>
<<capture _i, _title, _outcome>>
<<script>>
Dialog.wiki(Story.get("Popup Passage").processText());
<</script>>
<</capture>>
<<elseif $slave_room_list[_i].report.end_of_day.disruptive_trig === true>>
<<set _display_popup to true>>
<<set _title to "Mental Breakdown">>
<<set _outcome to "She is Disobedient and disrupted your other Slaves, reducing the amount of @@.stress;Stress@@ they recovered.">>
<<capture _i, _title, _outcome>>
<<script>>
Dialog.wiki(Story.get("Popup Passage").processText());
<</script>>
<</capture>>
<</if>>
<<if $slave_room_list[_i].report.conformity_slave !== "">>
<<set _display_popup to true>>
<<set _title to "Learning Experience">>
<<set _outcome to clone($slave_room_list[_i].report.conformity_exp.text)>>
<<capture _i, _title, _outcome>>
<<script>>
Dialog.wiki(Story.get("Popup Passage").processText());
<</script>>
<</capture>>
<</if>>
<<if $slave_room_list[_i].report.motherly.trig === true>>
<<set _display_popup to true>>
<<set _title to "Motherly Care">>
<<set _outcome to clone($slave_room_list[_i].report.motherly.text)>>
<<capture _i, _title, _outcome>>
<<script>>
Dialog.wiki(Story.get("Popup Passage").processText());
<</script>>
<</capture>>
<</if>>
<</if>>
<</if>>
<</for>>
* Raid Gold *
<<set $pc_gold += $gold_earned>>
* Hoarding Lord *
<<set $hoarding_lord_gold to 0>>
<<if $pc_blessing_list.includes("Hoarding Lord") && $gold_earned > 0>>
<<set $hoarding_lord_gold += (Math.trunc($gold_earned * setup.blessing_00_3.float)).clamp(0, 1000000)>>
<<set $pc_gold += $hoarding_lord_gold>>
<</if>>
* Slave Quest Gold *
<<set $pc_gold += $slave_quest_gold>>
*Upkeep Costs*
<<set $creature_upkeep to 0>>
<<set $trap_upkeep to 0>>
<<set $slave_upkeep to 0>>
<<set $creature_keeper_cost to 0>>
CREATURE AND TRAP UPKEEPS
<<for _i = 0; _i < $dungeon_floor_list.length; _i++>>
<<if $dungeon_floor_list[_i].room_type != "Empty">>\
<<if $dungeon_floor_list[_i].room_type === "Creature">>
<<set $creature_upkeep += $dungeon_floor_list[_i].upkeep>>
<<elseif $dungeon_floor_list[_i].room_type === "Trap">>
<<set $trap_upkeep += $dungeon_floor_list[_i].upkeep>>
<</if>>
<</if>>
<</for>>
SLAVE UPKEEPS
<<for _i = 0; _i < $slave_room_list.length; _i++>>
<<if $slave_room_list[_i].room_type === "Slave">>
<<set _upkeep to clone($slave_room_list[_i].upkeep)>>
DONT PAY UPKEEP FOR NEWLY ENSLAVED OR IF THEY ARE ON QUEST OR IN A CLASS
<<if $enslaved_index !== _i && $slave_room_list[_i].quest_cd === 0 && $slave_room_list[_i].class_cd === 0>>
PAY UPKEEP
<<set $slave_upkeep += _upkeep>>
<</if>>
<</if>>
<</for>>
CREATURE KEEPER COST
<<for _i = 0; _i < $keeper_list.length; _i++>>
<<if $keeper_list[_i].room_type === "Creature">>
<<set $creature_keeper_cost += $keeper_list[_i].upkeep + $keeper_room_cost>>
<</if>>
<</for>>
<<set $pc_gold -= $creature_upkeep + $trap_upkeep + $slave_upkeep>>
<<set $pc_upkeep_gold_spent += $creature_upkeep + $trap_upkeep + $slave_upkeep>>
GLEAMING INTEREST
<<set _blessing to clone($pc_blessing_list.delete("Gleaming Interest I", "Gleaming Interest II", "Gleaming Interest III"))>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.gift.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.gift[_z].name)>>
INTEREST
<<set _amount to Math.trunc($pc_gold * setup.allBlessingList.gift[_z].float)>>
ADD AMOUNT
<<if _amount > 0>>
<<set $gleaming_interest_amount to clone(_amount)>>
<<set $pc_gold += clone(_amount)>>
<<set $gleaming_interest_percent to setup.allBlessingList.gift[_z].float * 100>>
<</if>>
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
END LOOP
<<break>>
<</if>>
<</for>>
<</if>>
*Calc Rep gained from Capturing Raiders*
ADDING ALL REP GAINED SO FAR
RELEASED
<<for _i = 0; _i < $released_girl_list.length; _i++>>
<<set _amount to (($released_girl_list[_i].reputation + (setup.captured_rep_constant * _i)) * $diffRepMod) * setup.repModifier[$dungeon_rank]>> REP: _amount
<<set $rep_net_gained += clone(_amount)>>
<<set $rep_released_amount += clone(_amount)>>
<</for>>
<<set $rep_net_gained to Math.trunc($rep_net_gained)>>
<<set $rep_released_amount to Math.trunc($rep_released_amount)>>
CUR REP GAINED: $rep_net_gained
<<set _count to clone(_i)>> count adds addition raiders from released list to fucked list for the rep constant tracker
FUCKED
<<for _i = 0; _i < $used_girl_list.length; _i++>>
<<set _amount to ((($used_girl_list[_i].reputation * setup.rep_sex_penalty).clamp(1, 1000000) + (setup.captured_rep_constant * (_i + _count))) * $diffRepMod) * setup.repModifier[$dungeon_rank]>> REP: _amount
<<set $rep_net_gained += clone(_amount)>>
<<set $rep_fucked_amount += clone(_amount)>>
<</for>>
<<set $rep_net_gained to Math.trunc($rep_net_gained)>>
<<set $rep_fucked_amount to Math.trunc($rep_fucked_amount)>>
CUR REP GAINED: $rep_net_gained
ABANDONED
<<for _i = 0; _i < $abandoned_girl_list.length; _i++>>
<<set _amount to ((($abandoned_girl_list[_i].reputation * setup.abandoned_rep_mod).clamp(1, 1000000) + (setup.abandoned_rep_constant * _i)) * $diffRepMod) * setup.repModifier[$dungeon_rank]>> REP: _amount
<<set $rep_net_gained += clone(_amount)>>
<<set $rep_abandoned_amount += clone(_amount)>>
<</for>>
<<set $rep_net_gained to Math.trunc($rep_net_gained)>>
<<set $rep_abandoned_amount to Math.trunc($rep_abandoned_amount)>>
CUR REP GAINED: $rep_net_gained
PRIZED SLAVES
<<for _i = 0; _i < $slave_room_list.length; _i++>>
<<if $slave_room_list[_i].room_type === "Slave">>
<<if $slave_room_list[_i].trait_names.includes("Prized") && $slave_room_list[_i].index != $enslaved_girl.index>>
PRIZED AMOUNT IS RANDOM BASE + ALL STATS AND SEX SKILLS DIVIDED BY setup.prized.rep_div
<<set _prizedAmount to Math.round(random(setup.prized.min_rep, setup.prized.max_rep) + Math.round(($slave_room_list[_i].love + $slave_room_list[_i].obedience + $slave_room_list[_i].libido + $slave_room_list[_i].strength + $slave_room_list[_i].intelligence + $slave_room_list[_i].handjob + $slave_room_list[_i].blowjob + $slave_room_list[_i].titjob + $slave_room_list[_i].footjob + $slave_room_list[_i].missionary + $slave_room_list[_i].cowgirl + $slave_room_list[_i].doggy + $slave_room_list[_i].anal) / setup.prized.rep_div) * $diffRepMod)>>
<<set $rep_prized_amount += _prizedAmount>>
<<set $rep_net_gained += _prizedAmount>>
<</if>>
<</if>>
<</for>>
CUR REP GAINED: $rep_net_gained
IDOL TREASURES
<<set $rep_idol_amount += setup.common_treasure_05.int * $treasureroom_inventory.count(setup.common_treasure_05.name)>>
<<set $rep_net_gained += setup.common_treasure_05.int * $treasureroom_inventory.count(setup.common_treasure_05.name)>>
CUR REP GAINED: $rep_net_gained
SLAVE QUESTS
<<set $rep_net_gained += $slave_quest_rep>>
CUR REP GAINED: $rep_net_gained
PERFECT NIGHT
Gain extra rep if no raiders cleared the dungeon
<<if $raiders_cleared_list.length === 0>>
<<set _amount to $rep_released_amount + $rep_fucked_amount>>
<<set _mult to Math.clamp(_perfect_mult * $number_of_raiders, _perfect_mult, 0.5)>>
<<set $perfect_rep_amount to Math.round(((_amount * _mult) + _perfect_base) * $diffRepMod)>>
<<set $rep_net_gained += $perfect_rep_amount>>
<<else>>
<<set $perfect_rep_amount to 0>>
<</if>>
CUR REP GAINED: $rep_net_gained
* Blessings Increase Rep Gained *
<<set $guildmaster_rep to 0>>
<<if $pc_blessing_list.includes("Guildmaster's Influence")>>
<<set $guildmaster_rep += Math.round($rep_released_amount * setup.malloryBlessing_0.float)>>
<<set $guildmaster_rep += Math.round($rep_fucked_amount * setup.malloryBlessing_0.float)>>
<<set $guildmaster_rep += Math.round($rep_abandoned_amount * setup.malloryBlessing_0.float)>>
<<set $rep_net_gained += $guildmaster_rep>>
<</if>>
CUR REP GAINED: $rep_net_gained
ADDING ALL REP LOST SO FAR
CLEARED
<<for _i = 0; _i < $raiders_cleared_list.length; _i++>>
<<set _amount to ($raiders_cleared_list[_i].reputation + (setup.cleared_rep_constant * _i)) * setup.repModifier[$dungeon_rank]>>
<<set $rep_net_lost += clone(_amount)>>
<<set $rep_cleared_amount += clone(_amount)>>
<</for>>
<<set $rep_net_lost to Math.trunc($rep_net_lost)>>
<<set $rep_cleared_amount to Math.trunc($rep_cleared_amount)>>
ENSLAVED
<<if $enslaved_girl != "">>
<<set $rep_net_lost += $enslaved_girl.reputation>>
<</if>>
<<set $rep_net_lost to Math.trunc($rep_net_lost)>>
MARKET CONNECTIONS
REP FROM FLIRTS
<<set $rep_net_gained += $flirtatious_rep_amount>>
*Setting Rep Total*
<<set $dungeon_reputation += ($rep_net_gained - $rep_net_lost)>>
CLAMP REPUTATION
<<set $dungeon_reputation to Math.clamp($dungeon_reputation, 0, $reputation_rankup_amount)>>
RANK UP CHECK
<<if $dungeon_reputation === $reputation_rankup_amount && $reputation_nextrank_trigger === false>>
<<set $reputation_nextrank_trigger to true>>
<</if>>
*Adding all the Threat gained*
RELEASED
<<for _i = 0; _i < $released_girl_list.length; _i++>>
<<set _amount to (($released_girl_list[_i].threat + (setup.captured_threat_constant * _i)) * $diffThreatMod) * setup.threatModifier[$dungeon_rank]>>
<<set $threat_net_gained += clone(_amount)>>
<<set $threat_released_amount += clone(_amount)>>
<</for>>
<<set $threat_net_gained to Math.trunc($threat_net_gained)>>
<<set $threat_released_amount to Math.trunc($threat_released_amount)>>
<<set _count to clone(_i)>> adds to count of captured raiders for the threat constant count
FUCKED
<<for _i = 0; _i < $used_girl_list.length; _i++>>
<<set _amount to (($used_girl_list[_i].threat * setup.threat_sex_penalty).clamp(1, 1000000) + (setup.captured_threat_constant * (_count + _i)) * $diffThreatMod) * setup.threatModifier[$dungeon_rank]>>
<<set $threat_net_gained += clone(_amount)>>
<<set $threat_fucked_amount += clone(_amount)>>
<</for>>
<<set $threat_net_gained to Math.trunc($threat_net_gained)>>
<<set $threat_fucked_amount to Math.trunc($threat_fucked_amount)>>
ENSLAVED
<<if $enslaved_girl != "">>
<<set $threat_net_gained += $enslaved_girl.threat>>
<</if>>
*Adding Threat Lost*
CLEARED
<<for _i = 0; _i < $raiders_cleared_list.length; _i++>>
<<set _amount to ($raiders_cleared_list[_i].threat + (setup.cleared_threat_constant * _i)) * setup.threatModifier[$dungeon_rank]>>
<<set $threat_net_lost += clone(_amount)>>
<<set $threat_cleared_amount += clone(_amount)>>
<</for>>
<<set $threat_net_lost to Math.trunc($threat_net_lost)>>
<<set $threat_cleared_amount to Math.trunc($threat_cleared_amount)>>
DRAGON MEDALLION
<<set $threat_medallion_amount += setup.common_treasure_06.int * $treasureroom_inventory.count(setup.common_treasure_06.name)>>
<<set $threat_net_lost += setup.common_treasure_06.int * $treasureroom_inventory.count(setup.common_treasure_06.name)>>
*Setting Threat Total*
<<if $threat_locked === true>>
<<set $dungeon_threat += $threat_net_gained>>
<<else>>
<<set $dungeon_threat += ($threat_net_gained - $threat_net_lost)>>
<</if>>
<<set $dungeon_threat to Math.clamp($dungeon_threat, 0, setup.threat_max_amount)>>
*Add addition threat that has already been calculated *
THREAT FROM GUILD
<<if $guild_threat_increased > 0>>
<<set $threat_net_gained += $guild_threat_increased>>
<<elseif $guild_threat_decreased > 0>>
<<set $threat_net_lost += $guild_threat_decreased>>
<</if>>
* Create Report Arrays *
<<set $dungeon_room_report to clone($dungeon_floor_list)>>
<<set $slave_room_report to clone($slave_room_list)>>
* Clean Up Raider Reports *
<<for _i = 0; _i < $raider_report_list.length; _i++>>
<<set _deleteList to []>>
<<for _z = 0; _z < $raider_report_list[_i].log.length; _z++>>
<<if $raider_report_list[_i].log[_z].type === "Between">>
<<if $raider_report_list[_i].log[_z].entry.length === 0>>
<<set _deleteList.push(_z)>>
<</if>>
<</if>>
<</for>>
<<set _remove to $raider_report_list[_i].log.deleteAt(_deleteList)>>
<</for>>
* Add Treasures *
<<set $treasureroom_inventory to $treasureroom_inventory.concat($slave_job_treasures, $slave_quest_treasures, $treasure_earned, $sneaky_treasures)>>
*Gold Check*
<<if $pc_gold <= 0 && $difficulty != "casual">>
<<set $game_over_count++>>
<<else>>
<<set $game_over_count to 0>>
<</if>>
*Game Over Check*
<<if $difficulty === "normal">>
<<if $game_over_count >= 3>>
<<set _game_over_bool to true>>
<</if>>
<<elseif $difficulty === "brutal">>
<<if $game_over_count >= 1>>
<<set _game_over_bool to true>>
<</if>>
<</if>>
*Call Popup Box *
<<if _display_popup === true>>
<<script>>
Mousetrap
.bind('space', function () {
$('#ui-dialog-close').click();
});
Mousetrap.unbind('1');
Mousetrap.unbind('2');
Mousetrap.unbind('3');
Dialog.open(null, function () {
Mousetrap
.bind('space', function () {
$('#forward button').click();
});
Mousetrap
.bind('1', function () {
$('#1 button').click();
},);
Mousetrap
.bind('2', function () {
$('#2 button').click();
});
Mousetrap
.bind('3', function () {
$('#3 button').click();
});
});
<</script>>
<</if>>
<</if>> <----- CLOSING STATMENT FOR FIRST TIME CHECK
*Display*
<</silently>>\
<div class="exit-link-right">\
<<if $previous_bool === true>>\
<span id="back"><<button [[Back|Player's Stats]]>><<unset $previous_bool>><</button>></span>
<<elseif _game_over_bool === true>>\
<span id="forward"><<button [[End Day|Game Over]]>><<unset $previous_bool>><</button>></span>
<<else>>\
<span id="forward"><<button [[End Day|Dreaming]]>><<unset $previous_bool>><</button>></span>
<</if>>\
</div>\
<div class="section">\
<div class="titlebox">\
<strong>Daily Report</strong>
</div>\
<div class="cardholder-daily">\
<div class="column-gold-daily">\
<div class="column-header-daily">\
<strong>Gold</strong>
</div>\
<div class="column-body-daily">\
<<if $gold_earned > 0>>\
<div class="column-largecell-daily">Captured Raiders:</div><div class="column-smallcell-daily"><span style="color:green">+$gold_earned</span></div>
<</if>>\
<<if $hoarding_lord_gold > 0>>\
<div class="column-largecell-daily">Hoarding Lord:</div><div class="column-smallcell-daily"><span style="color:green">+$hoarding_lord_gold</span></div>
<</if>>\
<<if $slave_job_gold > 0>>\
<div class="column-largecell-daily">Slave Jobs:</div><div class="column-smallcell-daily"><span style="color:green">+$slave_job_gold</span></div>
<</if>>\
<<if $slave_quest_gold > 0>>\
<div class="column-largecell-daily">Slave Quests:</div><div class="column-smallcell-daily"><span style="color:green">+$slave_quest_gold</span></div>
<</if>>\
<<if $marketConnectionAmount > 0>>\
<div class="column-largecell-daily">Slave Market Connections:</div><div class="column-smallcell-daily"><span style="color:green">+$marketConnectionAmount</span></div>
<</if>>\
<<if $shinyRingGold > 0>>\
<div class="column-largecell-daily">Shiny Rings:</div><div class="column-smallcell-daily"><span style="color:green">+$shinyRingGold</span></div>
<</if>>\
<<if $gleaming_interest_amount > 0>>\
<div class="column-largecell-daily">Gleaming Interest ($gleaming_interest_percent%):</div><div class="column-smallcell-daily"><span style="color:green">+$gleaming_interest_amount</span></div>
<</if>>\
<<if $gold_stolen > 0>>\
<div class="column-largecell-daily">Gold Stolen</div><div class="column-smallcell-daily"><span style="color:red">-$gold_stolen</span></div>
<</if>>\
<<if $creature_upkeep > 0>>\
<div class="column-largecell-daily">Creature Upkeeps:</div><div class="column-smallcell-daily"><span style="color:red">-$creature_upkeep</span></div>
<</if>>\
<<if $trap_upkeep > 0>>\
<div class="column-largecell-daily">Trap Upkeeps:</div><div class="column-smallcell-daily"><span style="color:red">-$trap_upkeep</span></div>
<</if>>\
<<if $slave_upkeep > 0>>\
<div class="column-largecell-daily">Slave Upkeeps:</div><div class="column-smallcell-daily"><span style="color:red">-$slave_upkeep</span></div>
<</if>>\
<<if $creature_keeper_cost > 0>>\
<div class="column-largecell-daily">Creature Keeper Fees:</div><div class="column-smallcell-daily"><span style="color:red">-$creature_keeper_cost</span></div>
<</if>>\
</div>\
<div class="column-footer-daily">\
<<set _net_gold to ($gold_earned + $slave_job_gold + $slave_quest_gold + $hoarding_lord_gold + $marketConnectionAmount + $gleaming_interest_amount) - ($gold_stolen + $creature_upkeep + $trap_upkeep + $slave_upkeep + $creature_keeper_cost)>>\
<<if _net_gold > 0>>\
<strong>Net Gained: <span style="color:gold">_net_gold</span></strong>
<<elseif _net_gold < 0>>\
<<set _net_gold *= -1>>\
<strong>Net Lost: <span style="color:red">_net_gold</span></strong>
<<elseif _net_gold === 0>>\
<strong>Net Neutral: 0</strong>
<</if>>\
</div>\
</div>\
</div>\
<div class="cardholder-daily">\
<div class="column-reputation-daily">\
<div class="column-header-daily">\
<strong>Reputation</strong>
</div>\
<div class="column-body-daily">\
<<if $rep_released_amount > 0>>\
<div class="column-largecell-daily">Released Raiders:</div><div class="column-smallcell-daily"><span style="color:green">+$rep_released_amount</span></div>
<</if>>\
<<if $rep_fucked_amount > 0>>\
<div class="column-largecell-daily">Fucked Raiders:</div><div class="column-smallcell-daily"><span style="color:green">+$rep_fucked_amount</span></div>
<</if>>\
<<if $rep_abandoned_amount > 0>>\
<div class="column-largecell-daily">Abandoned:</div><div class="column-smallcell-daily"><span style="color:green">+$rep_abandoned_amount</span></div>
<</if>>\
<<if $perfect_rep_amount > 0>>\
<div class="column-largecell-daily">No Clears:</div><div class="column-smallcell-daily"><span style="color:green">+$perfect_rep_amount</span></div>
<</if>>\
<<if $guildmaster_rep > 0>>\
<div class="column-largecell-daily">Guildmaster's Influence:</div><div class="column-smallcell-daily"><span style="color:green">+$guildmaster_rep</span></div>
<</if>>\
<<if $slave_quest_rep > 0>>\
<div class="column-largecell-daily">Slave Quests:</div><div class="column-smallcell-daily"><span style="color:green">+$slave_quest_rep</span></div>
<</if>>\
<<if $flirtatious_rep_amount > 0>>\
<div class="column-largecell-daily">Flirty Slaves:</div><div class="column-smallcell-daily"><span style="color:green">+$flirtatious_rep_amount</span></div>
<</if>>\
<<if $rep_prized_amount > 0>>\
<div class="column-largecell-daily">Prized Slaves:</div><div class="column-smallcell-daily"><span style="color:green">+$rep_prized_amount</span></div>
<</if>>\
<<if $rep_idol_amount > 0>>\
<div class="column-largecell-daily">Treasures:</div><div class="column-smallcell-daily"><span style="color:green">+$rep_idol_amount</span></div>
<</if>>\
<<if $rep_cleared_amount > 0>>\
<div class="column-largecell-daily">Clears:</div><div class="column-smallcell-daily"><span style="color:red">-$rep_cleared_amount</span></div>
<</if>>\
<<if $enslaved_girl != "">>\
<div class="column-largecell-daily">Enslaved Raider:</div><div class="column-smallcell-daily"><span style="color:red">-$enslaved_girl.reputation</span></div>
<</if>>\
</div>\
<div class="column-footer-daily">\
<<set _amount to $rep_net_gained - $rep_net_lost>>\
<<if _amount < 0>>\
<<set _amount *= -1>>\
<strong>Net Decreased: <span style="color:red">_amount</span></strong>
<<elseif _amount > 0>>\
<strong>Net Increased: <span style="color:green">_amount</span></strong>
<<elseif _amount === 0>>\
<strong>Net Neutral: 0</strong>
<</if>>\
</div>\
</div>\
</div>\
<div class="cardholder-daily">\
<div class="column-threat-daily">\
<div class="column-header-daily">\
<strong>Threat</strong>
</div>\
<div class="column-body-daily">\
<<if $threat_released_amount > 0>>\
<div class="column-largecell-daily">Released Raiders:</div><div class="column-smallcell-daily"><span style="color:red">+$threat_released_amount</span></div>
<</if>>\
<<if $threat_fucked_amount > 0>>\
<div class="column-largecell-daily">Fucked Raiders:</div><div class="column-smallcell-daily"><span style="color:red">+$threat_fucked_amount</span></div>
<</if>>\
<<if $enslaved_girl != "">>\
<div class="column-largecell-daily">Enslaved Raider:</div><div class="column-smallcell-daily"><span style="color:red">+$enslaved_girl.threat</span></div>
<</if>>\
<<if $guild_threat_increased > 0>>\
<div class="column-largecell-daily">Guild Service:</div><div class="column-smallcell-daily"><span style="color:red">-$guild_threat_increased</span></div>
<<elseif $guild_threat_decreased > 0>>\
<div class="column-largecell-daily">Guild Service:</div><div class="column-smallcell-daily"><span style="color:green">-$guild_threat_decreased</span></div>
<</if>>\
<<if $threat_cleared_amount > 0>>\
<div class="column-largecell-daily">Clears:</div><div class="column-smallcell-daily"><span style="color:green">-$threat_cleared_amount</span></div>
<</if>>\
<<if $threat_medallion_amount > 0>>\
<div class="column-largecell-daily">Treasures:</div><div class="column-smallcell-daily"><span style="color:green">-$threat_medallion_amount</span></div>
<</if>>\
</div>\
<div class="column-footer-daily">\
<<set _amount to $threat_net_gained - $threat_net_lost>>\
<<if _amount < 0>>\
<<set _amount *= -1>>\
<strong>Net Decreased: <span style="color:green">_amount</span></strong>
<<elseif _amount > 0>>\
<strong>Net Increased: <span style="color:red">_amount</span></strong>
<<elseif _amount === 0>>\
<strong>Net Neutral: 0</strong>
<</if>>\
</div>\
</div>\
</div>\
<div class="cardholder-daily">\
<div class="column-treasure-daily">\
<div class="column-header-daily">\
<strong>Treasures</strong>
</div>\
<div class="column-body-daily">\
<<if $treasure_earned.length + $raidtreasure_list.length > 0>>\
<div class="column-largecell-daily">Captured Raiders:</div><div class="column-smallcell-daily"><span style="color:green">+<<- $treasure_earned.length + $raidtreasure_list.length>></span></div>
<</if>>\
<<if $slave_job_treasures.length > 0>>\
<div class="column-largecell-daily">Slave Jobs:</div><div class="column-smallcell-daily"><span style="color:green">+$slave_job_treasures.length</span></div>
<</if>>\
<<if $slave_quest_treasures.length > 0>>\
<div class="column-largecell-daily">Slave Quests:</div><div class="column-smallcell-daily"><span style="color:green">+$slave_quest_treasures.length</span></div>
<</if>>\
<<if $sneaky_treasures.length > 0>>\
<div class="column-largecell-daily">Pickpocketed:</div><div class="column-smallcell-daily"><span style="color:green">+$sneaky_treasures.length</span></div>
<</if>>\
<<if $treasures_stolen > 0>>\
<div class="column-largecell-daily">Stolen:</div><div class="column-smallcell-daily"><span style="color:red">-$treasures_stolen</span></div>
<</if>>\
</div>\
<div class="column-footer-daily">\
<<set _amount to $treasure_earned.length + $raidtreasure_list.length + $slave_job_treasures.length + $slave_quest_treasures.length + $sneaky_treasures.length - $treasures_stolen>>\
<<if _amount < 0>>\
<<set _amount *= -1>>\
<strong>Net Lost: <span style="color:red">_amount</span></strong>
<<elseif _amount > 0>>\
<strong>Net Gained: <span style="color:green">_amount</span></strong>
<<elseif _amount === 0>>\
<strong>Net Neutral: 0</strong>
<</if>>\
</div>\
</div>\
</div>\
<div class="cardholder-daily">\
<div class="column-dungeon-daily">\
<div class="column-header-daily">\
<strong>Raiders</strong>
</div>\
<div class="column-body-daily">\
<<if $number_of_raiders > 0>>\
<div class="column-largecell-daily">Entered:</div><div class="column-smallcell-daily">$number_of_raiders</div>
<</if>>\
<<if $hired_raiders.length > 0>>\
<div class="column-largecell-daily">Hired:</div><div class="column-smallcell-daily">$hired_raiders.length</div>
<</if>>\
<<if $lure_count > 0>>\
<div class="column-largecell-daily">Lured:</div><div class="column-smallcell-daily">$lure_count</div>
<</if>>\
<<if $captured_raiders_count > 0>>\
<div class="column-largecell-daily">Captured:</div><div class="column-smallcell-daily"><span style="color:green">$captured_raiders_count</span></div>
<</if>>\
<<if $impInvasionCount > 0>>\
<div class="column-largecell-daily">Imp Invasion:</div><div class="column-smallcell-daily"><span style="color:green">$impInvasionCount</span></div>
<</if>>\
<<if $abandoned_girl_list.length > 0>>\
<div class="column-largecell-daily">Abandoned:</div><div class="column-smallcell-daily">$abandoned_girl_list.length</div>
<</if>>\
<<set _clear_num to $number_of_raiders - ($captured_raiders_count + $abandoned_girl_list.length)>>\
<<if _clear_num > 0>>\
<div class="column-largecell-daily">Cleared:</div><div class="column-smallcell-daily"><span style="color:red">_clear_num</span></div>
<</if>>\
</div>\
<div class="column-footer-daily">\
<<set _percent to Math.trunc((($captured_raiders_count + $abandoned_girl_list.length) / $number_of_raiders) * 100)>>\
<<if _percent >= 70>>\
<strong><span style="color:green">_percent% of Raiders Stopped</span></strong>
<<elseif _percent <= 30>>\
<strong><span style="color:red">_percent% of Raiders Stopped</span></strong>
<<else>>\
<strong>_percent% of Raiders Stopped</strong>
<</if>>\
</div>\
</div>\
</div>\
<div class="cardholder-daily">\
<div class="column-slave-daily">\
<div class="column-header-daily">\
<strong>Slaves</strong>
</div>\
<div class="column-body-daily">\
<<if $slave_job_count > 0>>\
<div class="column-largecell-daily">Jobs Done:</div><div class="column-smallcell-daily">$slave_job_count</div>
<</if>>\
<<if $slave_side_job_count > 0>>\
<div class="column-largecell-daily">Side Jobs Worked:</div><div class="column-smallcell-daily">$slave_side_job_count</div>
<</if>>\
<<if $slave_out_count > 0>>\
<div class="column-largecell-daily">Slaves Away:</div><div class="column-smallcell-daily">$slave_out_count</div>
<</if>>\
<<if $slave_quest_count > 0>>\
<div class="column-largecell-daily">Quests Completed:</div><div class="column-smallcell-daily"><span style="color:green">$slave_quest_count</span></div>
<</if>>\
<<if $slave_class_count > 0>>\
<div class="column-largecell-daily">Classes Passed:</div><div class="column-smallcell-daily"><span style="color:green">$slave_class_count</span></div>
<</if>>\
<<if $slave_quest_failed > 0>>\
<div class="column-largecell-daily">Quests Failed:</div><div class="column-smallcell-daily"><span style="color:red">$slave_quest_failed</span></div>
<</if>>\
<<if $slave_class_failed > 0>>\
<div class="column-largecell-daily">Classes Failed:</div><div class="column-smallcell-daily"><span style="color:red">$slave_class_failed</span></div>
<</if>>\
<<if $slave_nowork_count > 0>>\
<div class="column-largecell-daily">Not Working:</div><div class="column-smallcell-daily"><span style="color:red">$slave_nowork_count</span></div>
<</if>>\
</div>\
<div class="column-footer-daily">\
<<if $slave_working_count === 1>>\
<strong>$slave_working_count Slave Worked</strong>
<<elseif $slave_working_count === 0>>\
<strong>No Slaves Worked</strong>
<<else>>\
<strong>$slave_working_count Slaves Worked</strong>
<</if>>\
</div>\
</div>\
</div>\
<div class="cardholder-bottom-daily">\
<div class="detailed-report-holder-daily">\
<div class="detailed-report-box-daily">\
<div class="detailed-report-header-daily">\
Dungeon Report
</div>\
<div class="detailed-report-button-daily">\
<span id="1"><<button "View ^^1^^" "Daily Dungeon Room Report">>\
<<silently>>\
FIND FIRST CREATURE OR TRAP ROOM
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if $dungeon_floor_list[_z].room_type === "Creature" || $dungeon_floor_list[_z].room_type === "Trap">>
<<set $cur_room_num to _z>>
<<break>>
<</if>>
<</for>>
SET WHERE TO SEND BACK
<<set $sent_from to "Daily Summary">>
<</silently>>\
<</button>></span>
</div>\
</div>\
</div>\
<div class="detailed-report-holder-daily">\
<div class="detailed-report-box-daily">\
<div class="detailed-report-header-daily">\
Raider Report
</div>\
<div class="detailed-report-button-daily">\
<span id="2"><<button "View ^^2^^" "Daily Raider Report">><<set $sent_from to "Daily Summary">><</button>></span>
</div>\
</div>\
</div>\
<div class="detailed-report-holder-daily">\
<div class="detailed-report-box-daily">\
<div class="detailed-report-header-daily">\
Slaves Report
</div>\
<div class="detailed-report-button-daily">\
<<set _has_slave to false>>\
<<for _z = 0; _z < $slave_room_list.length; _z++>>\
<<if $slave_room_list[_z].room_type === "Slave">>\
<<set _has_slave to true>>\
<</if>>\
<</for>>\
<<if _has_slave === true>>\
<span id="3"><<button "View ^^3^^" "Daily Slave Report">><<set $sent_from to "Daily Summary">><</button>></span>
<<else>>\
<div class="offbutton">\
<<button "View">><</button>>
</div>\
<</if>>\
</div>\
</div>\
</div>\
</div>\
</div>\<<silently>>\
* Variables *
<<set _max_lure to 50>> total amount of lure that can be gained from treasure and gold
<<set _lure_per_gold to 0.005>> amount of lure 1 gold is worth, only thieves use gold for lure
<<set _total_value to 0>> value of all treasures and gold in treasure room
<<set _lure_count to 0>> number of raiders lured
<<set _class_listCap to ["Hunter","Sorcerer","Knight","Warrior","Priestess","Thief","Alchemist","Witch"]>>
<<set _class_lure = {
Hunter: 0,
Sorcerer: 0,
Knight: 0,
Warrior: 0,
Priestess: 0,
Thief: 0,
Alchemist: 0,
Witch: 0,
}>>
* Lure *
<<for _i = 0; _i < _class_listCap.length; _i++>>
<<if _class_listCap[_i] === "Thief">>
<<set _lure to ($pc_gold * _lure_per_gold).toFixed(2)>>
<<set _class_lure.Thief to _lure>>
<<else>>
<<set _class_name to _class_listCap[_i]>>
<<for _t = 0; _t < $pc_treasure_list.length; _t++>>
<<if $pc_treasure_list[_t].class.includes(_class_name)>>
<<set _lure to 0>>
<<switch $pc_treasure_list[_t].rarity>>
<<case "Common">>
<<set _lure += setup.common_treasure_values.lure * $pc_treasure_list[_t].amount>>
<<case "Uncommon">>
<<set _lure += setup.uncommon_treasure_values.lure * $pc_treasure_list[_t].amount>>
<<case "Rare">>
<<set _lure += setup.rare_treasure_values.lure * $pc_treasure_list[_t].amount>>
<</switch>>
<<set _class_lure[_class_name] += _lure>>
<<if _class_lure[_class_name] > _max_lure>>
<<set _class_lure[_class_name] to _max_lure>>
<</if>>
<</if>>
<</for>>
<</if>>
<</for>>
<</silently>>\<<silently>>\
* Variables *
<<set _client_type to "">> holds information to determines what type of client or event will happen
<<set _chosen_sex to "">> information about what type of sex the slave and client will perform
<<set _desired_sex_mod to 1.25>> increase the amount of gold earned if client get desired sex
<<set _undesired_sex_mod to 0.75>> decrease the amount of gold earned if client gets none of their preferred sex
<<set _above_skill_mod to 1.75>> increase the amount of gold earned if sex skill is above the skill required
<<set _below_skill_mod to 0.25>> decrease the amount of gold earned if sex skill is below the skill required
<<set _group_sex_list to []>> holds sex skills used during group event
<<set _group_min_sex to 3>> slave needs at least 3 service or sex options to find group
<<set _group_count to 0>> number of clients serviced before giving up
<<set _max_group_size to 5>> max number of clients can service in a group
<<set _group_mod to 0.25>> increases gold and exp gained by this amount per client she was able to service in the group
<<set _group_stress_mod to 0.25>> Increase Stress gained by this amount during group event
<<set _baseStamina to 100>> amount of stamina slave starts with during group event, adds libido bonus
<<set _minStaminaDrain to 45>>
<<set _maxStaminaDrain to 65>> min and max amount of stamina drained by each client in group
<<set _rape_exp_mod to 2>> increase amount of exp gained by this var during rape event for strength and intelligence
<<set _rape_sexskill_mod to 0.5>> decreases amount of sex skill gained during rape event
<<set _rape_libido_mod to 0.5>> decrease amount of libido exp gained during rape event
<<set _incident_stress to 0.5>> increases stress gained during incident
<<set _no_client_stress_mod to 0.5>> Reduces Stress gained by this var if failed to find client
<<set _sexskill_bonus to 1.5>>
<<set _sexskill_penalty to 0.5>> increase or decrease amount of sex skill exp earned
<<set _sex_list to ["blowjob", "handjob", "titjob", "footjob", "missionary", "doggy", "cowgirl", "anal"]>>
<<set _rape_list to ["missionary", "doggy", "anal", "blowjob", "titjob"]>>
<<set _libidinousAmount to 0>> Lust Energy gained
<<set _libidinousInt to 4>> base amount if Lust Energy gained from the libidinous Trait
<<set _libidinousMod to 2>> mult or divide Lust Energy by this for desired sex and sex skill req
* Find Slave Working Job *
<<for _s = 0; _s < $slave_room_list.length; _s++>>
<<if $slave_room_list[_s].index === $cur_job.slave_index>>
<<set $cur_slave to $slave_room_list[_s]>>
<<break>>
<</if>>
<</for>>
<<SlaveSetup $cur_slave>>
* Obedience Check *
<<SlaveObedienceCheck $cur_slave $cur_job.base_obedience_check>>
* Base Stress *
<<set _stress_amount to random($cur_job.min_stress, $cur_job.max_stress)>>
BASE STRESS: _stress_amount
* Special Event Check *
EVENTS
<<set _group_rate to clone($cur_job.group_rate)>>
SLUTTY GROUP MOD
<<if $cur_slave.trait_names.includes("Slutty")>>
TRIGGERED
<<set _group_rate *= setup.slutty.mult>>
<</if>>
LUCKY
<<if $cur_slave.trait_names.includes("Lucky")>>
<<set _group_rate += (Math.round(_group_rate * setup.lucky.float)).clamp(1, 1000000)>>
<</if>>
UNLUCKY
<<if $cur_slave.trait_names.includes("Unlucky")>>
<<set _group_rate -= (Math.round(_group_rate * setup.unlucky.float)).clamp(1, 1000000)>>
<</if>>
<<set _group_rng to random(1, 100)>>
<<if _group_rate >= _group_rng && $cur_job.sex_list.length > _group_min_sex>>
GROUP CHECK PASSED
<<set _client_type to "Group">>
<<else>>
* Find Client Check *
SEDUCTRESS ALWAYS FINDS CLIENT
<<if $cur_slave.trait_names.includes("Seductress")>>
TRIGGERED
<<set _client_rate to 100>>
<<else>>
BASE CLIENT RATE
<<set _client_rate to clone($cur_job.client_rate)>>
LIBIDO MOD
<<set _client_rate += Math.round(($cur_slave.libido * $cur_job.client_mod) * setup.obedienceCheckOutcome[_obedience_result])>>
TRAITS
SLUTTY
<<if $cur_slave.trait_names.includes("Slutty")>>
TRIGGERED
<<set _client_rate += Math.round(_client_rate * setup.slutty.client_float)>>
<</if>>
INSECURE
<<if $cur_slave.trait_names.includes("Insecure")>>
TRIGGERED
<<set _client_rate -= Math.round(_client_rate * setup.insecure.float)>>
<</if>>
BUDDY SYSTEM
<<if $cur_job.buddy_system_bool === true>>
<<set _client_rate += Math.round(_client_rate * setup.blessing_07_10.client_float)>>
<</if>>
<</if>>
CLIENT RATE: _client_rate
<<set _rng to random(1, 100)>>
RNG: _rng
<<if _client_rate >= _rng>>
CLIENT FOUND!
RAPIST CLIENT CHECK
<<set _rng to random(1, 100)>>
BASE RAPE RATE
<<set _rapist_rate to clone($cur_job.rape_rate)>>
INTIMIDATING
<<if $cur_slave.trait_names.includes("Intimidating")>>
TRIGGERED
<<set _rapist_rate -= Math.round(_rapist_rate * setup.intimidating.float)>>
<</if>>
BUDDY SYSTEM
<<if $cur_job.buddy_sysem_bool === true>>
<<set _rapist_rate -= Math.round(_rapist_rate * setup.blessing_07_10.rape_float)>>
<</if>>
VULNERABLE TRAIT
<<if $cur_slave.trait_names.includes("Vulnerable")>>
TRIGGERED
<<set _rapist_rate *= setup.vulnerable.mult>>
<</if>>
LUCKY
<<if $cur_slave.trait_names.includes("Lucky")>>
TRIGGERED
<<set _rapist_rate -= Math.round(_rapist_rate * setup.lucky.float)>>
<</if>>
UNLUCKY
<<if $cur_slave.trait_names.includes("Unlucky")>>
TRIGGERED
<<set _rapist_rate += Math.round(_rapist_rate * setup.unlucky.float)>>
<</if>>
RATE: _rapist_rate VS RNG: _rng
<<if _rapist_rate >= _rng>>
CLIENT IS RAPIST, INCIDENT CHECK REQ
SET INCIDENT CHECK
<<set _incident_rate to clone($cur_job.incident_rate)>>
<<SlaveIncidentCheck $cur_slave _incident_rate $cur_job>>
<<if _slave_triggers.general.incident_trig === true>>
RAPE ATTEMPT
<<set _client_type to "Rape Attempt">>
<<else>>
AVOID RAPE ATTEMPT!
<<set _client_type to "Rape Failed">>
<</if>>
<<else>>
CLIENT IS NORMAL
<<set _client_type to "Normal">>
<</if>>
<<else>>
NO CLIENT
<<set _client_type to "None">>
<</if>>
<</if>>
* Client Preferences *
<<set _sex_pref to _sex_list.randomMany($cur_job.client_pref)>>
<<set _desired_sex to _sex_pref.random()>>
* Base Gold Earned *
<<set _gold_earned to random($cur_job.base_min_gold, $cur_job.base_max_gold)>>
BASE GOLD: @@.gold;_gold_earned@@
LIBIDO
<<set _libidoGold to ($cur_slave.libido).clamp(1, $cur_job.stat_cap) * $cur_job.libido_mod * setup.obedienceCheckOutcome[_obedience_result]>>
_libidoGold
* Sim Prostitution *
<<if _client_type === "Group">>
GROUP EVENT
SET SEX TYPE
<<set _chosen_sex to "group">>
STARTING STAMINA: _baseStamina
<<for _z = 1; _z <= _max_group_size; _z++>>
<<if _baseStamina > 0>>
INCREASE COUNT
<<set _group_count++>>
<<else>>
END EVENT AT _group_count CLIENTS
<<break>>
<</if>>
<<set _baseStamina -= random(_minStaminaDrain, _maxStaminaDrain) - (Math.round($cur_job.group_mod * ($cur_slave.libido).clamp(1, $cur_job.stat_cap) * setup.obedienceCheckOutcome[_obedience_result]))>>
NEW STAMINA: _baseStamina
<</for>>
UPDATE GOLD
<<set _gold_earned += Math.round(_gold_earned * (_group_mod * _group_count)).clamp(1, 1000000)>>
UPDATE STRESS
<<set _stress_amount += Math.round(_stress_amount * _group_stress_mod)>>
UPDATE LUST ENERGY
<<set _libidinousAmount += _libidinousInt * _group_count>>
OBEDIENCE EXP GAINED
<<set _obedience_exp to Math.round($cur_job.obedience_exp + ($cur_job.obedience_exp * (_group_mod * _group_count)).clamp(1, 1000000))>>
<<SlaveObedienceGrowth $cur_slave _obedience_exp>>
LIBIDO EXP GAINED
<<set _libido_exp to Math.round($cur_job.libido_exp + ($cur_job.libido_exp * (_group_mod * _group_count)).clamp(1, 1000000))>>
<<SlaveLibidoGrowth $cur_slave _libido_exp>>
SEX SKILL EXP GAINED
<<for _z = 0; _z < $cur_job.sex_list.length; _z++>>
<<set _sexskill_exp to Math.round($cur_job.sexskill_exp + ($cur_job.sexskill_exp * (_group_mod * _group_count)).clamp(1, 1000000))>>
<<SexSkillGrowth $cur_slave _sexskill_exp $cur_job.sex_list[_z]>>
<</for>>
<<elseif _client_type === "Normal">>
TEXT TRIGGERS
<<set _desired_sex_bool to false>>
<<set _undesired_sex_bool to false>>
CHOOSE SEX TYPE
<<if $cur_job.sex_list.includes(_desired_sex)>>
SET SEX TO CLIENTS DESIRED SEX
<<set _chosen_sex to _desired_sex>>
INCREASE GOLD EARNED
<<set _gold_earned to Math.round(_gold_earned * _desired_sex_mod)>>
GOLD: _gold_earned
LUST ENERGY
<<set _libidinousAmount += Math.round(_libidinousInt * _libidinousMod)>>
TRIGGER TEXT
<<set _desired_sex_bool to true>>
<<elseif $cur_job.sex_list.includesAny(_sex_pref)>>
CHOOSE SEX FROM SLAVES AVAILABLE LIST AND CLIENTS PERFERED LIST
<<set _options to _sex_pref.delete($cur_job.sex_list)>>
<<set _chosen_sex to _options.random()>>
<<set _sex_pref to _sex_pref.concat(_options)>>
LUST ENERGY
<<set _libidinousAmount += _libidinousInt>>
<<else>>
CHOOSE SEX FROM SLAVES AVAILABLE LIST
<<set _chosen_sex to $cur_job.sex_list.random()>>
REDUCE GOLD EARNED
<<set _gold_earned to Math.round(_gold_earned * _undesired_sex_mod)>>
GOLD: _gold_earned
TRIGGER TEXT
<<set _undesired_sex_bool to true>>
LUST ENERGY
<<set _libidinousAmount += Math.round(_libidinousInt / _libidinousMod)>>
<</if>>
SEX SKILL MODIFIERS
<<set _sex_skill to $cur_slave[_chosen_sex]>>
TEXT TRIGGERS
<<set _above_skill_bool to false>>
<<set _below_skill_bool to false>>
SET CLIENT'S REQUIRED SEX SKILL
<<set _required_skill to random($cur_job.min_skill, $cur_job.max_skill)>>
CHECK SKILL
<<if _sex_skill > _required_skill + $cur_job.range_skill>>
APPLY SEX SKILL MOD PLUS ABOVE SEX SKILL BONUS
<<set _gold_earned += Math.round((($cur_slave[_chosen_sex]).clamp(0, $cur_job.stat_cap) * $cur_job.sexskill_mod * _above_skill_mod) + _libidoGold)>>
GOLD: _gold_earned
<<set _above_skill_bool to true>>
LUST ENERGY
<<set _libidinousAmount to Math.round(_libidinousAmount * _libidinousMod)>>
<<elseif _sex_skill < _required_skill - $cur_job.range_skill>>
APPLY SEX SKILL MOD PLUS BELOW SEX SKILL PENALTY
<<set _gold_earned += Math.round((($cur_slave[_chosen_sex]).clamp(0, $cur_job.stat_cap) * $cur_job.sexskill_mod * _below_skill_mod) + _libidoGold)>>
GOLD: _gold_earned
<<set _below_skill_bool to true>>
LUST ENERGY
<<set _libidinousAmount to Math.round(_libidinousAmount / _libidinousMod)>>
<<else>>
APPLY SEX SKILL MOD WITH NO OTHER MODS
<<set _gold_earned += Math.round((($cur_slave[_chosen_sex]).clamp(0, $cur_job.stat_cap) * $cur_job.sexskill_mod) + _libidoGold)>>
GOLD: _gold_earned
<</if>>
LIBIDO EXP
<<set _libido_exp to clone($cur_job.libido_exp)>>
<<SlaveLibidoGrowth $cur_slave _libido_exp>>
OBEDIENCE EXP
<<set _obedience_exp to clone($cur_job.obedience_exp)>>
<<SlaveObedienceGrowth $cur_slave _obedience_exp>>
SEX SKILL EXP
<<set _sexskill_exp to clone($cur_job.sexskill_exp)>>
<<SexSkillGrowth $cur_slave _sexskill_exp _chosen_sex>>
<<elseif _client_type === "Rape Failed">>
SET SEX TYPE
<<set _chosen_sex to "">>
UPDATE STRESS
<<set _stress_amount += Math.round(_stress_amount * _incident_stress)>>
INTELLIGENCE EXP
<<set _intelligence_exp to Math.round($cur_job.intelligence_exp * _rape_exp_mod)>>
<<SlaveIntelligenceGrowth $cur_slave _intelligence_exp>>
OBEDIENCE EXP
<<set _obedience_exp to clone($cur_job.obedience_exp)>>
<<SlaveObedienceGrowth $cur_slave _obedience_exp>>
NO GOLD EARNED
<<set _gold_earned to 0>>
<<elseif _client_type === "Rape Attempt">>
SET SEX TYPE
<<set _chosen_sex to _rape_list.random()>>
UPDATE STRESS
<<set _stress_amount += Math.round(_stress_amount * _incident_stress)>>
LUST ENERGY
<<set _libidinousAmount += _libidinousInt>>
NO GOLD EARNED
<<set _gold_earned to 0>>
LIBIDO EXP
<<set _libido_exp to Math.round($cur_job.libido_exp * _rape_libido_mod)>>
<<SlaveLibidoGrowth $cur_slave _libido_exp>>
STRENGTH EXP
<<set _strength_exp to Math.round($cur_job.strength_exp * _rape_exp_mod)>>
<<SlaveStrengthGrowth $cur_slave _strength_exp>>
SEX SKILL EXP
<<set _sexskill_exp to Math.round($cur_job.sexskill_exp * _rape_sexskill_mod)>>
<<SexSkillGrowth $cur_slave _sexskill_exp _chosen_sex>>
INJURY CHECK
<<SlaveInjuryCheck $cur_slave $cur_job.injury_rate $cur_job>>
<<elseif _client_type === "None">>
<<set _gold_earned to 0>>
UPDATE STRESS
<<set _stress_amount -= Math.round(_stress_amount * _no_client_stress_mod)>>
<</if>>
* Virgin Check *
<<if _client_type === "Group">>
<<for _z = 0; _z < _group_sex_list.length; _z++>>
<<SlaveVirginCheck $cur_slave _group_sex_list[_z] $cur_job.type>>
<</for>>
<<elseif _client_type != "None" || _client_type != "Rape Failed">>
<<SlaveVirginCheck $cur_slave _chosen_sex $cur_job.type>>
<</if>>
* Flirtatious Trait *
<<if $cur_slave.trait_names.includes("Flirtatious") && (_client_type === "Normal" || _client_type === "Group")>>
<<set _flirtatious_amount to Math.round((setup.flirtatious.base_rep + ($cur_slave.libido * setup.flirtatious.libido_mod)) * setup.obedienceCheckOutcome[_obedience_result])>> _flirtatious_amount
<<set _slave_triggers.trait.flirtatious += _flirtatious_amount>>
INCREASE STATS
<<set $cur_slave.total_reputation += _flirtatious_amount>>
<</if>>
* Libidinous Trait *
<<if $cur_slave.trait_names.includes("Libidinous") && _libidinousAmount > 0>>
<<set _slave_triggers.trait.libidinous += _libidinousAmount>>
<<for _z = 0; _z < $cur_slave.traits.length; _z++>>
<<if $cur_slave.traits[_z].name === "Libidinous">>
<<set $cur_slave.traits[_z].stack += _libidinousAmount>>
<<if $cur_slave.traits[_z].stack >= $cur_slave.traits[_z].max_stack>>
<<set $cur_slave.traits[_z].stack -= $cur_slave.traits[_z].max_stack>>
<<set $pc_lust++>>
<<set $pc_lust_gained++>>
<<set _slave_triggers.earned.le++>>
<</if>>
<<break>>
<</if>>
<</for>>
<</if>>
* Set Picture *
<<if _chosen_sex === "">>
<<set _pic to $cur_slave.body_pic>>
<<elseif _chosen_sex != "">>
<<set _pic to $cur_slave.slave_pack[_chosen_sex].random()>>
<</if>>
* Slave Stats *
<<set $cur_slave.total_jobs++>>
<<set $cur_slave.total_gold += _gold_earned>>
<<set $slaves_gold_earned += _gold_earned>>
<<set $slaves_task_stats.job++>>
* All Slave Stats *
<<set $slaves_sex_stats[_chosen_sex]++>>
<<set $slaves_sex_stats.total++>>
<<set $slaves_task_stats[$cur_job.type.toLowerCase()]++>>
<<set $slaves_gold_earned += _gold_earned>>
* Add Gold and Rep*
<<if _gold_earned > 0>>
* BLESSING *
GODDESS'S DEVOTION
<<set _blessing to $pc_blessing_list.delete("Goddess's Devotion I", "Goddess's Devotion II", "Goddess's Devotion III", "Goddess's Devotion IV", "Goddess's Devotion V")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.devotion.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.devotion[_z].name)>>
<<set _gold_earned += (Math.round(_gold_earned * setup.allBlessingList.devotion[_z].float)).clamp(1, 1000000)>>
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
* POSITIVE TRAITS *
SEXY
<<if $cur_slave.trait_names.includes("Sexy")>>
TRIGGERED
<<set _gold_earned += (Math.round(_gold_earned * setup.sexy.float)).clamp(1, 1000000)>>
<</if>>
SEDUCTRESS
<<if $cur_slave.trait_names.includes("Seductress")>>
TRIGGERED
<<set _gold_earned += (Math.round(_gold_earned * setup.seductress.float)).clamp(1, 1000000)>>
<</if>>
* NEGATIVE TRAITS *
SLUTTY
<<if $cur_slave.trait_names.includes("Slutty")>>
TRIGGERED
<<set _gold_earned -= (Math.round(_gold_earned * setup.slutty.gold_float)).clamp(1, 1000000)>>
<</if>>
GOLD EARNED: _gold_earned
<</if>>
<<set $pc_gold += _gold_earned>> PLAYER EARNED _gold_earned GOLD
<<set $flirtatious_rep_amount += _slave_triggers.trait.flirtatious>>
* Add Stress *
SLUTTY REDUCES STRESS
<<if $cur_slave.trait_names.includes("Slutty")>>
<<set _stress_amount -= (Math.round(_stress_amount * setup.slutty.stress_float)).clamp(1, 1000000)>>
<</if>>
CONVICTION OF LOYALTY
<<if $cur_slave.job != "" && $cur_slave.side_job != "" && $pc_blessing_list.includes("Conviction of Loyalty")>>
REDUCE STRESS
<<set _stress_amount -= (Math.round(_stress_amount * setup.blessing_07_12.float)).clamp(1, 1000000)>>
<</if>>
<<SlaveStressCalc $cur_slave _stress_amount "Gained">>
* Daily Stats *
<<set $slave_job_gold += _gold_earned>>
* Create Report *
<<if $cur_job.buddy_system_bool === true>>
<<set _outcome to "While Prostituting in "+$cur_job.location+" with a buddy,">>
<<else>>
<<set _outcome to "While Prostituting in "+$cur_job.location+",">>
<</if>>
<<switch _client_type>>
<<case "Group">>
<<switch _group_count>>
<<case 1>>
<<set _outcome += " she was approached by a group of men who were all interested in her service. She was only able to handle one before giving up.">>
<<case 2 3 4>>
<<set _outcome += " she was approached by a group of men who were all interested in her service. She pleasured "+_group_count+" of them before she reached her limit.">>
<<default>>
<<set _outcome += " she was approached by a group of men who were all interested in her service. She pleased all "+_group_count+" of them.">>
<</switch>>
<<if _obedience_result === 1>>
<<set _outcome += " She showed good resolve and commitment during her group service and earned @@.gold;"+_gold_earned+" Gold@@ from the men.">>
<<else>>
<<set _outcome += " Her commitment not great and it showed in her endurance and performance. She earned @@.gold;"+_gold_earned+" Gold@@ from the group.">>
<</if>>
<<case "Rape Failed">>
<<set _outcome += " she was approached by a shady looking man who wanted to pay for her services. She declined and ran away before he was able to attack her.">>
<<case "Rape Attempt">>
<<set _outcome += " she was approached by a shady looking man who wanted to pay for her services. She agreed without knowing any better and got taken advantage of.">>
<<case "Normal">>
<<if _chosen_sex === _desired_sex>>
<<if _desired_sex === "blowjob" || _desired_sex === "handjob" || _desired_sex === "titjob" || _desired_sex === "footjob">>
<<set _outcome += " she was approached by a client who wanted to receive a " + _desired_sex + ". She was happy to give him one.">>
<<elseif _desired_sex === "missionary">>
<<set _outcome += " she was approached by a client who wanted to fuck her. She accepted his request.">>
<<elseif _desired_sex === "cowgirl">>
<<set _outcome += " she was approached by a client who wanted her to ride him. She did what he asked.">>
<<elseif _desired_sex === "doggy">>
<<set _outcome += " she was approached by a client who wanted to bend her over. She accepted as she get on all fours.">>
<<elseif _desired_sex === "anal">>\
<<set _outcome += " she was approached by a client who wanted to fuck her ass. She accepted his request.">>
<</if>>\
<<elseif $cur_job.sex_list.includes(_chosen_sex)>>
<<if _desired_sex === "blowjob" || _desired_sex === "handjob" || _desired_sex === "titjob" || _desired_sex === "footjob">>
<<set _outcome += " she was approached by a client who wanted to receive a " + _desired_sex + ".">>
<<elseif _desired_sex === "missionary">>
<<set _outcome += " she was approached by a client who wanted to fuck her.">>
<<elseif _desired_sex === "cowgirl">>
<<set _outcome += " she was approached by a client who wanted her to ride him.">>
<<elseif _desired_sex === "doggy">>
<<set _outcome += " she was approached by a client who wanted to bend her over.">>
<<elseif _desired_sex === "anal">>\
<<set _outcome += " she was approached by a client who wanted to fuck her ass.">>
<</if>>\
<<if _chosen_sex === "blowjob" || _chosen_sex === "handjob" || _chosen_sex === "titjob" || _chosen_sex === "footjob">>
<<set _outcome += " She was not comfortable with their request. Instead, he agreed to receiving a " + _chosen_sex + ".">>
<<elseif _chosen_sex === "missionary" || _chosen_sex === "doggy">>
<<set _outcome += " She was not comfortable with their request. Instead, he agreed to fucking her " + _chosen_sex + " style.">>
<<elseif _chosen_sex === "cowgirl">>
<<set _outcome += " She was not comfortable with their request. Instead, he agreed to letting her ride his cock.">>
<<elseif _chosen_sex === "anal">>\
<<set _outcome += " She was not comfortable with their request. Instead, he agreed to fucking her ass.">>
<</if>>\
<<else>>
<<if _desired_sex === "blowjob" || _desired_sex === "handjob" || _desired_sex === "titjob" || _desired_sex === "footjob">>
<<set _outcome += " she was approached by a client who wanted to receive a " + _desired_sex + ".">>
<<elseif _desired_sex === "missionary">>
<<set _outcome += " she was approached by a client who wanted to fuck her.">>
<<elseif _desired_sex === "cowgirl">>
<<set _outcome += " she was approached by a client who wanted her to ride him.">>
<<elseif _desired_sex === "doggy">>
<<set _outcome += " she was approached by a client who wanted to bend her over.">>
<<elseif _desired_sex === "anal">>\
<<set _outcome += " she was approached by a client who wanted to fuck her ass.">>
<</if>>\
<<if _chosen_sex === "blowjob" || _chosen_sex === "handjob" || _chosen_sex === "titjob" || _chosen_sex === "footjob">>
<<set _outcome += " She was not comfortable with any of their requests. He finally gave in and accepted a " + _chosen_sex + ".">>
<<elseif _chosen_sex === "missionary" || _chosen_sex === "doggy">>
<<set _outcome += " She was not comfortable with any of their requests. He finally gave in and accepted fucking her " + _chosen_sex + " style.">>
<<elseif _chosen_sex === "cowgirl">>
<<set _outcome += " She was not comfortable with any of their requests. He finally gave in and accepted letting her ride his cock.">>
<<elseif _chosen_sex === "anal">>\
<<set _outcome += " She was not comfortable with any of their requests. He finally gave in and accepted fucking her ass.">>
<</if>>\
<</if>>
<<if _above_skill_bool === true && _obedience_result === 1>>
<<set _outcome += " She showed great effort and impressed her client with her skill. He paid her @@.gold;"+_gold_earned+" Gold@@ for her services.">>
<<elseif _above_skill_bool === true && _obedience_result === 0>>
<<set _outcome += " While her skills her enough to impress her client, she could have put more effort in. He paid her @@.gold;"+_gold_earned+" Gold@@.">>
<<elseif _below_skill_bool === true && _obedience_result === 1>>
<<set _outcome += " Although she tried her best, her skills were lacking. He paid her @@.gold;"+_gold_earned+" Gold@@.">>
<<elseif _below_skill_bool === true && _obedience_result === 0>>
<<set _outcome += " She showed little effort and her service was terrible, making the client very unhappy. He only paid her @@.gold;"+_gold_earned+" Gold@@.">>
<<elseif _obedience_result === 1>>
<<set _outcome += " She showed her client and great time and satisfied him with her service. He paid her @@.gold;"+_gold_earned+" Gold@@.">>
<<elseif _obedience_result === 0>>
<<set _outcome += " Though her service was fine, she didn't show much interest in pleasing him. He paid her @@.gold;"+_gold_earned+" Gold@@.">>
<</if>>
<<case "None">>
<<if _obedience_result === 0>>
<<set _outcome += " she wandered around aimlessly instead of promoting her service and, as a result, found no client.">>
<<else>>
<<set _outcome += " she approached many men about her service, but nobody was interested. She ended the night without finding a client.">>
<</if>>
<</switch>>
<<set _reward_text to []>>
<<if _slave_triggers.trait.flirtatious > 0>>
<<if _reward_text.length === 0>>
<<set _reward_text.push(" She also earned @@.rep;"+_slave_triggers.trait.flirtatious+" Reputation@@")>>
<<else>>
<<set _reward_text.push(" @@.rep;"+_slave_triggers.trait.flirtatious+" Reputation@@")>>
<</if>>
<</if>>
<<if _slave_triggers.trait.libidinous > 0>>
<<if _reward_text.length === 0>>
<<set _reward_text.push(" She also gained @@.lust-energy;"+_slave_triggers.trait.libidinous+" Lust Energy@@")>>
<<else>>
<<set _reward_text.push(" gained @@.lust-energy;"+_slave_triggers.trait.libidinous+" Lust Energy@@")>>
<</if>>
<</if>>
<<if _slave_triggers.earned.le > 0>>
<<if _reward_text.length === 0>>
<<set _reward_text.push(" She also granted you @@.le;"+_slave_triggers.earned.le+" Lust Essence@@")>>
<<else>>
<<set _reward_text.push(" granted you @@.le;"+_slave_triggers.earned.le+" Lust Essence@@")>>
<</if>>
<</if>>
ADD REWARD TEXT
<<if _reward_text.length === 1>>
<<set _outcome += _reward_text + ".">>
<<elseif _reward_text.length === 2>>
<<set _last_text to _reward_text.pop()>>
<<set _outcome += _reward_text + " and" + _last_text + ".">>
<<elseif _reward_text.length > 2>>
<<set _last_text to _reward_text.pop()>>
<<set _outcome += _reward_text + ", and" + _last_text + ".">>
<</if>>
UPDATE REPORT
<<if $cur_slave.side_job.name === $cur_job.name>>
<<set $cur_slave.report.stress_gained += _slave_triggers.general.stress_gained>>
<<set $cur_slave.report.side_outcome to _outcome>>
<<else>>
<<set $cur_slave.report.type to "Prostitution">>
<<set $cur_slave.report.job_type to $cur_job.job_type>>
<<set $cur_slave.report.stress_gained += _slave_triggers.general.stress_gained>>
<<set $cur_slave.report.outcome to _outcome>>
<</if>>
<<UpdateSlaveReport $cur_slave>>
* Update Job List *
<<if ($cur_slave.disobedient === true || $cur_slave.injured === true) && $cur_slave.side_job != "">>
<<RemoveSlaveJob $cur_job.slave_index>>
<</if>>
* Set Next Link *
<<if $cur_slave_jobs.length > 0>>
<<set $next_job to $cur_slave_jobs.pluck()>>
<<set $link to $next_job.passage>>
<<else>>
<<set $link to "Raiding Party">>
<<unset $next_job>>
<</if>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
$cur_job.name
</div>\
<div class="imagebox">\
_pic
</div>\
<div class="textbox">\
_outcome
<<SlaveText $cur_slave>>
</div>\
<div class="exit-link-right">\
<<if $link === "Raiding Party">>\
<span id="forward"><<button [[Begin Raid|$link]]>><<unset $link, $cur_job, $next_job>><</button>></span>
<<else>>\
<span id="forward"><<button [[Next Job|$link]]>><<set $cur_job to $next_job>><<unset $link>><</button>></span>
<</if>>\
</div>\
</div>\<<silently>>\
*Variables*
<<set $slave_market_news to false>> remove notification of new slaves in dungeon news
<<if $slave_info == null>>
<<set $slave_info to "Stats">>
<</if>>
<<set _slaves_per_page to 6>> the number of slaves that can be on each page, starting count from 0
<<if $slave_market_page == null>>
<<set $slave_market_page to 0>>
<</if>>
<<set _start_pos to _slaves_per_page * $slave_market_page>> Set where to start the list based on what the page is
<<if _start_pos + _slaves_per_page < $slave_market_list.length>>
<<set _end_pos to _start_pos + _slaves_per_page>> Set where to end the list based on what the page is
<<else>>
<<set _end_pos to $slave_market_list.length>>
<</if>>
*Available Room Check*
<<set $open_room to "">>
<<for _i = 0; _i < $slave_room_list.length; _i++>>
<<if $slave_room_list[_i].room_type === "Empty">>
<<if $slave_room_list[_i].built === true>>
<<set $open_room to _i>>
<<break>>
<</if>>
<</if>>
<</for>>
*Display*
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Slave Market]]>><<unset $slave_market_page, $slave_info>><</button>></span> <span id="q"><<button "<u>Q</u>uick Menu" "Quick Menu">><<unset $slave_market_page, $slave_info>><</button>></span>\
</div>\
<div class="titlebox">\
<<if $slave_market_list.length > 0>>\
Slaves For Sale
<<else>>\
No Slaves For Sale
<</if>>\
</div>\
<div class="container-marketstats">\
<div class="infobox-goldstat-buyslaves">\
<u>Most Valued Stat and Skill</u>
$most_valued_stat, $most_valued_skill
</div>\
<div class="infobox-redstat-buyslaves">\
<u>Hot Traits</u>
<<hovertip "<<print $hot_traits[0].tooltip>>">><<print $hot_traits[0].name>><</hovertip>>, <<hovertip "<<print $hot_traits[1].tooltip>>">><<print $hot_traits[1].name>><</hovertip>>, <<hovertip "<<print $hot_traits[2].tooltip>>">><<print $hot_traits[2].name>><</hovertip>>
</div>\
<div class="infobox-bluestat-buyslaves">\
<u>Least Valued Stat and Skill</u>
$least_valued_stat, $least_valued_skill
</div>\
</div>\
<div class="pagebox-buyslaves">\
<div class="pagecells-buyslaves">\
<span id="v">\
<<if $slave_info === "Stats">>\
<<button "<u>V</u>iew Skills" "Buy Slave">><<set $slave_info to "Skills">><</button>>
<<elseif $slave_info === "Skills">>\
<<button "<u>V</u>iew Stats" "Buy Slave">><<set $slave_info to "Stats">><</button>>
<</if>>\
</span>
</div>\
<div class="pagecells-buyslaves">\
<<if $slave_market_page > 0>>\
<span id="left"><<button [[Previous Page|Buy Slave]]>><<set $slave_market_page-->><</button>></span>
<<else>>\
<div class="offbutton">\
<<button "Previous Page">><</button>>
</div>\
<</if>>\
</div>\
<div class="pagecells-buyslaves">\
<<set _cur_page to $slave_market_page + 1>>\
<<set _tot_pages to Math.trunc(($slave_market_list.length / _slaves_per_page) + 0.99)>>\
Page _cur_page of _tot_pages
</div>\
<div class="pagecells-buyslaves">\
<<if $slave_market_list.length > _end_pos>>\
<span id="right"><<button [[Next Page|Buy Slave]]>><<set $slave_market_page++>><</button>></span>
<<else>>\
<div class="offbutton">\
<<button "Next Page">><</button>>
</div>\
<</if>>\
</div>\
</div>\
<div class="slavebox-buyslaves">\
<<if $slave_market_list.length === 0>>\
<<silently>>\
OUT OF SLAVES
<</silently>>\
<<else>>\
<<for _i = _start_pos; _i < _end_pos; _i++>>\
<<silently>>\
*Set Hotkey*
<<set _hotKey to (_i % 6) + 1>>
HOTKEY IS _hotKey
*Find Cost*
<<SlaveValueCalc $slave_market_list[_i] "Buying">>
<</silently>>\
<div class="cellholder-slaves-slavecard">\
<div class="cell-slaves-slavecard">\
<div class="picholder-cells-slavecard">\
$slave_market_list[_i].pic
</div>\
<div class="textholder-cells-slavecard">\
<div class="title-cells-slavecard">\
<strong>$slave_market_list[_i].name</strong>\
</div>\
<<if $slave_info === "Stats">>\
<div class="stats-cells-slavecard">\
<<hovertip "<<- setup.slave_stats.love.tooltip>>">><<-setup.slave_stats.love.icon>><</hovertip>>
<<hovertip "EXP: $slave_market_list[_i].love_tracker / $slave_market_list[_i].love_tracker_limit<br>Max: $slave_market_list[_i].love_limit">><span style="color:crimson">$slave_market_list[_i].love</span><</hovertip>>
</div>\
<div class="stats-cells-slavecard">\
<<hovertip "<<- setup.slave_stats.obedience.tooltip>>">><<-setup.slave_stats.obedience.icon>><</hovertip>>
<<hovertip "EXP: $slave_market_list[_i].obedience_tracker / $slave_market_list[_i].obedience_tracker_limit<br>Max: $slave_market_list[_i].obedience_limit">><span style="color:cyan">$slave_market_list[_i].obedience</span><</hovertip>>
</div>\
<div class="stats-cells-slavecard">\
<<hovertip "<<- setup.slave_stats.libido.tooltip>>">><<-setup.slave_stats.libido.icon>><</hovertip>>
<<hovertip "EXP: $slave_market_list[_i].libido_tracker / $slave_market_list[_i].libido_tracker_limit<br>Max: $slave_market_list[_i].libido_limit">><span style="color:fuchsia">$slave_market_list[_i].libido</span><</hovertip>>
</div>\
<div class="stats-cells-slavecard">\
<<hovertip "<<- setup.slave_stats.strength.tooltip>>">><<-setup.slave_stats.strength.icon>><</hovertip>>
<<hovertip "EXP: $slave_market_list[_i].strength_tracker / $slave_market_list[_i].strength_tracker_limit<br>Max: $slave_market_list[_i].strength_limit">><span style="color:orange">$slave_market_list[_i].strength</span><</hovertip>>
</div>\
<div class="stats-cells-slavecard">\
<<hovertip "<<- setup.slave_stats.intelligence.tooltip>>">><<-setup.slave_stats.intelligence.icon>><</hovertip>>
<<hovertip "EXP: $slave_market_list[_i].intelligence_tracker / $slave_market_list[_i].intelligence_tracker_limit<br>Max: $slave_market_list[_i].intelligence_limit">><span style="color:darkorchid">$slave_market_list[_i].intelligence</span><</hovertip>>
</div>\
<div class="stats-cells-slavecard">\
<<hovertip "<<- setup.slave_stats.stress.tooltip>>">><<-setup.slave_stats.stress.icon>><</hovertip>>
<strong><span style="color:slategray">$slave_market_list[_i].cur_stress</span></strong>
</div>\
<div class="traits-cells-slavecard">\
<<for _t = 0; _t < $slave_market_list[_i].traits.length; _t++>>\
<<print '<span style="color:'+$slave_market_list[_i].traits[_t].color+'"><<hovertip "$slave_market_list[_i].traits[_t].tooltip">>$slave_market_list[_i].traits[_t].name<</hovertip>></span>'>><<if _t + 1 < $slave_market_list[_i].traits.length>>, <</if>>\
<</for>>\
</div>\
<<elseif $slave_info === "Skills">>\
<div class="skills-cell-slavecard">\
<<hovertip "EXP: $slave_market_list[_i].handjob_tracker / $slave_market_list[_i].handjob_tracker_limit<br>Max: $slave_market_list[_i].handjob_limit">>Handjob
$slave_market_list[_i].handjob<</hovertip>>
</div>\
<div class="skills-cell-slavecard">\
<<hovertip "EXP: $slave_market_list[_i].blowjob_tracker / $slave_market_list[_i].blowjob_tracker_limit<br>Max: $slave_market_list[_i].blowjob_limit">>Blowjob
$slave_market_list[_i].blowjob<</hovertip>>
</div>\
<div class="skills-cell-slavecard">\
<<hovertip "EXP: $slave_market_list[_i].titjob_tracker / $slave_market_list[_i].titjob_tracker_limit<br>Max: $slave_market_list[_i].titjob_limit">>Titjob
$slave_market_list[_i].titjob<</hovertip>>
</div>\
<div class="skills-cell-slavecard">\
<<hovertip "EXP: $slave_market_list[_i].footjob_tracker / $slave_market_list[_i].footjob_tracker_limit<br>Max: $slave_market_list[_i].footjob_limit">>Footjob
$slave_market_list[_i].footjob<</hovertip>>
</div>\
<div class="skills-cell-slavecard">\
<<hovertip "EXP: $slave_market_list[_i].missionary_tracker / $slave_market_list[_i].missionary_tracker_limit<br>Max: $slave_market_list[_i].missionary_limit">>Missionary
$slave_market_list[_i].missionary<</hovertip>>
</div>\
<div class="skills-cell-slavecard">\
<<hovertip "EXP: $slave_market_list[_i].cowgirl_tracker / $slave_market_list[_i].cowgirl_tracker_limit<br>Max: $slave_market_list[_i].cowgirl_limit">>Cowgirl
$slave_market_list[_i].cowgirl<</hovertip>>
</div>\
<div class="skills-cell-slavecard">\
<<hovertip "EXP: $slave_market_list[_i].doggy_tracker / $slave_market_list[_i].doggy_tracker_limit<br>Max: $slave_market_list[_i].doggy_limit">>Doggy
$slave_market_list[_i].doggy<</hovertip>>
</div>\
<div class="skills-cell-slavecard">\
<<hovertip "EXP: $slave_market_list[_i].anal_tracker / $slave_market_list[_i].anal_tracker_limit<br>Max: $slave_market_list[_i].anal_limit">>Anal
$slave_market_list[_i].anal<</hovertip>>
</div>\
<</if>>\
<div class="value-cells-slavecard">\
Cost: <span style="color:gold">$slave_market_list[_i].value</span>\
</div>\
<div class="value-cells-slavecard">\
Upkeep: <span style="color:gold">$slave_market_list[_i].upkeep</span>\
</div>\
<div class="button-cells-slavecard">\
<<if $pc_gold < $slave_market_list[_i].value>>\
<div class="offbutton">\
<<hovertip "Can't Afford">><<button "Buy Slave">><</button>><</hovertip>>
</div>\
<<elseif $open_room === "">>\
<div class="offbutton">\
<<hovertip "No Open Rooms">><<button "Buy Slave">><</button>><</hovertip>>
</div>\
<<else>>\
<<set _link to "Buy Slave ^^_hotKey^^">>\
<<capture _i, _hotKey, _link>>\
<span @id="_hotKey"><<button "Buy Slave <sup>_hotKey</sup>" "Confirm Buy Slave">>\
<<silently>>\
SET SLAVE, INDEX, AND COST
<<set $cur_slave to $slave_market_list[_i]>>
<<set $index to _i>>
<</silently>>\
<</button>></span>\
<</capture>>\
<</if>>\
</div>\
</div>\
</div>\
</div>\
<</for>>\
<</if>>\
</div>\
</div>\<<silently>>\
* Variables *
<<GoddessCreatureList>>
<<set _units_per_page to 8>> amount increased or decreased from display
<<set _units_per_area to 4>>
<<if $creature_page == null>>
<<set $creature_page to 0>>
<</if>>
<<set _start_pos to _units_per_page * $creature_page>> Set where to start the list based on what the page is
<<set _end_pos to _start_pos + _units_per_page>> Set where to end the list based on what the page is
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Goddess's Creatures
</div>\
<div class="sidebutton-newroom">\
<<if $creature_page === 0>>\
<div class="tallbutton-off">\
<<button "<">><</button>>\
</div>\
<<else>>\
<div class="tallbutton">\
<span id="left"><<button [[<|Buy Creature]]>><<set $creature_page++>><</button>></span>
</div>\
<</if>>\
</div>\
<div class="cardcontainer-newroom">\
<div class="cardholder-newroom">\
<<for _i = _start_pos; _i < _end_pos - _units_per_area && _i < _goddessCreatureList.length; _i++>>\
<<set _hotKey to (_i % 4) + 1>>\
<<set _shiftKey to "shift" + _hotKey>>\
<<silently>>\
SET BASE COST
<<set _cost to clone(_goddessCreatureList[_i].cost)>>
ESSENCE OF ENTITLEMENT
<<if $pc_blessing_list.includes("Essence of Entitlement")>>
REDUCE COST
<<set _cost -= setup.blessing_01_11.int>>
<</if>>
SET COST
<<if $free_room_count > 0>>
<<set _cost to 0>>
<</if>>
<</silently>>\
<<capture _i, _hotKey, _shiftKey>>\
<div class="cellholder-newroom">\
<div class="cells-newroom">\
<div class="cell-title-newroom">\
_goddessCreatureList[_i].name
</div>\
<div class="cell-pic-newroom">\
_goddessCreatureList[_i].pic
</div>\
<div class="cell-text-newroom">\
<span @id="_shiftKey"><<button "[img[images/icons/desc_icon.png]]^^[_hotKey]^^" "Creature Preview">><<set $preview to _goddessCreatureList[_i]>><<set $return to "Buy Creature">><</button>></span>\
<<if $pc_lust >= _cost>>\
<<button "_cost Lust Essence ^^_hotKey" "Ahri's Teachings">>\
<<silently>>\
REDUCE LE FROM COST
<<set $pc_lust -= _cost>>
<<set $pc_lust_spent += _cost>>
REDUCE FREE ROOM COUNT
<<if $free_room_count > 0 && _cost === 0>>
<<set $free_room_count-->>
<</if>>
GODDESS QUEST
<<set $goddessQuestUnlock += _cost>>
ADD CREATURE ROOM TO OWNED LIST
<<set $pc_creature_list.push(_goddessCreatureList[_i].base_name)>>
SET NEXT PASSAGE ROOM
<<set $ahri_teachings to "Creature">>
<<unset $creature_page>>
<</silently>>\
<</button>>
<<else>>\
<div class="offbutton">\
<<button "_cost Lust Essence">><</button>>
</div>\
<</if>>\
</div>\
</div>\
</div>\
<</capture>>\
<</for>>\
</div>\
<div class="cardholder-newroom">\
<<for _i = _start_pos + _units_per_area; _i < _end_pos && _i < _goddessCreatureList.length; _i++>>\
<<set _hotKey to (_i % 4) + 5>>\
<<set _shiftKey to "shift"+_hotKey>>\
<<silently>>\
SET BASE COST
<<set _cost to clone(_goddessCreatureList[_i].cost)>>
ESSENCE OF ENTITLEMENT
<<if $pc_blessing_list.includes("Essence of Entitlement")>>
REDUCE COST
<<set _cost -= setup.blessing_01_11.int>>
<</if>>
SET COST
<<if $free_room_count > 0>>
<<set _cost to 0>>
<</if>>
<</silently>>\
<<capture _i, _hotKey, _shiftKey>>\
<div class="cellholder-newroom">\
<div class="cells-newroom">\
<div class="cell-title-newroom">\
_goddessCreatureList[_i].name
</div>\
<div class="cell-pic-newroom">\
_goddessCreatureList[_i].pic
</div>\
<div class="cell-text-newroom">\
<span @id="_shiftKey"><<button "[img[images/icons/desc_icon.png]]^^[_hotKey]^^" "Creature Preview">><<set $preview to _goddessCreatureList[_i]>><<set $return to "Buy Creature">><</button>></span>\
<<if $pc_lust >= _cost>>\
<<button "_cost Lust Essence ^^_hotKey" "Ahri's Teachings">>\
<<silently>>\
REDUCE LE FROM COST
<<set $pc_lust -= _cost>>
<<set $pc_lust_spent += _cost>>
REDUCE FREE ROOM COUNT
<<if $free_room_count > 0 && _cost === 0>>
<<set $free_room_count-->>
<</if>>
GODDESS QUEST
<<set $goddessQuestUnlock += _cost>>
ADD CREATURE ROOM TO OWNED LIST
<<set $pc_creature_list.push(_goddessCreatureList[_i].base_name)>>
SET NEXT PASSAGE ROOM
<<set $ahri_teachings to "Creature">>
<<unset $creature_page>>
<</silently>>\
<</button>>
<<else>>\
<div class="offbutton">\
<<button "_cost Lust Essence">><</button>>
</div>\
<</if>>\
</div>\
</div>\
</div>\
<</capture>>\
<</for>>\
</div>\
</div>\
<div class="sidebutton-newroom">\
<<if _end_pos >= _goddessCreatureList.length>>\
<div class="tallbutton-off">\
<<button ">">><</button>>\
</div>\
<<else>>\
<div class="tallbutton">\
<span id="right"><<button [[>|Buy Creature]]>><<set $creature_page-->><</button>></span>
</div>\
<</if>>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Ahri's Quarters]]>><<unset $creature_page>><</button>></span>
<div>\
</div>\<<silently>>\
* Variables *
* Set Goddess Blessing List *
<<set _goddess_blessing_list to setup.allBlessingList.gift.concat(setup.allBlessingList.sorcery, setup.allBlessingList.mastery, setup.allBlessingList.power, setup.allBlessingList.endurance, setup.allBlessingList.ingenuity, setup.allBlessingList.devotion, setup.allBlessingList.charm, setup.allBlessingList.technique)>>
CLEAN UP LIST
<<for _z = 0; _z < _goddess_blessing_list.length; _z++>>
<<if $filter_locked === true && (_goddess_blessing_list[_z].rank > $dungeon_rank || (!$blessing_bought_list.includesAll(_goddess_blessing_list[_z].req) && _goddess_blessing_list[_z].req.length > 0))>>
LOCKED _goddess_blessing_list[_z].name WAS FILTERED
<<set _remove to _goddess_blessing_list.deleteAt(_z)>>
<<set _z-->>
<<continue>>
<</if>>
<<if !$filter_blessing.includesAny(_goddess_blessing_list[_z].type) && $filter_blessing.length > 0>>
FILTERED _goddess_blessing_list[_z].name OUT
<<set _remove to _goddess_blessing_list.deleteAt(_z)>>
<<set _z-->>
<<continue>>
<</if>>
<<if !$blessing_bought_list.includesAll(_goddess_blessing_list[_z].unlock) && _goddess_blessing_list[_z].unlock.length > 0>>
REMOVE _goddess_blessing_list[_z].name, REQUIRES _goddess_blessing_list[_z].unlock
<<set _remove to _goddess_blessing_list.deleteAt(_z)>>
<<set _z-->>
<<continue>>
<</if>>
<<if $blessing_bought_list.includes(_goddess_blessing_list[_z].name)>>
REMOVE _goddess_blessing_list[_z].name FOR ALREADY BEING BOUGHT
<<set _remove to _goddess_blessing_list.deleteAt(_z)>>
<<set _z-->>
<<continue>>
<</if>>
ADDED _goddess_blessing_list[_z].name TO LIST
<</for>>
* Blessing Page *
<<set _spells_per_page to 9>> the number of slaves that can be on each page, starting count from 0
<<if $blessing_page == null>>
<<set $blessing_page to 0>>
<</if>>
<<set _start_pos to _spells_per_page * $blessing_page>> Set where to start the list based on what the page is
<<if _start_pos + _spells_per_page < _goddess_blessing_list.length>>
<<set _end_pos to _start_pos + _spells_per_page>> Set where to end the list based on what the page is
<<else>>
<<set _end_pos to _goddess_blessing_list.length>>
<</if>>
<<if _start_pos >= _end_pos && $blessing_page !== 0>>
<<set $blessing_page-->>
<<set _start_pos to _spells_per_page * $blessing_page>>
<</if>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
<strong>Goddess's Blessings</strong>
</div>\
<div class="buttonbox-spellbook">\
<div class="buttonholder-spellbook">\
<<if $filter_blessing.includes("Player")>>\
<span id="p"><<button "<u>P</u>layer" "Buy Blessing">><<set _clear to $filter_blessing.delete("Player")>><<set $blessing_page to 0>><</button>></span>
<<else>>\
<div class="transparent-button">\
<span id="p"><<button "<u>P</u>layer" "Buy Blessing">>\
<<silently>>\
<<set $filter_blessing.push("Player")>>
<<if $filter_blessing.length >= 3>>
<<set $filter_blessing to []>>
<</if>>
<<set $blessing_page to 0>>
<</silently>>\
<</button>></span>
</div>\
<</if>>\
</div>\
<div class="buttonholder-spellbook">\
<<if $filter_blessing.includes("Dungeon")>>\
<span id="d"><<button "<u>D</u>ungeon" "Buy Blessing">><<set _clear to $filter_blessing.delete("Dungeon")>><<set $blessing_page to 0>><</button>></span>
<<else>>\
<div class="transparent-button">\
<span id="d"><<button "<u>D</u>ungeon" "Buy Blessing">>\
<<silently>>\
<<set $filter_blessing.push("Dungeon")>>
<<if $filter_blessing.length >= 3>>
<<set $filter_blessing to []>>
<</if>>
<<set $blessing_page to 0>>
<</silently>>\
<</button>></span>
</div>\
<</if>>\
</div>\
<div class="buttonholder-spellbook">\
<<if $filter_blessing.includes("Slave")>>\
<span id="s"><<button "<u>S</u>lave" "Buy Blessing">><<set _clear to $filter_blessing.delete("Slave")>><<set $blessing_page to 0>><</button>></span>
<<else>>\
<div class="transparent-button">\
<span id="s"><<button "<u>S</u>lave" "Buy Blessing">>\
<<silently>>\
<<set $filter_blessing.push("Slave")>>
<<if $filter_blessing.length >= 3>>
<<set $filter_blessing to []>>
<</if>>
<<set $blessing_page to 0>>
<</silently>>\
<</button>></span>
</div>\
<</if>>\
</div>\
<div class="buttonholder-spellbook">\
<<if $filter_locked === false>>\
<span id="a"><<button "<u>A</u>ll Blessings" "Buy Blessing">><<set $filter_locked to true>><<set $blessing_page to 0>><</button>></span>
<<elseif $filter_locked === true>>\
<div class="transparent-button">\
<span id="a"><<button "<u>A</u>ll Blessings" "Buy Blessing">><<set $filter_locked to false>><<set $blessing_page to 0>><</button>></span>
</div>\
<</if>>\
</div>\
</div>\
<div class="container-spellbook">\
<<for _i = _start_pos; _i < _end_pos; _i++>>\
<<set _hotKey to (_i % 9) + 1>>\
<div class="cellholder-spellbook">\
<div class="cells-blessing">\
<<if _goddess_blessing_list[_i].type.includes("Mythical")>>\
<div class="cell-name-blessing-gold">\
_goddess_blessing_list[_i].name
</div>\
<<else>>\
<div class="cell-name-blessing">\
_goddess_blessing_list[_i].name
</div>\
<</if>>\
<div class="cell-title-blessing">\
Blessing Tree: _goddess_blessing_list[_i].tree
</div>\
<div class="cell-description-blessing">\
_goddess_blessing_list[_i].tooltip
<<if _goddess_blessing_list[_i].rank > $dungeon_rank>>\
<strong>@@.bad;Requires Dungeon Rank _goddess_blessing_list[_i].rank@@</strong>
<</if>>\
<<if !$blessing_bought_list.includesAll(_goddess_blessing_list[_i].req)>>\
<<set _owned to _goddess_blessing_list[_i].req.delete($pc_blessing_list)>>\
<strong>@@.bad;Requires _goddess_blessing_list[_i].req@@</strong>
<</if>>\
</div>\
<div class="cell-link-spellbook">\
<<silently>>\
* Find Blessing Cost *
<<if $free_blessing_count > 0 && !_goddess_blessing_list[_i].type.includes("Mythical")>>
<<set _price to 0>>
<<else>>
<<set _price to clone(_goddess_blessing_list[_i].cost)>>
<</if>>
<</silently>>\
<<if !$blessing_bought_list.includesAll(_goddess_blessing_list[_i].req) || _goddess_blessing_list[_i].rank > $dungeon_rank>>\
<div class="offbutton">\
<<button "Locked">><</button>>
</div>\
<<elseif $pc_lust < _price>>\
<div class="offbutton">\
<<button "_price Lust Essence">><</button>>
</div>\
<<else>>\
<<capture _i, _price, _hotKey>>\
<span @id="_hotKey"><<button "_price Lust Essence ^^_hotKey^^" "Ahri's Teachings">>\
<<silently>>\
BLESSING PURCHASE TRIGGERS
<<BlessingTriggers _goddess_blessing_list[_i]>>
REDUCE LUST, UPDATE LUST SPENT
<<set $pc_lust -= _price>>
<<set $pc_lust_spent += _price>>
REDUCE FREE BLESSING COUNT
<<if $free_blessing_count > 0 && !_goddess_blessing_list[_i].type.includes("Mythical") && _price === 0>>
<<set $free_blessing_count-->>
<</if>>
ADD BLESSING TO LIST
<<set $pc_blessing_list.push(_goddess_blessing_list[_i].name)>>
<<set $blessing_bought_list.push(_goddess_blessing_list[_i].name)>>
REPLACE ANY LESSER BLESSINGS
<<set _replaced to $pc_blessing_list.delete(_goddess_blessing_list[_i].unlock)>>
SET AHRIS TEACHING MEATHOD
<<set $ahri_teachings to "Blessing">>
<</silently>>\
<</button>></span>
<</capture>>\
<</if>>\
</div>\
</div>\
</div>\
<</for>>\
</div>\
<div class="buttonbox-spellbook">\
<div class="pagebutton-spellbook">\
<<if $blessing_page > 0>>\
<span id="left"><<button [[Previous Page|Buy Blessing]]>><<set $blessing_page-->><</button>></span>
<<else>>\
<div class="offbutton">\
<<button "Previous Page">><</button>>
</div>\
<</if>>\
</div>\
<div class="pagebutton-spellbook">\
<<if _goddess_blessing_list.length > _end_pos>>\
<span id="right"><<button [[Next Page|Buy Blessing]]>><<set $blessing_page++>><</button>></span>
<<else>>\
<div class="offbutton">\
<<button "Next Page">><</button>>
</div>\
<</if>>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button[[Back|Ahri's Quarters]]>><<unset $filter_blessing, $blessing_page>><</button>></span>
</div>\
</div>\<<silently>>\
*Variables*
<<set _position to []>> holds which position the raider abandoning the dungeon is in to remove from group
<<set _gif to "[img[gifs/events/fear.gif]]">> holds the gif info
<<set $update_next_room to true>>
*Find Raiders Position*
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $fear_raider === $raiders[_i].class)>>
<<set _cur_girl_trait_names to []>>
<<set _cur_girl_status_names to []>>
<<for _s = 0; _s < $raiders[_i].traits.length; _s++>>
<<if $raiders[_i].traits.length > 0>>
<<set _trait to $raiders[_i].traits[_s].name>>
<<set _cur_girl_trait_names.push(_trait)>>
<</if>>
<</for>>
<<for _s = 0; _s < $raiders[_i].statuses.length; _s++>>
<<if $raiders[_i].statuses.length > 0>>
<<set _status to $raiders[_i].statuses[_s].id>>
<<set _cur_girl_status_names.push(_status)>>
<</if>>
<</for>>
<<set _position.push(_i)>>
<<set $raiders[_i].abandoned to true>>
<<set $raiders[_i].abandoned_by to "Fear">>
<<set $raiders[_i].statuses.push(setup.abandoned)>>
SET REPUTATION GAINED
ADD REP AMOUNT
<<set _rep_amount to Math.round($raiders[_i].subclass.base_reputation * setup.abandoned_rep_mod)>>
INCREASE REP BASED ON NUMBER OF ABANDONS
<<set _rep_amount += Math.round(setup.abandoned_rep_constant * $abandoned_girl_list.length)>>
FAMOUS
<<if _cur_girl_trait_names.includes("Famous")>>
<<set _rep_amount to Math.round(_rep_amount * setup.famous.mult)>>
<</if>>
SET REP AMOUNT AND ADD TO LIST
<<set $raiders[_i].reputation to _rep_amount>>
<<set $abandoned_girl_list.push($raiders[_i])>>
STATS
<<set $pc_total_raiders_abandoned++>>
<</if>>
<</for>>
*Display*
<</silently>>
<div class="section">\
<div class="titlebox">\
Alone in the Dark
</div>\
<div class="centered">\
_gif
</div>\
<div class="textbox">\
The fear of being alone was too much for the $raiders[0].name . She decided to leave this forsaken dungeon as soon as possible, forgoing her chance to find Gold and Treasure.
<<if $raiding_girls_list.length > 0>>\
As she left, another group of Raiders entered the dungeon.
<<button [[Next Group|Raiding Party]]>><<set _delete to $raiders.deleteAt(_position)>><</button>>
<<else>>\
She was the last Raider tonight. Let's take a look at the report.
<<if $captured_girl_list.length > 0>>\
<<button [[End Raid|Captured Raiders]]>><<set _delete to $raiders.deleteAt(_position)>><</button>>
<<else>>\
<<button [[End Raid|Daily Summary]]>><<set _delete to $raiders.deleteAt(_position)>><</button>>
<</if>>\
<</if>>\
</div>\
</div>\<<silently>>\
*Variables*
*Image*
<<if $ahri_teachings === "Trap">>
<<set _pic_0 to "[img[images/mistress/cum_0.jpg]]">>
<<set _pic_1 to "[img[images/mistress/cum_1.jpg]]">>
<<set _pic_2 to "[img[images/mistress/cum_2.jpg]]">>
<<set _pic_3 to "[img[images/mistress/cum_3.jpg]]">>
<<set _pic_4 to "[img[images/mistress/cum_4.jpg]]">>
<<set _link to "Buy Trap">>
<<elseif $ahri_teachings === "Creature">>
<<set _pic_0 to "[img[images/mistress/sex_0.jpg]]">>
<<set _pic_1 to "[img[images/mistress/sex_1.jpg]]">>
<<set _pic_2 to "[img[images/mistress/sex_2.jpg]]">>
<<set _pic_3 to "[img[images/mistress/sex_3.jpg]]">>
<<set _pic_4 to "[img[images/mistress/sex_4.jpg]]">>
<<set _link to "Buy Creature">>
<<elseif $ahri_teachings === "Blessing">>
<<set _pic_0 to "[img[images/mistress/sex_0.jpg]]">>
<<set _pic_1 to "[img[images/mistress/sex_1.jpg]]">>
<<set _pic_2 to "[img[images/mistress/sex_2.jpg]]">>
<<set _pic_3 to "[img[images/mistress/sex_3.jpg]]">>
<<set _pic_4 to "[img[images/mistress/sex_4.jpg]]">>
<<set _link to "Buy Blessing">>
<</if>>
<<set _pic_array to [_pic_0, _pic_1, _pic_2, _pic_3, _pic_4]>>
<<set _pic to _pic_array.random()>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Ahri's Teachings
</div>\
<div class="imagebox">\
_pic
</div>\
<div class="textbox-center">\
<<if $ahri_teachings === "Trap">>\
Ahri taught you how to construct and use your new Trap. Then, it was time for her to take her payment.
<<elseif $ahri_teachings === "Creature">>\
Ahri showed you how to summon and take care of your new Creature. You showed her how grateful you are and took care of her.
<<elseif $ahri_teachings === "Blessing">>
Ahri bestowed a new Blessing to you during your transaction.
<</if>>\
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[Continue|_link]]>><<unset $ahri_teachings>><</button>></span>
</div>\
</div>\<<silently>>\
* Variables *
<<set _list to ["Handjob", "Blowjob", "Titjob", "Footjob", "Missionary", "Cowgirl", "Doggy", "Anal"]>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Services
</div>\
<div class="slaveholder-assignjob">\
<div class="sidebutton-assignjob">\
</div>\
<div class="slaveinfo-assignjob">\
<div class="picbox-slaveinfo-assignjob">\
$cur_slave.pic
</div>\
<div class="textholder-slaveinfo-assignjob">\
<div class="namebox-slaveinfo-assignjob">\
$cur_slave.name
</div>\
<div class="skillholder-slaveinfo-assignjob">\
<div class="skillbox-slaveinfo-assignjob">\
<<hovertip "EXP: $cur_slave.handjob_tracker / $cur_slave.handjob_tracker_limit<br>Max: $cur_slave.handjob_limit">>Handjob
$cur_slave.handjob<</hovertip>>
</div>\
<div class="skillbox-slaveinfo-assignjob">\
<<hovertip "EXP: $cur_slave.blowjob_tracker / $cur_slave.blowjob_tracker_limit<br>Max: $cur_slave.blowjob_limit">>Blowjob
$cur_slave.blowjob<</hovertip>>
</div>\
<div class="skillbox-slaveinfo-assignjob">\
<<hovertip "EXP: $cur_slave.titjob_tracker / $cur_slave.titjob_tracker_limit<br>Max: $cur_slave.titjob_limit">>Titjob
$cur_slave.titjob<</hovertip>>
</div>\
<div class="skillbox-slaveinfo-assignjob">\
<<hovertip "EXP: $cur_slave.footjob_tracker / $cur_slave.footjob_tracker_limit<br>Max: $cur_slave.footjob_limit">>Footjob
$cur_slave.footjob<</hovertip>>
</div>\
<div class="skillbox-slaveinfo-assignjob">\
<<hovertip "EXP: $cur_slave.missionary_tracker / $cur_slave.missionary_tracker_limit<br>Max: $cur_slave.missionary_limit">>Missionary
$cur_slave.missionary<</hovertip>>
</div>\
<div class="skillbox-slaveinfo-assignjob">\
<<hovertip "EXP: $cur_slave.cowgirl_tracker / $cur_slave.cowgirl_tracker_limit<br>Max: $cur_slave.cowgirl_limit">>Cowgirl
$cur_slave.cowgirl<</hovertip>>
</div>\
<div class="skillbox-slaveinfo-assignjob">\
<<hovertip "EXP: $cur_slave.doggy_tracker / $cur_slave.doggy_tracker_limit<br>Max: $cur_slave.doggy_limit">>Doggy
$cur_slave.doggy<</hovertip>>
</div>\
<div class="skillbox-slaveinfo-assignjob">\
<<hovertip "EXP: $cur_slave.anal_tracker / $cur_slave.anal_tracker_limit<br>Max: $cur_slave.anal_limit">>Anal
$cur_slave.anal<</hovertip>>
</div>\
</div>\
</div>\
</div>\
<div class="sidebutton">\
</div>\
</div>\
<div class="jobinfo-assignjob">\
<div class="infotext-assignjob">\
Choose how you want your Slave to serve you
</div>\
<<for _i = 0; _i < _list.length; _i++>>\
<<set _hotKey to _i + 1>>\
<<capture _i, _hotKey>>\
<div class="servicebox-assignjob purplebutton">\
<span @id="_hotKey"><<button "_list[_i] ^^_hotKey^^" "Slave Room">>\
<<silently>>\
REMOVE ALL OTHER SLAVES FROM THIS SERVICE JOB
<<for _s = 0; _s < $slave_room_list.length; _s++>>
<<if $slave_room_list[_s].room_type === "Slave">>
<<if $slave_room_list[_s].job != "">>
<<if $slave_room_list[_s].job.type === "Service">>
<<if $slave_room_list[_s].job.name === $job.name>>
<<set $slave_room_list[_s].job to "">>
<</if>>
<</if>>
<</if>>
<</if>>
<</for>>
<<set $cur_slave[$job].service_sex to _list[_i].toLowerCase()>>
<<set $slave_room_list[$cur_slave_num] to clone($cur_slave)>>
<<unset $job, $job_page, $filter_jobs>>
<</silently>>\
<</button>></span>\
</div>\
<</capture>>\
<</for>>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Assign Slave Job]]>><<set $cur_slave[$job] to "">><<unset $job>><</button>></span>
</div>\
</div>\<<widget "dmgCalc">>
<<set _d20 to random(1, 20)>>
<<if _d20 === 20>>
<<set _dmg to (_args[0].atk * 2) - _args[1].def>>
<<elseif _d20 === 1>>
<<set _dmg to (_args[0].atk / 2) - _args[1].def>>
<<if _dmg < 1>>
<<set _dmg to 1>>
<</if>>
<<else>>
<<set _dmg to _args[0].atk - _args[1].def>>
<</if>>
<<set _args[1].hp -= _dmg>>
<<if _args[1].hp < 0>>
<<set _args[1].hp to 0>>
<</if>>
<</widget>><<widget "RaiderSetup">>
args[0] = raider
* Set Trait and Status List to trigger text *
<<set _text_triggers = {
status : {
horny: [],
wet: [],
perverted: [],
sticky: [],
edging: [],
poisoned: [],
aroused: [],
intimidated: [],
intoxicated: [],
stripped: [],
markoflust: [],
markoflust_trig: [],
brainwashed: [],
brainwashed_trig: [],
brainwashed_noAtk_trig: [],
stimulated: [],
stimulated_trig: [],
pregnant: [],
lactation: [],
futanari: [],
parasite: [],
cursed: [],
captured: [],
abandoned: [],
teleported: [],
anus_pregnant: [],
breasts_pregnant: [],
womb_pregnant: []
},
trait : {
drenched: [],
soaked: [],
edger: [],
gokkun: [],
submissive: [],
amorous_kink: [],
amorous_turnoff: [],
masochist: [],
squirter: [],
squirted: [],
naive: [],
teraphobia: [],
zoophobia: [],
entomophobia: [],
wild_pos: [],
wild_neg: [],
reserved_pos: [],
reserved_neg: [],
fantasizer: [],
flat: [],
voluptuous: [],
thicc: [],
petite: [],
petite_trap: [],
clumsy: [],
virgin: [],
relentless: [],
trophy_collector: []
},
blessing : {
lewd_harvester: false,
treasure_guardian: false,
spreading_savagery: false,
mending_entrance: false,
endless_hunger: false,
welcome_mat: []
},
effect : {
protection: false,
hindrance: false
},
treasure : {
shinyRing: false,
essenceRing: false
},
check : {
trapcheck_crit_failed: [],
trapcheck_failed: [],
trapcheck_crit_passed: [],
trapcheck_passed: [],
spellcheck_crit_failed: [],
spellcheck_failed: [],
spellcheck_crit_passed: [],
spellcheck_passed: [],
atk_crit: [],
atk_fail: []
}
}>>
*Set Raider Base Values*
<<for _i = 0; _i < _args[0].length; _i++>>
<<set _cur_girl to _args[0][_i]>>
<<set _cur_girl.cur_vig to _cur_girl.vig>> VIG: _cur_girl.cur_vig
<<set _cur_girl.cur_end to _cur_girl.end>> END: _cur_girl.cur_end
<<set _cur_girl.cur_will to _cur_girl.will>> WILL: _cur_girl.cur_will
<<set _cur_girl.cur_pers to _cur_girl.pers>> PERS: _cur_girl.cur_pers
<<set _cur_girl.cur_toler to _cur_girl.toler>> TOLER: _cur_girl.cur_toler
<<set _cur_girl.cur_aware to _cur_girl.aware>> AWARE: _cur_girl.cur_aware
<<set _cur_girl.cur_reas to _cur_girl.reas>> REAS: _cur_girl.cur_reas
<<set _cur_girl.dmg_dealt to 0>>
<<set _cur_girl.dmg_taken to 0>>
<<set _cur_girl.sex_taken to 0>>
<<set _cur_girl.targetable to true>>
<<set _cur_girl.targeted to false>>
<<set _cur_girl.attacked to false>>
<<set _cur_girl.kink_trigger to []>>
<<set _cur_girl.turnoff_trigger to []>>
RESET PIC
<<set _cur_girl.pic to clone(_cur_girl.pic_default)>>
* Pre Combat Effects *
* RESET *
* STATUSES *
STACKING
<<set _reset_list to ["Aroused", "Poisoned", "Sticky", "Intoxicated", "Lactation", "Futanari", "Fear"]>>
<<for _z = 0; _z < _cur_girl.statuses.length; _z++>>
<<if _reset_list.includes(_cur_girl.statuses[_z].id)>>
<<set _cur_girl.statuses[_z].gain to 0>>
RESET _cur_girl.statuses[_z].id GAIN
<</if>>
<</for>>
* TRAITS *
MASOCHIST
<<if _cur_girl.trait_names.includes("Masochist")>>
FIND MASOCHIST
<<for _z = 0; _z < _cur_girl.traits.length; _z++>>
<<if _cur_girl.traits[_z].name === "Masochist">>
SET AMOUNT TO 0 AND BREAK LOOP
<<set _cur_girl.traits[_z].amount to 0>>
<<break>>
<</if>>
<</for>>
<</if>>
* FLAT GAINS *
* STATUSES *
POTION OF PERSPECTIVE
<<if _cur_girl.status_names.includes("Potion of Perspective")>>
<<for _z = 0; _z < _cur_girl.statuses.length; _z++>>
<<if _cur_girl.statuses[_z].id === "Potion of Perspective">>
INCREASE AWARENESS
<<set _cur_girl.cur_aware += _cur_girl.statuses[_z].amount>>
<<break>>
<</if>>
<</for>>
<</if>>
POTION OF FAITH
<<if _cur_girl.status_names.includes("Potion of Faith")>>
<<for _z = 0; _z < _cur_girl.statuses.length; _z++>>
<<if _cur_girl.statuses[_z].id === "Potion of Faith">>
INCREASE AWARENESS
<<set _cur_girl.cur_reas+= _cur_girl.statuses[_z].amount>>
<<break>>
<</if>>
<</for>>
<</if>>
HEROIC POTION
<<if _cur_girl.status_names.includes("Heroic Potion")>>
<<for _z = 0; _z < _cur_girl.statuses.length; _z++>>
<<if _cur_girl.statuses[_z].id === "Heroic Potion">>
INCREASE VIG, END, WILL, PERS, TOLER
<<set _cur_girl.cur_vig += _cur_girl.statuses[_z].amount>>
<<set _cur_girl.cur_end += _cur_girl.statuses[_z].amount>>
<<set _cur_girl.cur_will += _cur_girl.statuses[_z].amount>>
<<set _cur_girl.cur_pers += _cur_girl.statuses[_z].amount>>
<<set _cur_girl.cur_toler += _cur_girl.statuses[_z].amount>>
<<break>>
<</if>>
<</for>>
<</if>>
* TRAITS *
* OTHER *
* FLAT LOSES *
* STATUSES *
* TRAITS *
* OTHER *
* PERCENT GAINS *
* STATUSES *
ASCENDED
<<if _cur_girl.status_names.includes(setup.ascended_status.id)>>
<<set _cur_girl.cur_will *= setup.ascended.mult>>
<<set _cur_girl.cur_pers *= setup.ascended.mult>>
<</if>>
PERVERTED W/ TWISTED
<<if _cur_girl.status_names.includesAll("Perverted", "Twisted") >>
<<set _cur_girl.cur_reas += (Math.round(_cur_girl.cur_reas * setup.perverted.float)).clamp(1, 1000000)>>
<<set _cur_girl.cur_aware += (Math.round(_cur_girl.cur_aware * setup.perverted.float)).clamp(1, 1000000)>>
<</if>>
RELENTLESS STATUS
<<if _cur_girl.status_names.includes(setup.relentless.effect_name)>>
FIND STATUS
<<for _z = 0; _z < _cur_girl.statuses.length; _z++>>
FIND STATUS
<<if _cur_girl.statuses[_z].id === setup.relentless.effect_name>>
<<set _cur_girl.cur_vig += (Math.round(_cur_girl.cur_vig * (_cur_girl.statuses[_z].float * _cur_girl.statuses[_z].stack))).clamp(1, 1000000)>>
<<break>>
<</if>>
<</for>>
<</if>>
TROPHY COLLECTOR STATUS
<<if _cur_girl.status_names.includes(setup.trophy_collector.effect_name)>>
FIND STATUS
<<for _z = 0; _z < _cur_girl.statuses.length; _z++>>
FIND STATUS
<<if _cur_girl.statuses[_z].id === setup.trophy_collector.effect_name>>
<<set _cur_girl.cur_vig += (Math.round(_cur_girl.cur_vig * (_cur_girl.statuses[_z].float * _cur_girl.statuses[_z].stack))).clamp(1, 1000000)>>
<<break>>
<</if>>
<</for>>
<</if>>
* TRAITS *
LONE WOLF
<<if _cur_girl.trait_names.includes("Lone Wolf") && $raiders.length === 1>>
<<set _cur_girl.cur_aware += (Math.round(_cur_girl.cur_aware * setup.lone_wolf.float)).clamp(1, 1000000)>>
<<set _cur_girl.cur_reas += (Math.round(_cur_girl.cur_reas * setup.lone_wolf.float)).clamp(1, 1000000)>>
<</if>>
SELFLESS HERO
<<if _cur_girl.trait_names.includes("Selfless Hero") && $raiders.length === 1>>
<<set _cur_girl.cur_vig += (Math.round(_cur_girl.cur_vig * setup.selfless_hero.vig_float)).clamp(1, 1000000)>>
<</if>>
* OTHER *
* PERCENT LOSES *
* STATUSES *
BRAINWASHED
<<if _cur_girl.status_names.includes("Brainwashed")>>
FIND STATUS
<<for _z = 0; _z < _cur_girl.statuses.length; _z++>>
<<if _cur_girl.statuses[_z].id === "Brainwashed">>
REDUCE AWARENESS AND REASON
<<set _cur_girl.cur_aware -= (Math.round(_cur_girl.cur_aware * _cur_girl.statuses[_z].float)).clamp(1, 1000000)>>
<<set _cur_girl.cur_reas -= (Math.round(_cur_girl.cur_aware * _cur_girl.statuses[_z].float)).clamp(1, 1000000)>>
<<if !_noBrainTrig>>
TRIGGER TEXT TO REMOVE IT
<<set _cur_girl.statuses[_z].bool to true>>
<<break>>
<</if>>
<</if>>
<</for>>
<</if>>
FUTANARI
<<if _cur_girl.status_names.includes("Futanari")>>
FIND STATUS
<<for _z = 0; _z < _cur_girl.statuses.length; _z++>>
<<if _cur_girl.statuses[_z].id === "Futanari">>
REDUCE REASON
<<set _cur_girl.cur_reas -= (Math.round(_cur_girl.cur_reas * (_cur_girl.statuses[_z].float * _cur_girl.statuses[_z].stack))).clamp(1, 1000000)>>
FUTANARI DECREASED AWARENESS TO _cur_girl.cur_reas
<<break>>
<</if>>
<</for>>
<</if>>
IMPATIENT STATUS
<<if _cur_girl.status_names.includes("Impatient")>>
<<for _z = 0; _z < _cur_girl.statuses.length; _z++>>
<<if _cur_girl.statuses[_z].id === "Impatient">>
AWARENESS
<<set _cur_girl.cur_aware -= (Math.round(_cur_girl.cur_aware * (setup.impatient.float * _cur_girl.statuses[_z].stack))).clamp(1, 1000000)>>
REASON
<<set _cur_girl.cur_reas -= (Math.round(_cur_girl.cur_reas * (setup.impatient.float * _cur_girl.statuses[_z].stack))).clamp(1, 1000000)>>
<<break>>
<</if>>
<</for>>
<</if>>
INTIMIDATED
<<if _cur_girl.status_names.includes(setup.intimidated.id)>>
<<set _cur_girl.cur_vig -= (Math.round(_cur_girl.cur_vig * setup.stripped.float)).clamp(1, 1000000)>>
<<set _cur_girl.cur_will -= (Math.round(_cur_girl.cur_will * setup.stripped.float)).clamp(1, 1000000)>>
<</if>>
INTOXICATED
<<if _cur_girl.status_names.includes("Intoxicated")>>
FIND STATUS
<<for _z = 0; _z < _cur_girl.statuses.length; _z++>>
<<if _cur_girl.statuses[_z].id === "Intoxicated">>
LOWER AWARENESS BY <<- (Math.round(_cur_girl.cur_aware * (_cur_girl.statuses[_z].float * _cur_girl.statuses[_z].stack))).clamp(1, 1000000)>>
LOWERED REASON BY <<- (Math.round(_cur_girl.cur_reas * (_cur_girl.statuses[_z].float * _cur_girl.statuses[_z].stack))).clamp(1, 1000000)>>
<<set _cur_girl.cur_aware -= (Math.round(_cur_girl.cur_aware * (_cur_girl.statuses[_z].float * _cur_girl.statuses[_z].stack))).clamp(1, 1000000)>>
<<set _cur_girl.cur_reas -= (Math.round(_cur_girl.cur_reas * (_cur_girl.statuses[_z].float * _cur_girl.statuses[_z].stack))).clamp(1, 1000000)>>
<<break>>
<</if>>
<</for>>
<</if>>
LACTATION
<<if _cur_girl.status_names.includes("Lactation")>>
FIND STATUS
<<for _z = 0; _z < _cur_girl.statuses.length; _z++>>
<<if _cur_girl.statuses[_z].id === "Lactation">>
REDUCE AWARENESS
<<set _cur_girl.cur_aware -= (Math.round(_cur_girl.cur_aware * (_cur_girl.statuses[_z].float * _cur_girl.statuses[_z].stack))).clamp(1, 1000000)>>
LACTATION DECREASED AWARENESS TO _cur_girl.cur_aware
<<break>>
<</if>>
<</for>>
<</if>>
PERVERTED W/O TWISTED
<<if _cur_girl.status_names.includes("Perverted") && !_cur_girl.status_names.includes("Twisted")>>
<<set _cur_girl.cur_reas -= (Math.round(_cur_girl.cur_reas * setup.perverted.float)).clamp(1, 1000000)>>
<<set _cur_girl.cur_aware -= (Math.round(_cur_girl.cur_aware * setup.perverted.float)).clamp(1, 1000000)>>
<</if>>
PREGNANT
<<if _cur_girl.status_names.includes("Pregnant")>>
<<set _pregCount to _cur_girl.status_names.count("Pregnant")>>
<<set _cur_girl.cur_vig -= (Math.round(_cur_girl.cur_vig * (setup.pregnant.float * _pregCount))).clamp(1, 1000000)>>
<<set _cur_girl.cur_end -= (Math.round(_cur_girl.cur_end * (setup.pregnant.float * _pregCount))).clamp(1, 1000000)>>
<<set _cur_girl.cur_will -= (Math.round(_cur_girl.cur_will * (setup.pregnant.float * _pregCount))).clamp(1, 1000000)>>
<<set _cur_girl.cur_pers -= (Math.round(_cur_girl.cur_pers * (setup.pregnant.float * _pregCount))).clamp(1, 1000000)>>
<<set _cur_girl.cur_toler -= (Math.round(_cur_girl.cur_toler * (setup.pregnant.float * _pregCount))).clamp(1, 1000000)>>
<</if>>
STRIPPED
<<if _cur_girl.status_names.includes(setup.stripped.id)>>
<<set _cur_girl.cur_end -= (Math.round(_cur_girl.cur_end * setup.stripped.float)).clamp(1, 1000000)>>
<<set _cur_girl.cur_pers -= (Math.round(_cur_girl.cur_pers * setup.stripped.float)).clamp(1, 1000000)>>
<<set _cur_girl.cur_toler -= (Math.round(_cur_girl.cur_toler * setup.stripped.float)).clamp(1, 1000000)>>
<</if>>
* TRAITS *
LUSTFUL
<<if _cur_girl.trait_names.includes("Lustful") && _cur_girl.status_names.includesAny(setup.lustful.statuses)>>
<<set _cur_girl.cur_toler -= (Math.round(_cur_girl.cur_toler * setup.lustful.float)).clamp(1, 1000000)>>
<</if>>
SELF-CONSCIOUS
<<if _cur_girl.trait_names.includes("Self-Conscious") && (_cur_girl.cur_lust / _cur_girl.max_lust).toFixed(3) >= setup.self_conscious.lust_percent>>
<<set _cur_girl.cur_aware -= (Math.round(_cur_girl.cur_aware * setup.self_conscious.float)).clamp(1, 1000000)>>
<<set _cur_girl.cur_reas -= (Math.round(_cur_girl.cur_reas * setup.self_conscious.float)).clamp(1, 1000000)>>
<</if>>
* OTHER *
* CLAMP ALL STATS *
<<set _cur_girl.cur_vig to Math.clamp(_cur_girl.cur_vig, 1, 1000000)>> VIG: _cur_girl.cur_vig
<<set _cur_girl.cur_end to Math.clamp(_cur_girl.cur_end, 1, 1000000)>> END: _cur_girl.cur_end
<<set _cur_girl.cur_will to Math.clamp(_cur_girl.cur_will, 1, 1000000)>> WILL: _cur_girl.cur_will
<<set _cur_girl.cur_pers to Math.clamp(_cur_girl.cur_pers, 1, 1000000)>> PERS: _cur_girl.cur_pers
<<set _cur_girl.cur_toler to Math.clamp(_cur_girl.cur_toler, 1, 1000000)>> TOLER: _cur_girl.cur_toler
<<set _cur_girl.cur_aware to Math.clamp(_cur_girl.cur_aware, 1, 1000000)>> AWARE: _cur_girl.cur_aware
<<set _cur_girl.cur_reas to Math.clamp(_cur_girl.cur_reas, 1, 1000000)>> REAS: _cur_girl.cur_reas
UPDATE THE GIRL
<<set _args[0][_i] to clone(_cur_girl)>>
<</for>>
<</widget>>
<<widget "RaiderUpdate">>
UPDATED ALL CONSTANT EFFECTS AT THE END OF FLOORS AND BETWEEN ROOMS
<<set _cur_girl to _args[0]>>
DIRTY MINDED
<<if _cur_girl.trait_names.includes("Dirty Minded") && _cur_girl.status_names.includesAny(setup.dirtyminded.statuses)>>
<<for _i = 0; _i < setup.dirtyminded.other_statuses.length; _i++>>
<<AddStatus _cur_girl setup.dirtyminded.other_statuses[_i] false>>
<</for>>
<</if>>
EXHIBITIONIST
<<if _cur_girl.trait_names.includes("Exhibitionist")>>
<<AddStatus _cur_girl setup.horny false>>
<</if>>
SOAKED AND DRENCHED
<<if _cur_girl.trait_names.includesAny("Soaked", "Drenched")>>
<<AddStatus _cur_girl setup.wet false>>
<</if>>
FANTASIZER
<<if _cur_girl.trait_names.includes("Fantasizer")>>
<<AddStatus _cur_girl setup.perverted false>>
<</if>>
NYMPHO
<<if _cur_girl.trait_names.includes("Nympho")>>
<<for _s = 0; _s < setup.nympho.statuses.length; _s++>>
<<AddStatus _cur_girl setup.nympho.statuses[_s] false>>
<</for>>
<</if>>
DRY
<<if _cur_girl.trait_names.includes("Dry") && _cur_girl.status_names.includes("Wet")>>
<<for _s = 0; _s < _cur_girl.statuses.length; _s++>>
<<if _cur_girl.statuses[_s].name === "Wet">>
<<set _delete to _cur_girl.statuses.deleteAt(_s)>>
<<set _delete to _cur_girl.status_names.deleteAt(_s)>>
<<break>>
<</if>>
<</for>>
<</if>>
ASCENDED
<<if _cur_girl.trait_names.includes("Ascended") && (_cur_girl.cur_hp / _cur_girl.max_hp).toFixed(2) <= setup.ascended.health_limit && !_cur_girl.status_names.includesAny("Captured", "Abandoned") && !_cur_girl.status_names.includes(setup.ascended_status.id)>>
AWAKEN
<<AddStatus _cur_girl setup.ascended_status false>>
<</if>>
TAINTED
<<if _cur_girl.trait_names.includes(setup.tainted.name) && (_cur_girl.cur_lust / _cur_girl.max_lust).toFixed(2) >= setup.tainted.percent>>
ADD TWISTED
<<AddStatus _cur_girl setup.tainted.status false>>
<<elseif _cur_girl.trait_names.includes(setup.tainted.name) && (_cur_girl.cur_lust / _cur_girl.max_lust).toFixed(2) < setup.tainted.percent && _cur_girl.status_names.includes(setup.tainted.status.name)>>
<<for _z = 0; _z < _cur_girl.statuses.length; _z++>>
<<if _cur_girl.statuses[_z].name === setup.tainted.status.name>>
REMOVE TWISTED
<<set _delete to _cur_girl.statuses.deleteAt(_z)>>
<<set _delete to _cur_girl.status_names.deleteAt(_z)>>
<<break>>
<</if>>
<</for>>
<</if>>
<<set _args[0] to clone(_cur_girl)>>
<</widget>><<widget "RaiderAttack">>
<<if !_args[2]>>
<<set _args[2] to 1>>
<</if>>
_args[0].name is raider and _args[1].name is creature room _args[2] is damage mod
<<set _groupSize_dmg_mod to 0.15>> reduce damage for each raider in party beyond the first
* BRAINWASHED CHECK *
<<if _args[0].status_names.includes("Brainwashed")>>
<<set _text_triggers.status.brainwashed_noAtk_trig.push(_args[0].index)>>
<<set _entry to "She did not attack because she was Brainwashed.">>
<<set _lastLog to _args[0].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set _args[0].report.log.push(_lastLog)>>
<<else>>
* BASE DAMAGE *
BASE PHYSICAL DAMAGE
<<if _args[0].type === "Physical">>
<<set _dmg to clone(_args[0].cur_vig)>>
BASE PHYSICAL DAMAGE: @@.phy;_dmg@@
BASE MAGICAL DAMAGE
<<elseif _args[0].type === "Magical">>
<<set _dmg to clone(_args[0].cur_will)>>
BASE MAGICAL DAMAGE: @@.mag;_dmg@@
<</if>>
* GROUP SIZE MOD *
<<set _mod to _groupSize_dmg_mod * ($raiders.length - 1)>>
<<set _dmg -= _dmg * _mod>>
GROUP MOD REDUCED DMG TO _dmg
CLAMP AND ROUND
<<set _dmg to Math.clamp(Math.round(_dmg), 1, 1000000)>>
* BRAWLER MOD *
<<if _args[0].class === "Brawler">>
<<set _dmg to (Math.round(_dmg * _args[0].dmg_float)).clamp(1, 1000000)>>
BRALWER ATTACKS TWICE FOR @@.phy;_dmg DAMAGE@@
<</if>>
* RESISTANCE *
BASE PHYSICAL RESISTANCE
<<if _args[0].type === "Physical">>
<<set _res to clone(Math.trunc(_args[1].cur_pres))>>
BASE RESISTANCE @@.pres;_res@@
BASE MAGICAL RESISTANCE
<<elseif _args[0].type === "Magical">>
<<set _res to clone(Math.trunc(_args[1].cur_mres))>>
BASE RESISTANCE @@.mres;_res@@
<</if>>
* WITCH MOD *
<<if _args[0].class === "Witch">>
<<set _res -= (Math.round(_res * _args[0].pen_float)).clamp(1, 1000000)>>
WITCH REDUCES RESISTANCE: @@.mres;_res@@
<</if>>
* RES MULT *
<<if _res < 1>>
<<set _res to 1>>
<</if>>
<<set _res_mult to (setup.dmg_mult / (setup.dmg_mult + _res)).toFixed(3)>>
RESIST MULT: _res_mult
<<set _dmg to (Math.trunc(_dmg * _res_mult)).clamp(1, 1000000)>>
DAMAGE REDUCED TO _dmg
FINAL DMG _dmg
* DAMAGE MODS *
* FLAT DAMAGE ADDED *
* STATUSES *
* TRAITS *
* OTHERS *
* FLAT DAMAGE LOST *
* STATUSES *
* TRAITS *
* OTHERS *
* PERCENT DAMAGE ADDED *
* STATUSES *
FLOW
<<if _args[0].status_names.includes("Flow")>>
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
FIND STATUS
<<if _args[0].statuses[_z].id === setup.flow.id>>
FIND AMOUNT AND SUBTRACT DAMAGE
<<set _dmg += (Math.round(_dmg * (setup.flow.float * _args[0].statuses[_z].stack))).clamp(1, 1000000)>>
DAMAGE: _dmg
<<break>>
<</if>>
<</for>>
<</if>>
HORNY W/ TWISTED
<<if _args[0].status_names.includesAll("Horny", "Twisted")>>
<<set _dmg += (Math.trunc(_dmg * setup.horny.float)).clamp(1, 1000000)>>
DAMAGE: _dmg
<</if>>
* TRAITS *
FEISTY
<<if _args[0].trait_names.includes("Feisty")>>
<<set _percent to ((setup.feisty.float - ((_args[0].max_lust - _args[0].cur_lust) / _args[0].max_lust)) * setup.feisty.mod).clamp(1, setup.feisty.mod)>> PERCENT: _percent
<<set _dmg to Math.round(_dmg * _percent)>>
DAMAGE: _dmg
<</if>>
TROPHY COLLECTOR
<<if _args[0].trait_names.includes("Trophy Collector") && _args[0].status_names.includes("Trophy")>>
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
<<if _args[0].statuses[_z].id === "Trophy">>
<<set _dmg += (Math.round(_dmg * (setup.trophy_collector.float * _args[0].statuses[_z].stack))).clamp(1, 1000000)>>
DAMAGE: _dmg
<<break>>
<</if>>
<</for>>
<</if>>
* OTHER *
FIERY POTION
<<if _args[0].status_names.includes("Fiery Potion")>>
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
FIND STATUS
<<if _args[0].statuses[_z].id === setup.fiery_potion.id>>
<<set _percent to _args[0].statuses[_z].amount / 100>>
CALC AMOUNT OF DAMAGE TO REDUCE
<<set _dmg += (Math.round(_dmg * _percent)).clamp(1, 1000000)>>
DAMAGE: _dmg
BREAK LOOP
<<break>>
<</if>>
<</for>>
<</if>>
* PERCENT DAMAGE LOST *
* STATUSES *
HORNY W/O TWISTED
<<if _args[0].status_names.includes("Horny") && !_args[0].status_names.includes("Twisted")>>
<<set _dmg -= (Math.round(_dmg * setup.horny.float)).clamp(1, 1000000)>>
DAMAGE: _dmg
<</if>>
INTOXICATED
<<if _args[0].status_names.includes("Intoxicated")>>
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
FIND STATUS
<<if _args[0].statuses[_z].id === setup.intoxicated.id>>
FIND AMOUNT AND SUBTRACT DAMAGE
<<set _dmg -= (Math.round(_dmg * (_args[0].statuses[_z].float * _args[0].statuses[_z].stack))).clamp(1, 1000000)>>
DAMAGE: _dmg
<<break>>
<</if>>
<</for>>
<</if>>
* TRAITS *
ENTOMOPHOBIA
<<if _args[0].trait_names.includes("Entomophobia") && _args[1].creature_types.includesAny(setup.entomophobia.creatures)>>
<<set _dmg -= (Math.round(_dmg * setup.entomophobia.float)).clamp(1, 100000)>>
DAMAGE: _dmg
<</if>>
SUBMISSIVE
<<if _args[0].trait_names.includes("Submissive") && _args[1].fetishes.includesAny(setup.submissive.fetishes)>>
<<set _dmg -= (Math.round(_dmg * setup.submissive.float)).clamp(1, 100000)>>
SUBMISSIVE REDUCED DMG TO _dmg
PUSH TEXT
<<set _text_triggers.trait.submissive.push(_args[0].index)>>
<</if>>
TERAPHOBIA
<<if _args[0].trait_names.includes("Teraphobia") && _args[1].creature_types.includesAny(setup.teraphobia.creatures)>>
<<set _dmg -= (Math.round(_dmg * setup.teraphobia.float)).clamp(1, 1000000)>>
DAMAGE: _dmg
<</if>>
ZOOPHOBIA
<<if _args[0].trait_names.includes("Zoophobia") && _args[1].creature_types.includesAny(setup.zoophobia.creatures)>>
<<set _dmg -= (Math.round(_dmg * setup.zoophobia.float)).clamp(1, 1000000)>>
DAMAGE: _dmg
<</if>>
* OTHER *
TREASURE GUARDIAN
<<if $pc_blessing_list.includes("Treasure Guardian")>>
FIND THE LAST FLOOR IN DUNGEON
<<for _d = $dungeon_floor_list.length - 1; _d >= 0; _d-->>
<<if $dungeon_floor_list[_d].built === true>>
<<set _guardian_floor to _d>>
LAST FLOOR IS THE _d + 1 FLOOR
<<break>>
<<else>>
<<continue>>
<</if>>
<</for>>
<<if $cur_room_num === _guardian_floor>>
REDUCE DAMAGE
<<set _dmg -= (Math.round(_dmg * setup.blessing_04_11.other_float)).clamp(1, 1000000)>>
TRIGGER TEXT
<<set _text_triggers.treasure_guardian to true>>
<<else>>
CUR FLOOR NUMBER IS $cur_room_num, GUARDIAN FLOOR NUM IS _guardian_floor
NEXT ROOM IS $next_room.room_type
<</if>>
<</if>>
* Other Damage Mods *
<<set _dmg to (Math.round(_dmg * _args[2])).clamp(1, 1000000)>>
* Brawler Second Attack *
<<if _args[0].class === "Brawler">>
<<set _num_of_atks to 2>>
<<else>>
<<set _num_of_atks to 1>>
<</if>>
<<for _a = _num_of_atks; _a > 0; _a-->>
* Crit Check *
<<d20Roll _args[0]>>
SHE ROLLED A _d20 FOR HER COMBAT CHECK
<<if _d20 === 1>>
<<set _text_triggers.check.atk_fail.push(_args[0].index)>>
<<set _dmg to Math.clamp(Math.round(_dmg * setup.d20_fail), 1, 1000000)>>
<<elseif _d20 === 20>>
<<set _text_triggers.check.atk_crit.push(_args[0].index)>>
LONE WOLF
<<if _args[0].trait_names.includes("Lone Wolf")>>
<<set _dmg += (Math.round(_dmg * setup.lone_wolf.crit_float)).clamp(1, 1000000)>>
DAMAGE: _dmg
<</if>>
HARD-LINE BLESSING
<<if _args[1].effect_names.includes("Hard-line")>>
STARTING DMG: _dmg
HARD-LINE TRIGGERED
<<set _dmg -= Math.round(_dmg * setup.blessing_05_8.float)>>
END DMG: _dmg
<</if>>
<<set _dmg to Math.clamp(Math.round(_dmg * setup.d20_pass), 1, 1000000)>>
<</if>>
SET BRAWLER DMG
<<if _num_of_atks === 2>>
SET SMALLER NUMBER TO SECOND ATTACk
<<if _args[0].dmg_dealt < _dmg>>
<<set _args[0].brawler_2nd_atk to clone(_args[0].dmg_dealt)>>
<<else>>
<<set _args[0].brawler_2nd_atk to clone(_dmg)>>
<</if>>
<</if>>
---SET FINAL DAMAGE FOR GIRL---
<<set _args[0].dmg_dealt += _dmg>>
<<set _creature_damage_taken += _dmg>>
_args[0].class DEALT _dmg DAMAGE
<</for>>
_args[0].class DEALT _args[0].dmg_dealt TOTAL DAMAGE
UPDATE RAIDER REPORT
<<if _args[0].class === "Brawler">>
<<set _first_atk to _args[0].dmg_dealt - _args[0].brawler_2nd_atk>>
<<if _first_atk === _args[0].brawler_2nd_atk>>
<<set _entry to "She attacked and dealt @@.phy;"+_first_atk+"@@ damage twice with two attacks.">>
<<else>>
<<set _entry to "She attacked and dealt @@.phy;"+_first_atk+"@@ and @@.phy;"+_args[0].brawler_2nd_atk+"@@ damage with two attacks.">>
<</if>>
<<elseif _args[0].type === "Physical">>
<<set _entry to "She attacked and dealt @@.phy;"+_args[0].dmg_dealt+"@@ damage.">>
<<else>>
<<set _entry to "She attacked and dealt @@.mag;"+_args[0].dmg_dealt+"@@ damage.">>
<</if>>
<<set _lastLog to _args[0].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set _args[0].report.log.push(_lastLog)>>
<</if>>
<</widget>><<widget "CreatureChooseTarget">>
<<set _raiders_role_list to []>> holds all the roles the raiders have
<<set _target_text_triggers = {
bubble_butt: [],
perky: [],
sweet_scent: []
}>>
<<set _target_count to 0>> holds number of current targets
<<set _confirmed_targets to 0>> holds number of current raiders being attacked
SET ALL RAIDERS TO ATTACKED IF CREATURE ATTACKS ALL
<<if _args[1].targets >= _args[0].length>>
<<for _z = 0; _z < _args[0].length; _z++>>
<<set _args[0][_z].attacked to true>>
<</for>>
CHOOSE RAIDER TO ATTACK
<<else>>
FIND RAIDER BASED OFF TRAITS AND STATUSES
<<set _target_found to false>> set to true if target was found
<<for _z = 0; _z < _args[0].length; _z++>>
<<set _cur_girl to _args[0][_z]>>
BUBBLE BUTT
<<if _cur_girl.trait_names.includes("Bubble Butt") && _args[1].fetishes.includes(setup.bubble_butt.kink)>>
<<set _cur_girl.targeted to true>>
<<set _target_text_triggers.bubble_butt.push(_cur_girl.index)>>
<</if>>
PERKY
<<if _cur_girl.trait_names.includes("Perky") && _args[1].fetishes.includesAny(setup.perky.kink)>>
<<set _cur_girl.targeted to true>>
<<set _target_text_triggers.perky.push(_cur_girl.index)>>
<</if>>
SWEET SCENT
<<if _cur_girl.trait_names.includes("Sweet Scent") && _cur_girl.status_names.includesAny(setup.sweet_scent.statuses)>>
<<set _cur_girl.targeted to true>>
<<set _target_text_triggers.sweet_scent.push(_cur_girl.index)>>
<</if>>
<</for>>
<<set _target_positions to []>>
<<for _i = 0; _i < _args[0].length; _i++>>
<<if _args[0][_i].targeted === true>>
<<set _target_positions.push(_i)>>
<</if>>
<</for>>
CHOOSE RANDOM TARGET FROM LIST IF POSSIBLE
<<if _target_positions.length > 0>>
<<set _target_list to _target_positions.randomMany(_args[1].targets)>>
<<for _t = 0; _t < _target_list.length; _t++>>
<<set _target_num to _target_list[_t]>>
<<set _args[0][_target_num].attacked to true>>
<<set _confirmed_targets++>>
<</for>>
<</if>>
FIND ADDITIONAL TARGETS IF NEEDED
<<if _confirmed_targets < _args[1].targets>>
<<for _r = 0; _r < _args[0].length; _r++>>
<<if _args[0][_r].attacked === false>>
<<set _args[0][_r].attacked to true>>
<<set _confirmed_targets++>>
<<if _confirmed_targets === _args[1].targets>>
FOUND ALL TARGETS
<<break>>
<</if>>
<</if>>
<</for>>
<</if>>
<</if>>
<</widget>>
/* <<for _z = 0; _z < setup.role_list.length; _z++>> finds list of targetable raiders based on position
<<for _r = 0; _r < _args[0].length; _r++>>
<<if _args[0][_r].role === setup.role_list[_z]>>
assign raider as targeted and increase count
<<set _args[0][_r].targeted to true>>
<<set _target_count++>>
<</if>>
<</for>>
<<if _target_count <= _args[1].targets - _confirmed_targets>>
if number of targets is less than number of attacks, assign targets as attacked, increase confirmed targets, and proceed to next role
<<for _r = 0; _r < _args[0].length; _r++>>
<<if _args[0][_r].targeted === true && _args[0][_r].attacked === false>>
<<set _args[0][_r].attacked to true>>
<<set _confirmed_targets++>>
<</if>>
<</for>>
<<set _target_count to 0>> reset count
<<if _args[1].targets === _confirmed_targets>>
<<break>> FOUND ALL TARGETS
<<else>>
<<continue>> NEED MORE TARGETS
<</if>>
<<else>>
if number of targets is equal or greater, choose targets randomly for each attack still required based on attacks minus confirmed targets
<<set _target_positions to []>>
<<for _r = 0; _r < _args[0].length; _r++>>
<<if _args[0][_r].targeted === true && _args[0][_r].attacked === false>>
<<set _target_positions.push(_r)>>
<</if>>
<</for>>
<<set _num to _target_count - (_args[1].targets - _confirmed_targets)>> number of targets remaining: _num
<<set _attacked_list to _target_positions.randomMany(_num)>>
<<for _t = 0; _t < _attacked_list.length; _t++>>
<<set _target_num to _attacked_list[_t]>>
<<set _args[0][_target_num].attacked to true>>
<<set _confirmed_targets++>>
<</for>>
<<break>> end loop for attacks
<</if>>
<</for>>
<</if>>
<</if>>
<</widget>> */<<widget "NormalAttack">>
<<if !_args[3]>>
<<set _args[3] to 1>>
<</if>>
_args[0].name is raider and _args[1].name is current room and _args[2] is base damage _args[3] is damage modifier
TRUNC ATTACK
<<set _args[2] to Math.trunc(_args[2])>>
* First, Dmg Mult from Endurance or Perseverance *
PHYSICAL ATTACK
<<if _args[1].attack_type === "Physical">>
<<set _def to clone(_args[0].cur_end)>>
THE RAIDER'S ENDURANCE IS _def
MAGICAL ATTACK
<<elseif _args[1].attack_type === "Magical">>
<<set _def to clone(_args[0].cur_pers)>>
THE RAIDER'S PERSEVERANCE IS _def
TRUE DAMAGE
<<elseif _args[1].attack_type === "True">>
DAMAGE IS NOT REDUCED
<<set _def to 0>>
<</if>>
* Def Mitigation *
LUSTFUL PENETRATION BLESSING
<<if _args[1].effect_names.includes("Lustful Penetration")>>
<<for _z = 0; _z < _args[1].effects.length; _z++>>
<<if _args[1].effects[_z].id === "Lustful Penetration">>
<<set _def -= (Math.round(_def * _args[1].effects[_z].float)).clamp(1, 1000000)>>
LUSTFUL PRENETRATION REDUCED DEF TO _def
<<break>>
<</if>>
<</for>>
<</if>>
LEWD MASTERMIND BLESSING
<<if _args[1].effect_names.includes("Lewd Mastermind")>>
<<for _z = 0; _z < _args[1].effects.length; _z++>>
<<if _args[1].effects[_z].id === "Lewd Mastermind">>
<<if $pc_blessing_list.includes("Machine Mastery")>>
<<set _def -= (Math.round((_def * _args[1].effects[_z].float) * 2)).clamp(1, 1000000)>>
<<else>>
<<set _def -= (Math.round(_def * _args[1].effects[_z].float)).clamp(1, 1000000)>>
<</if>>
LEWD MASTERMIND REDUCED DEF TO _def
<<break>>
<</if>>
<</for>>
<</if>>
DEF MULT
<<set _def_mult to (setup.dmg_mult / (setup.dmg_mult + _def)).toFixed(3)>>
MODED DMG BY <<- _def_mult * 100>>
<<set _args[2] *= _def_mult>>
DAMAGE REDUCED TO _args[2]
CLAMP AND ROUND
<<set _args[2] to Math.clamp(Math.round(_args[2]), 1, 1000000)>>
FINAL DMG _args[2]
* Then apply Trait, Status, and Blessing Effects *
SEXUAL TRAITS
PHYSICAL TRAITS
FRAGILE
<<if _args[0].trait_names.includes("Fragile") && _args[1].attack_type === "Physical">>
<<set _args[2] += (Math.round(_args[2] * setup.fragile.float)).clamp(1, 1000000)>>
DAMAGE: _args[2]
<</if>>
THICC
<<if _args[0].trait_names.includes("Thicc")>>
<<set _args[2] -= (Math.round(_args[2] * setup.thicc.float)).clamp(1, 1000000)>>
<<if _args[2] < 1>>
<<set _args[2] to 1>>
<</if>>
DAMAGE: _args[2]
<</if>>
MENTAL TRAITS
SPECIAL TRAITS
ROYAL GUARD
<<if _args[0].trait_names.includes("Royal Guard") && $raiders.length > 1>>
<<set _args[2] -= (Math.round(_args[2] * (setup.royal_guard.float * ($raiders.length - 1)))).clamp(1, 1000000)>>
<<if _args[2] < 1>>
<<set _args[2] to 1>>
<</if>>
DAMAGE: _args[2]
<</if>>
DESCENDANT
<<if _args[0].trait_names.includes("Descendant") && _args[1].attack_type === "Physical">>
<<set _args[2] -= (Math.round(_args[2] * setup.descendant.float)).clamp(1, 1000000)>>
<<if _args[2] < 1>>
<<set _args[2] to 1>>
<</if>>
DAMAGE: _args[2]
<</if>>
* Status Effects *
FLOW
<<if _args[0].status_names.includes("Flow")>>
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
FIND STATUS
<<if _args[0].statuses[_z].id === setup.flow.id>>
FIND AMOUNT AND SUBTRACT DAMAGE
<<set _args[2] -= (Math.round(_args[2] * (setup.flow.float * _args[0].statuses[_z].stack))).clamp(1, 1000000)>>
<<if _args[2] < 1>>
<<set _args[2] to 1>>
<</if>>
DAMAGE: _args[2]
<<break>>
<</if>>
<</for>>
<</if>>
GRIT POTION
<<if _args[0].status_names.includes("Grit Potion") && _args[1].attack_type === "Physical">>
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
FIND STATUS
<<if _args[0].statuses[_z].id === setup.grit_potion.id>>
<<set _percent to _args[0].statuses[_z].amount / 100>>
CALC AMOUNT OF DAMAGE TO REDUCE
<<set _args[2] -= (Math.round(_args[2] * _percent)).clamp(1, 1000000)>>
DAMAGE: _dmg
BREAK LOOP
<<break>>
<</if>>
<</for>>
<</if>>
METTLE POTION
<<if _args[0].status_names.includes("Mettle Potion") && _args[1].attack_type === "Magical">>
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
FIND STATUS
<<if _args[0].statuses[_z].id === setup.mettle_potion.id>>
<<set _percent to _args[0].statuses[_z].amount / 100>>
CALC AMOUNT OF DAMAGE TO REDUCE
<<set _args[2] -= (Math.round(_args[2] * _percent)).clamp(1, 1000000)>>
DAMAGE: _dmg
BREAK LOOP
<<break>>
<</if>>
<</for>>
<</if>>
* Blessing Effects *
TREASURE GUARDIAN
<<if $pc_blessing_list.includes("Treasure Guardian")>>
FIND THE LAST FLOOR IN DUNGEON
<<for _d = $dungeon_floor_list.length - 1; _d >= 0; _d-->>
<<if $dungeon_floor_list[_d].built === true>>
<<set _guardian_floor to _d>>
LAST FLOOR IS THE _d + 1 FLOOR
<<break>>
<<else>>
<<continue>>
<</if>>
<</for>>
<<if _args[1].room_type === "Creature" && $cur_room_num === _guardian_floor>>
INCREASE DAMAGE
<<set _args[2] += (Math.round(_args[2] * setup.blessing_04_11.float)).clamp(1, 1000000)>>
TRIGGER TEXT
<<set _text_triggers.blessing.treasure_guardian to true>>
DAMAGE: _args[2]
<<else>>
CUR FLOOR NUMBER IS $cur_room_num, GUARDIAN FLOOR NUM IS _guardian_floor
NEXT ROOM IS $next_room.room_type
<</if>>
<</if>>
* Other Damage Modifiers *
<<set _args[2] to (Math.round(_args[2] * _args[3])).clamp(1, 1000000)>>
* Masochist Trait *
CONVERT DAMAGE FOR MASOCHIST
<<if _args[0].trait_names.includes("Masochist") && _total_dmg > setup.masochist.min_dmg && _args[0].cur_lust >= _args[0].max_lust - 1>>
<<set _amount to (Math.round(_total_dmg * setup.masochist.float)).clamp(1, 1000000)>>
<<if _amount + _args[0].cur_lust > _args[0].max_lust - 1>>
<<set _amount to _args[0].max_lust - _args[0].cur_lust - 1>>
<</if>>
<<set _args[2] -= _amount>>
<<set _args[0].cur_lust += _amount>>
<<set _text_triggers.trait.masochist.push(_args[0].index)>>
<<for _z = 0; _z < _args[0].traits.length; _z++>>
<<if _args[0].traits[_z].name === "Masochist">>
<<set _args[0].traits[_z].amount to _amount>>
<<break>>
<</if>>
<</for>>
MASOCHIST CONVERTED _amount DAMAGE TO @@.lust;LUST@@
DAMAGE: _args[2]
<</if>>
SET DAMAGE TAKEN
<<set _args[0].dmg_taken += _args[2]>>
THE _args[0].class TOOK _args[2] DAMAGE
<</widget>>
<<widget "SexualAttack">>
<<if !_args[3]>>
<<set _args[3] to 1>>
<</if>>
_args[0].name is raider and _args[1].name is current room and _args[2] is base sex damage and _args[3] is sex modifier
TRUNC ATTACK
<<set _args[2] to Math.trunc(_args[2])>>
* First, apply Fetishes *
AMOROUS TRAIT BEFORE KINKS AND TURN OFFS, ONLY TRIGGERS ONCE
<<if _args[0].trait_names.includes("Amorous") && !_text_triggers.trait.amorous_kink.includes(_args[0].index) && !_text_triggers.trait.amorous_turnoff.includes(_args[0].index)>>
<<set _options to []>>
<<for _z = 0; _z < _args[1].fetishes.length; _z++>>
<<if !_args[0].kinks.includes(_args[1].fetishes[_z]) && !_args[0].turnoffs.includes(_args[1].fetishes[_z])>>
<<set _options.push(_args[1].fetishes[_z])>>
<</if>>
<</for>>
<<if _options.length > 0>>
<<set _fetish to _options.random()>>
<<set _rng to random(1)>>
<<if _rng === 1>>
<<set _text_triggers.trait.amorous_kink.push(_args[0].index)>>
<<set _args[0].kinks.push(_fetish)>>
<<set _delete to _args[0].fetishes.delete(_fetish)>>
PUSH NEW KINK IN TRAIT
<<for _z = 0; _z < _args[0].traits.length; _z++>>
<<if _args[0].traits[_z].name === "Amorous">>
<<set _args[0].traits[_z].new_kink to _fetish>>
<<break>>
<</if>>
<</for>>
<<else>>
<<set _text_triggers.trait.amorous_turnoff.push(_args[0].index)>>
<<set _args[0].turnoffs.push(_fetish)>>
<<set _delete to _args[0].fetishes.delete(_fetish)>>
PUSH NEW TURNOFF IN TRAIT
<<for _z = 0; _z < _args[0].traits.length; _z++>>
<<if _args[0].traits[_z].name === "Amorous">>
<<set _args[0].traits[_z].new_turnoff to _fetish>>
<<break>>
<</if>>
<</for>>
<</if>>
<</if>>
<</if>>
KINKS
<<if _args[0].kinks.includesAny(_args[1].fetishes)>>
CREATE LIST OF OPTIONS
<<set _kink_list to clone(_args[1].fetishes)>>
<<set _options to _kink_list.delete(_args[0].kinks)>>
SET KINK TRIGGER
<<set _args[0].kink_trigger.pushUnique(_options.random())>>
INTENSE TRAIT
<<if _args[0].trait_names.includes("Intense")>>
<<set _args[2] += (Math.round(_args[2] * setup.intense.float)).clamp(1, 1000000)>>
DAMAGE: _args[2]
NORMAL KINK BONUS
<<else>>
<<set _args[2] += (Math.round(_args[2] * setup.kink_mod)).clamp(1, 1000000)>>
DAMAGE: _args[2]
<</if>>
LACTATION STATUS TREATED AS KINK
<<elseif _args[0].status_names.includes(setup.lactation.id) && _args[1].fetishes.includes(setup.lactation.fetish)>>
<<set _args[0].kink_trigger.push(clone(setup.lactation.fetish))>>
INTENSE TRAIT
<<if _args[0].trait_names.includes("Intense")>>
<<set _args[2] += (Math.round(_args[2] * setup.intense.float)).clamp(1, 1000000)>>
DAMAGE: _args[2]
NORMAL KINK BONUS
<<else>>
<<set _args[2] += (Math.round(_args[2] * setup.kink_mod)).clamp(1, 1000000)>>
DAMAGE: _args[2]
<</if>>
FUTANARI STATUS TREATED AS KINK
<<elseif _args[0].status_names.includes(setup.futanari.id) && _args[1].fetishes.includes(setup.futanari.fetish)>>
<<set _args[0].kink_trigger.push(clone(setup.futanari.fetish))>>
INTENSE TRAIT
<<if _args[0].trait_names.includes("Intense")>>
<<set _args[2] += (Math.round(_args[2] * setup.intense.float)).clamp(1, 1000000)>>
DAMAGE: _args[2]
NORMAL KINK BONUS
<<else>>
<<set _args[2] += (Math.round(_args[2] * setup.kink_mod)).clamp(1, 1000000)>>
DAMAGE: _args[2]
<</if>>
TURNOFFS
<<elseif _args[0].turnoffs.includesAny(_args[1].fetishes)>>
CREATE LIST OF OPTIONS
<<set _turnoff_list to clone(_args[1].fetishes)>>
<<set _options to _turnoff_list.delete(_args[0].turnoffs)>>
SET KINK TRIGGER
<<set _args[0].turnoff_trigger.pushUnique(_options.random())>>
INTENSE TRAIT
<<if _args[0].trait_names.includes("Intense")>>
<<set _args[2] -= (Math.round(_args[2] * setup.intense.float)).clamp(1, 1000000)>>
<<if _args[2] < 1>>
<<set _args[2] to 1>>
<</if>>
DAMAGE: _args[2]
NORMAL TURNOFF PENALTY
<<else>>
<<set _args[2] -= (Math.round(_args[2] * setup.turnoff_mod)).clamp(1, 1000000)>>
<<if _args[2] < 1>>
<<set _args[2] to 1>>
<</if>>
DAMAGE: _args[2]
<</if>>
<</if>>
* Sex Mult from Tolerance *
<<set _toler to clone(_args[0].cur_toler)>>
CUR TOLER: _toler
* Tolerance Mitigation *
LUSTFUL PENETRATION BLESSING
<<if _args[1].effect_names.includes("Lustful Penetration")>>
<<for _z = 0; _z < _args[1].effects.length; _z++>>
<<if _args[1].effects[_z].id === "Lustful Penetration">>
<<set _toler -= (Math.round(_toler * _args[1].effects[_z].float)).clamp(1, 1000000)>>
LUSTFUL PRENETRATION REDUCED TOLERANCE TO _toler
<<break>>
<</if>>
<</for>>
<</if>>
LEWD MASTERMIND BLESSING
<<if _args[1].effect_names.includes("Lewd Mastermind")>>
<<for _z = 0; _z < _args[1].effects.length; _z++>>
<<if _args[1].effects[_z].id === "Lewd Mastermind">>
<<if $pc_blessing_list.includes("Machine Mastery")>>
<<set _toler -= (Math.round((_toler * _args[1].effects[_z].float) * 2)).clamp(1, 1000000)>>
<<else>>
<<set _toler -= (Math.round(_toler * _args[1].effects[_z].float)).clamp(1, 1000000)>>
<</if>>
LEWD MASTERMIND REDUCED TOLERANCE TO _toler
<<break>>
<</if>>
<</for>>
<</if>>
MARK OF LUST
<<if _args[0].status_names.includes("Mark of Lust") && _toler > 1>>
<<set _toler -= (Math.round(_toler * setup.mark_of_lust.float)).clamp(1, 1000000)>>
<<if _toler < 1>>
<<set _toler to 1>>
<</if>>
MARK OF LUST REDUCED TOLER TO _toler
<<set _text_triggers.status.markoflust_trig.push(_args[0].index)>>
REMOVE MARK
<<for _e = 0; _e < _args[0].statuses.length; _e++>>
<<if _args[0].statuses[_e].id === setup.mark_of_lust.id>>
<<set _delete to _args[0].statuses.deleteAt(_e)>>
<<set _delete to _args[0].status_names.delete(setup.mark_of_lust.id)>>
<<break>>
<</if>>
<</for>>
<</if>>
* Sex Mult *
SEX MULT
<<set _sex_mult to (setup.sex_mult / (setup.sex_mult + _toler)).toFixed(3)>>
MODED SEX BY <<- _sex_mult * 100>>
<<set _args[2] *= _sex_mult>>
SEX REDUCED TO _args[2]
CLAMP AND ROUND
<<set _args[2] to Math.clamp(Math.round(_args[2]), 1, 1000000)>>
FINAL SEX _args[2]
* Apply other sexual damage trait, status, and blessing effects *
* SEXUAL TRAITS *
SQUARE
<<if _args[0].trait_names.includes("Square")>>
<<set _args[2] -= (Math.round(_args[2] * setup.square.float)).clamp(1, 1000000)>>
<<if _args[2] < 1>>
<<set _args[2] to 1>>
<</if>>
DAMAGE: _args[2]
<</if>>
* PHYSICAL TRAITS *
BUBBLE BUTT
<<if _args[0].trait_names.includes("Bubble Butt") && _args[1].fetishes.includes(setup.bubble_butt.kink)>>
<<set _args[2] -= (Math.round(_args[2] * setup.bubble_butt.float)).clamp(1, 1000000)>>
<<if _args[2] < 1>>
<<set _args[2] to 1>>
<</if>>
DAMAGE: _args[2]
<</if>>
VOLUPTUOUS
<<if _args[0].trait_names.includes("Voluptuous") && _args[1].fetishes.includesAny(setup.voluptuous.fetishes)>>
<<set _args[2] *= setup.voluptuous.mult>>
<<set _text_triggers.trait.voluptuous.push(_args[0].index)>>
DAMAGE: _args[2]
<</if>>
PETITE
<<if _args[0].trait_names.includes("Petite") && _args[1].fetishes.includesAny(setup.petite.fetishes)>>
<<set _args[2] *= setup.petite.mult>>
<<set _text_triggers.trait.petite.push(_args[0].index)>>
DAMAGE: _args[2]
<</if>>
THICC
<<if _args[0].trait_names.includes("Thicc") && _args[1].fetishes.includesAny(setup.thicc.fetishes)>>
<<set _args[2] *= setup.thicc.mult>>
<<set _text_triggers.trait.thicc.push(_args[0].index)>>
DAMAGE: _args[2]
<</if>>
DAMAGE REDUCTION THICC
<<if _args[0].trait_names.includes("Thicc")>>
<<set _args[2] -= (Math.round(_args[2] * setup.thicc.float)).clamp(1, 1000000)>>
<<if _args[2] < 1>>
<<set _args[2] to 1>>
<</if>>
DAMAGE: _args[2]
<</if>>
FLAT
<<if _args[0].trait_names.includes("Flat") && _args[1].fetishes.includesAny(setup.flat.fetishes)>>
<<set _args[2] -= (Math.round(_args[2] * setup.flat.other_float)).clamp(1, 1000000)>>
<<if _args[2] < 1>>
<<set _args[2] to 1>>
<</if>>
<<set _text_triggers.trait.flat.push(_args[0].index)>>
DAMAGE: _args[2]
<</if>>
PERKY
<<if _args[0].trait_names.includes("Perky") && _args[1].fetishes.includes(setup.perky.kink)>>
<<set _args[2] -= (Math.round(_args[2] * setup.perky.float)).clamp(1, 1000000)>>
<<if _args[2] < 1>>
<<set _args[2] to 1>>
<</if>>
DAMAGE: _args[2]
<</if>>
* SPECIAL TRAITS *
SELFLESS HERO
<<if _args[0].trait_names.includes("Selfless Hero") && $raiders.length > 1>>
<<set _args[2] -= (Math.round(_args[2] * (setup.selfless_hero.float * ($raiders.length - 1)))).clamp(1, 1000000)>>
<<if _args[2] < 1>>
<<set _args[2] to 1>>
<</if>>
DAMAGE: _args[2]
<</if>>
* STATUSES *
STIMULATED
<<if _args[0].status_names.includes(setup.stimulated.id) && _args[1].fetishes.includesAny(setup.stimulated.fetishes)>>
<<set _args[2] += (Math.round(setup.stimulated.float * _args[2])).clamp(1, 1000000)>>
SHOW TEXT TRIGGER
<<set _text_triggers.status.stimulated_trig.push(_args[0].index)>>
REMOVE STATUS UNLESS PERM
<<RemoveStatus _args[0] setup.stimulated>>
DAMAGE: _args[2]
<</if>>
FLOW
<<if _args[0].status_names.includes("Flow")>>
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
FIND STATUS
<<if _args[0].statuses[_z].id === setup.flow.id>>
FIND AMOUNT AND SUBTRACT DAMAGE
<<set _args[2] -= (Math.round(_args[2] * (setup.flow.float * _args[0].statuses[_z].stack))).clamp(1, 1000000)>>
<<if _args[2] < 1>>
<<set _args[2] to 1>>
<</if>>
DAMAGE: _args[2]
<<break>>
<</if>>
<</for>>
<</if>>
NUMBING POTION
<<if _args[0].status_names.includes("Numbing Potion")>>
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
FIND STATUS
<<if _args[0].statuses[_z].id === setup.numbing_potion.id>>
<<set _percent to _args[0].statuses[_z].amount / 100>>
CALC AMOUNT OF DAMAGE TO REDUCE
<<set _args[2] -= (Math.round(_args[2] * _percent)).clamp(1, 1000000)>>
DAMAGE: _dmg
BREAK LOOP
<<break>>
<</if>>
<</for>>
<</if>>
* BLESSINGS *
TREASURE GUARDIAN
<<if $pc_blessing_list.includes("Treasure Guardian")>>
FIND THE LAST FLOOR IN DUNGEON
<<for _d = $dungeon_floor_list.length - 1; _d >= 0; _d-->>
<<if $dungeon_floor_list[_d].built === true>>
<<set _guardian_floor to _d>>
LAST FLOOR IS THE _d + 1 FLOOR
<<break>>
<<else>>
<<continue>>
<</if>>
<</for>>
<<if _args[1].room_type === "Creature" && $cur_room_num === _guardian_floor>>
INCREASE SEX DAMAGE
<<set _args[2] += (Math.round(_args[2] * setup.blessing_04_11.float)).clamp(1, 1000000)>>
TRIGGER TEXT
<<set _text_triggers.blessing.treasure_guardian to true>>
DMG: _args[2]
<<else>>
CUR FLOOR NUMBER IS $cur_room_num, GUARDIAN FLOOR NUM IS _guardian_floor
NEXT ROOM IS $next_room.room_type
<</if>>
<</if>>
* Other Sex Modifiers *
<<set _args[2] to (Math.round(_args[2] * _args[3])).clamp(1, 1000000)>>
* LUST MODIFIERS *
_args[2] IS NOW CONSIDERED <span class="lust">LUST</span>
SEXUAL TRAITS
GOKKUN
<<if _args[0].trait_names.includes("Gokkun") && _args[1].fetishes.includesAny(setup.gokkun.fetishes) && _args[0].attacked === true && _args[0].cur_hp < _args[0].max_hp>>
SET TRIGGER
<<set _text_triggers.trait.gokkun.push(_args[0].index)>>
HEAL
<<set _heal to (Math.round(_args[0].max_hp * setup.gokkun.heal_float)).clamp(1, 1000000)>>
<<if _heal + _args[0].cur_hp > _args[0].max_hp>>
<<set _heal to _args[0].max_hp - _args[0].cur_hp>>
<</if>>
<<set _args[0].cur_hp += _heal>>
PUSH HEAL AMOUNT TO TRAIT
<<for _z = 0; _z < _args[0].traits.length; _z++>>
<<if _args[0].traits[_z].name === "Gokkun">>
<<set _args[0].traits[_z].heal_amount to _heal>>
<<break>>
<</if>>
<</for>>
GOKKUN RESTORED @@.health;_heal HEALTH@@
<</if>>
PHYSICAL TRAITS
SQUIRTER
<<if _args[0].trait_names.includes("Squirter") && _args[1].fetishes.includesAny(setup.squirter.fetishes) && !_text_triggers.trait.squirter.includes(_args[0].index) && !_text_triggers.trait.squirted.includes(_args[0].index)>>
<<if _args[0].status_names.includesAny(setup.squirter.statuses)>>
ALREADY WET
<<set _amount to (Math.round(_args[0].max_lust * setup.squirter.float)).clamp(1, 1000000)>>
<<set _args[2] += _amount>>
TRIGGER TEXT
<<set _text_triggers.trait.squirted.push(_args[0].index)>>
ADD AMOUNT TO TRAIT
<<for _z = 0; _z < _args[0].traits.length; _z++>>
<<if _args[0].traits[_z].name === "Squirter">>
<<set _args[0].traits[_z].amount to _amount>>
<<break>>
<</if>>
<</for>>
SHE SQURITED AND GAINED @@.lust;_amount LUST@@
DAMAGE: _args[2]
<<else>>
DOESNT HAVE WET
APPLY WET
<<if !_args[0].trait_names.includes("Dry")>>
<<set _args[0].statuses.push(setup.squirter.status)>>
<<set _args[0].status_names.push(setup.squirter.status.name)>>
TRIGGER TEXT
<<set _text_triggers.trait.squirter.push(_args[0].index)>>
<</if>>
SQUIRTER MADE HER WET IF NOT DRY
DAMAGE: _args[2]
<</if>>
<</if>>
MENTAL TRAITS
RESERVED
<<if _args[0].trait_names.includes("Reserved") && _args[1].creature_types.includesAny(setup.reserved.creatures)>>
<<set _amount to (Math.round(_args[2] * setup.reserved.float)).clamp(1, 1000000)>>
<<set _args[2] += _amount>>
TRIGGER TEXT
<<set _text_triggers.trait.reserved_pos.push(_args[0].index)>>
ADD AMOUNT TO TRAIT
<<for _z = 0; _z < _args[0].traits.length; _z++>>
<<if _args[0].traits[_z].name === "Reserved">>
<<set _args[0].traits[_z].amount to _amount>>
<<break>>
<</if>>
<</for>>
RESERVED ADDED @@.lust;_amount LUST@@
DAMAGE: _args[2]
<<elseif _args[0].trait_names.includes("Reserved") && _args[1].creature_types.includesAny(setup.reserved.other_creatures)>>
<<set _amount to (Math.round(_args[2] * setup.reserved.other_float)).clamp(1, 1000000)>>
<<set _args[2] -= _amount>>
TRIGGER TEXT
<<set _text_triggers.trait.reserved_neg.push(_args[0].index)>>
ADD AMOUNT TO TRAIT
<<for _z = 0; _z < _args[0].traits.length; _z++>>
<<if _args[0].traits[_z].name === "Reserved">>
<<set _args[0].traits[_z].amount to _amount>>
<<break>>
<</if>>
<</for>>
RESERVED SUBTRACTED @@.lust;_amount LUST@@
DAMAGE: _args[2]
<</if>>
WILD
<<if _args[0].trait_names.includes("Wild") && _args[1].creature_types.includesAny(setup.wild.creatures)>>
<<set _amount to (Math.round(_args[2] * setup.wild.float)).clamp(1, 1000000)>>
<<set _args[2] += _amount>>
TRIGGER TEXT
<<set _text_triggers.trait.wild_pos.push(_args[0].index)>>
ADD AMOUNT TO TRAIT
<<for _z = 0; _z < _args[0].traits.length; _z++>>
<<if _args[0].traits[_z].name === "Wild">>
<<set _args[0].traits[_z].amount to _amount>>
<<break>>
<</if>>
<</for>>
WILD ADDED @@.lust;_amount LUST@@
DAMAGE: _args[2]
<<elseif _args[0].trait_names.includes("Wild") && _args[1].creature_types.includesAny(setup.wild.other_creatures)>>
<<set _amount to (Math.round(_args[2] * setup.wild.other_float)).clamp(1, 1000000)>>
<<set _args[2] -= _amount>>
TRIGGER TEXT
<<set _text_triggers.trait.wild_neg.push(_args[0].index)>>
ADD AMOUNT TO TRAIT
<<for _z = 0; _z < _args[0].traits.length; _z++>>
<<if _args[0].traits[_z].name === "Wild">>
<<set _args[0].traits[_z].amount to _amount>>
<<break>>
<</if>>
<</for>>
WILD SUBTRACTED @@.lust;_amount LUST@@
DAMAGE: _args[2]
<</if>>
STATUSES
WET
<<if _args[0].status_names.includes("Wet")>>
DRENCHED CHECK
<<if _args[0].status_names.includes("Drenched")>>
INCREASES EFFECT FROM WET STATUS
<<set _amount to (Math.round(_args[2] * (setup.wet.float * setup.drenched.mult))).clamp(1, 1000000)>>
<<else>>
NORMAL EFFECT FROM WET STATUS
<<set _amount to (Math.round(_args[2] * setup.wet.float)).clamp(1, 1000000)>>
<</if>>
REDUCE LUST IF TWISTED
<<if _args[0].status_names.includes("Twisted")>>
<<set _args[2] -= _amount>>
<<if _args[2] < 1>>
<<set _args[2] to 1>>
<</if>>
WET SUBTRACTED @@.lust;_amount LUST@@
DAMAGE: _args[2]
INCREASE LUST
<<else>>
<<set _args[2] += _amount>>
WET ADDED @@.lust;_amount LUST@@
DAMAGE: _args[2]
<</if>>
<</if>>
INTOXICATED
<<if _args[0].status_names.includes("Intoxicated")>>
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
FIND STATUS
<<if _args[0].statuses[_z].id === setup.intoxicated.id>>
FIND AMOUNT AND ADD DAMAGE
<<set _args[2] += (Math.round(_args[2] * (_args[0].statuses[_z].float * _args[0].statuses[_z].stack))).clamp(1, 1000000)>>
<<break>>
<</if>>
<</for>>
DAMAGE: _args[2]
<</if>>
CLAMP LUST
<<if _args[2] < 1>>
<<set _args[2] to 1>>
<</if>>
* SET LUST TAKEN *
SET AMOUNT TAKEN
<<set _args[0].sex_taken += _args[2]>>
THE _args[0].class TOOK _args[2] SEXUAL DAMAGE
<</widget>><<widget "PostCombat">>
_args[0].name is raider and _args[1].name is current room
ASSIGN NEXT RAIDER TO CUR GIRL
<<set _cur_girl to _args[0]>>
ADD DAMAGE TO RAIDER
<<set _cur_girl.cur_hp -= _cur_girl.dmg_taken>>
INCREASE TOTAL STATS
<<set _args[1].total_dmgdealt += _cur_girl.dmg_taken>>
INCREASE SPELL STATS IF SUMMONED
<<if _args[1].summoned === true>>
<<set $pc_spellbook[_spell_index].total_dmgdealt += _cur_girl.dmg_taken>>
<</if>>
CLAMP HP TO 1 IF ROOM CANNOT CAPTURE
<<if _args[1].can_capture === false>>
<<set _cur_girl.cur_hp to Math.clamp(_cur_girl.cur_hp, 1, _cur_girl.max_hp)>>
<</if>>
INCREASE LUST
<<set _cur_girl.cur_lust += _cur_girl.sex_taken>>
INCREASE STATS
<<set _args[1].total_sexdealt += _cur_girl.sex_taken>>
INCREASE SPELL STATS IF SUMMONED
<<if _args[1].summoned === true>>
<<set $pc_spellbook[_spell_index].total_sexdealt += _cur_girl.sex_taken>>
<</if>>
CLAMP LUST TO 1 LESS THAN MAX IF ROOM CANNOT CAPTURE
<<if _args[1].can_capture === false>>
<<set _cur_girl.cur_lust to Math.clamp(_cur_girl.cur_lust, 0, _cur_girl.max_lust - 1)>>
<</if>>
EDGER TRAIT CHECK
<<if _cur_girl.trait_names.includes("Edger") && _cur_girl.cur_lust >= _cur_girl.max_lust>>
FIND TRAIT
<<for _z = 0; _z < _cur_girl.traits.length; _z++>>
<<if _cur_girl.traits[_z].name === "Edger">>
TRIGGER IF DOES NOT HAVE EDGING AND NOT ALREADY TRIGGERED ONCE
<<if _cur_girl.traits[_z].bool === false && !_cur_girl.status_names.includesAny(setup.edger.statuses)>>
SET TRAIT TRIGGER TO TRUE
<<set _cur_girl.traits[_z].bool to true>>
SET LUST TO 1 LESS THAN MAX IF SHE IS NOT EGDING
<<set _cur_girl.cur_lust to _cur_girl.max_lust - 1>>
<<set _text_triggers.trait.edger.push(_cur_girl.index)>>
<</if>>
BREAK AFTER FINDING TRAIT
<<break>>
<</if>>
<</for>>
<</if>>
*Capture Check*
<<if _cur_girl.cur_lust >= _cur_girl.max_lust || _cur_girl.cur_hp <= 0 || _cur_girl.status_names.includes(setup.captured.id)>>
UPDATE GIRL CAPTURE INFO
<<if _cur_girl.cur_lust >= _cur_girl.max_lust>>
<<set _cur_girl.cur_lust to _cur_girl.max_lust>>
<<set _cur_girl.cur_hp to Math.clamp(_cur_girl.cur_hp, 1, _cur_girl.max_hp)>>
<<elseif _cur_girl.cur_hp < 0>>
<<set _cur_girl.cur_hp to 0>>
<</if>>
SET CAPTURE STATUS
<<AddStatus _cur_girl setup.captured true>>
ROOM CAPTURE STATS
<<set _args[1].total_captures++>>
<<set _args[1].report.captures++>>
INCREASE SPELL STATS IF SUMMONED
<<if _args[1].summoned === true>>
<<set $pc_spellbook[_spell_index].total_captures++>>
<</if>>
UPDATE RAIDER LOG
<<if _cur_girl.cur_hp <= 0>>
<<set _entry to clone(_args[1].defeat_entry)>>
<<else>>
<<set _entry to clone(_args[1].capture_entry)>>
<</if>>
<<set _lastLog to _cur_girl.report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set _cur_girl.report.log.push(clone(_lastLog))>>
<</if>>
*Apply Effects*
CAPTURE EFFECTS
ABANDON EFFECTS
ENTOMOPHOBIA
<<if _cur_girl.trait_names.includes("Entomophobia") && _args[1].creature_types.includesAny(setup.entomophobia.creatures) && _cur_girl.attacked === true && !_cur_girl.status_names.includes("Captured") && !_cur_girl.trait_names.includes("Courageous")>>
<<set _rng to random(1, 100)>>
<<if setup.entomophobia.percent >= _rng>>
UPDATE GIRL ABANDON INFO
<<set _text_triggers.trait.entomophobia.push(_cur_girl.index)>>
<<AddStatus _cur_girl setup.abandoned true>>
UPDATE REPORT
<<set _entry to "She Abandoned the Dungeon due to her Entomophobia.">>
<<set _lastLog to _cur_girl.report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set _cur_girl.report.log.push(clone(_lastLog))>>
SET RAIDER LOG RESULT
<<set _result to "She Abandoned her Raid after the encounter with your "+_args[1].name+" due to her Entomophobia.">>
<<set _cur_girl.report.result to clone(_result)>>
<<set _cur_girl.report.result_pic to _cur_girl.pic>>
PUSH LOG
<<set $raider_report_list.push(_cur_girl.report)>>
ABANDON STATS
<<set $pc_total_raiders_abandoned++>>
<<set _args[1].report.abandons++>>
<</if>>
<</if>>
TERAPHOBIA
<<if _cur_girl.trait_names.includes("Teraphobia") && _args[1].creature_types.includesAny(setup.teraphobia.creatures) && _cur_girl.attacked === true && !_cur_girl.status_names.includes("Captured") && !_cur_girl.trait_names.includes("Courageous")>>
<<set _rng to random(1, 100)>>
<<if setup.teraphobia.percent >= _rng>>
UPDATE GIRL ABANDON INFO
<<set _text_triggers.trait.teraphobia.push(_cur_girl.index)>>
<<AddStatus _cur_girl setup.abandoned true>>
UPDATE REPORT
<<set _entry to "She Abandoned the Dungeon due to her Teraphobia.">>
<<set _lastLog to _cur_girl.report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set _cur_girl.report.log.push(clone(_lastLog))>>
SET RAIDER LOG RESULT
<<set _result to "She Abandoned her Raid after the encounter with your "+_args[1].name+" due to her Teraphobia.">>
<<set _cur_girl.report.result to clone(_result)>>
<<set _cur_girl.report.result_pic to _cur_girl.pic>>
PUSH LOG
<<set $raider_report_list.push(_cur_girl.report)>>
ABANDON STATS
<<set $pc_total_raiders_abandoned++>>
<<set _args[1].report.abandons++>>
<</if>>
<</if>>
ZOOPHOBIA
<<if _cur_girl.trait_names.includes("Zoophobia") && _args[1].creature_types.includesAny(setup.zoophobia.creatures) && _cur_girl.attacked === true && !_cur_girl.status_names.includes("Captured") && !_cur_girl.trait_names.includes("Courageous")>>
<<set _rng to random(1, 100)>>
<<if setup.zoophobia.percent >= _rng>>
UPDATE GIRL INFO
<<set _text_triggers.trait.zoophobia.push(_cur_girl.index)>>
<<AddStatus _cur_girl setup.abandoned true>>
UPDATE REPORT
<<set _entry to "She Abandoned the Dungeon due to her Zoophobia.">>
<<set _lastLog to _cur_girl.report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set _cur_girl.report.log.push(clone(_lastLog))>>
SET RAIDER LOG RESULT
<<set _result to "She Abandoned her Raid after the encounter with your "+_args[1].name+" due to her Zoophobia.">>
<<set _cur_girl.report.result to clone(_result)>>
<<set _cur_girl.report.result_pic to _cur_girl.pic>>
PUSH LOG
<<set $raider_report_list.push(_cur_girl.report)>>
ABANDON STATS
<<set $pc_total_raiders_abandoned++>>
<<set _args[1].report.abandons++>>
<</if>>
<</if>>
OTHER EFFECTS
FANTASIZER
<<if _cur_girl.trait_names.includes("Fantasizer") && _args[1].room_type === "Creature">>
SET AROUSED STACKS
<<set _stacks to (Math.round(_cur_girl.max_lust * setup.fantasizer.float)).clamp(1, 1000000)>>
<<AddStacks _cur_girl setup.aroused _stacks true>>
TRIGGER TEXT
<<set _text_triggers.trait.fantasizer.push(_cur_girl.index)>>
<</if>>
SOAKED
<<if _cur_girl.trait_names.includes("Dry") && (_cur_girl.cur_lust / _cur_girl.max_lust).toFixed(2) * 100 >= setup.dry.lust_percent>>
TRIGGER TEXT
<<set _text_triggers.trait.soaked.push(_cur_girl.index)>>
FIND INDEX FOR DRY TRAIT AND REPLACE WITH SOAKED
<<for _t = 0; _t < _cur_girl.traits.length; _t++>>
<<if _cur_girl.traits[_t].name === "Dry">>
<<set _cur_girl.traits[_t] to setup.soaked>>
<<set _cur_girl.trait_names[_t] to setup.soaked.name>>
<</if>>
<</for>>
DRENCHED
<<elseif _cur_girl.trait_names.includes("Soaked") && (_cur_girl.cur_lust / _cur_girl.max_lust).toFixed(2) * 100 >= setup.soaked.lust_percent>>
TRIGGER TEXT
<<set _text_triggers.trait.drenched.push(_cur_girl.index)>>
FIND INDEX FOR SOAKED AND REPLACE WITH DRENCHED
<<for _t = 0; _t < _cur_girl.traits.length; _t++>>
<<if _cur_girl.traits[_t].name === "Soaked">>
<<set _cur_girl.traits[_t] to setup.drenched>>
<<set _cur_girl.trait_names[_t] to setup.drenched.name>>
<</if>>
<</for>>
<</if>>
RELENTLESS
<<if _cur_girl.trait_names.includes("Relentless") && _cur_girl.dmg_taken > 0>>
GIVE STATUS IF DOES NOT HAVE ALREADY
<<if !_cur_girl.status_names.includes(setup.relentless.effect_name)>>
<<set _newStatus to clone(setup.stat_up)>>
<<set _newStatus.id to clone(setup.relentless.effect_name)>>
<<set _newStatus.tooltip to clone(setup.relentless.effect_tooltip)>>
<<set _newStatus.stack to 0>>
<<set _newStatus.float to clone(setup.relentless.float)>>
<<set _cur_girl.statuses.push(_newStatus)>>
<<set _cur_girl.status_names.push(_newStatus.id)>>
<</if>>
UPDATE COUNT AND NAME
<<for _z = 0; _z < _cur_girl.statuses.length; _z++>>
<<if _cur_girl.statuses[_z].id === setup.relentless.effect_name>>
ADD STACK
<<set _cur_girl.statuses[_z].stack++>>
UPDATE NAME
<<set _cur_girl.statuses[_z].name to _cur_girl.statuses[_z].id+" x"+_cur_girl.statuses[_z].stack>>
TRIGGER TEXT
<<set _text_triggers.trait.relentless.push(_cur_girl.index)>>
END LOOP
<<break>>
<</if>>
<</for>>
<</if>>
VIRGIN
<<if _cur_girl.trait_names.includes("Virgin") && _args[1].fetishes.includesAny(setup.virgin.fetishes) && _cur_girl.attacked === true>>
TRIGGER TEXT
<<set _text_triggers.trait.virgin.push(_cur_girl.index)>>
REDUCE EXP
<<set _cur_girl.exp to Math.round(_cur_girl.exp / setup.virgin.mult)>>
REMOVE TRAIT
<<for _z = 0; _z < _cur_girl.traits.length; _z++>>
<<if _cur_girl.traits[_z].name === "Virgin">>
<<set _delete to _cur_girl.traits.deleteAt(_z)>>
<<break>>
<</if>>
<</for>>
UPDATE RAIDER TRAIT NAMES
<<set _traits to []>>
<<for _z = 0; _z < _cur_girl.traits.length; _z++>>
<<set _traits.push(_cur_girl.traits[_z].name)>>
<</for>>
<<set _cur_girl.trait_names to _traits>>
UPDATE RAIDER REPORT
<<set _entry to "She lost her Virginity to the " + _args[1].name + ".">>
<<set _lastLog to _cur_girl.report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set _cur_girl.report.log.push(_lastLog)>>
<</if>>
EDGING
<<if !_cur_girl.status_names.includes("Captured") && (_cur_girl.cur_lust >= _cur_girl.max_lust - setup.edging.int_limit || (_cur_girl.cur_lust / _cur_girl.max_lust).toFixed(3) >= setup.edging.limit)>>
<<AddStatus _cur_girl setup.edging true>>
<</if>>
--- UPDATE GIRL ---
<<set _args[0] to _cur_girl>>
REAPPLY STATUSES
<<RaiderUpdate _args[0]>>
<</widget>><<widget "CreaturePostCombat">>
* Add Damage Taken *
<<set _shield_blocked to []>>
<<if _creature_damage_taken > 0>>
ENCHANTRESS'S PROTECTION
<<if _args[1].effect_names.includes("Enchantress's Protection") && _text_triggers.effect.protection === false>>
<<for _z = 0; _z < _args[1].effects.length; _z++>>
<<if _args[1].effects[_z].id === "Enchantress's Protection">>
<<for _a = 0; _a < $raiders.length; _a++>>
<<if $raiders[_a].dmg_dealt > 0>>
<<if $raiders[_a].class === "Brawler">>
PREVENT FIRST ATTACk
<<set _creature_damage_taken -= $raiders[_a].dmg_dealt - $raiders[_a].brawler_2nd_atk>>
<<else>>
PREVENT DAMAGE
<<set _creature_damage_taken -= $raiders[_a].dmg_dealt>>
<</if>>
UPDATE EFFECT
<<set _args[1].effects[_z].raider to clone(_a)>>
TRIGGER TEXT
<<set _text_triggers.effect.protection to true>>
<<break>>
<</if>>
<</for>>
<<break>>
<</if>>
<</for>>
<</if>>
DAMAGE BLOCKED FROM SHIELD
<<for _z = 0; _z < _args[1].effects.length; _z++>>
<<if _args[1].effects[_z].effect_types.includes("Shield")>>
RESET BLOCKED AMOUNT
<<set _args[1].effects[_z].blocked to 0>>
<<if _args[1].effects[_z].shield > _creature_damage_taken>>
SHIELD GREATER THAN DAMAGE TAKEN
<<set _args[1].effects[_z].shield -= _creature_damage_taken>> reduce shield amount
<<set _args[1].effects[_z].blocked += _creature_damage_taken>> increase damage blocked during this combat
<<set _creature_damage_taken to 0>> reduce all damage taken
UPDATE NAME
<<set _args[1].effects[_z].name to _args[1].effects[_z].id + " x" + _args[1].effects[_z].shield>>
<<else>>
SHIELD WEAKER THAN DAMAGE TAKEN
<<set _args[1].effects[_z].blocked += clone(_args[1].effects[_z].shield)>> increase damage blocked during this combat
<<set _creature_damage_taken -= clone(_args[1].effects[_z].shield)>> reduce damage taken
<<set _args[1].effects[_z].shield to 0>> reduce shield to 0
<</if>>
ADD TO BLOCKED LIST
<<set _shield_blocked.push(clone(_args[1].effects[_z]))>>
CONTINUE LOOP IF STILL TAKING DAMAGE OR END IF ALL DAMAGE BLOCKED
<<if _creature_damage_taken > 0>>
<<continue>>
<<else>>
<<break>>
<</if>>
<</if>>
<</for>>
<</if>>
ADD TOTAL DAMAGE
<<set _args[1].cur_hp -= _creature_damage_taken>>
<<set _args[1].total_dmgtaken += _creature_damage_taken>>
INCREASE SPELL STATS IF SUMMONED
<<if _args[1].summoned === true>>
<<set $pc_spellbook[_spell_index].total_dmgtaken += _creature_damage_taken>>
<</if>>
ADD COUNT TO DEATH IF HEALTH 0 OR LESS
<<if _args[1].cur_hp <= 0>>
<<set _args[1].total_deaths++>>
<<set _args[1].cur_hp to 0>>
INCREASE SPELL STATS IF SUMMONED
<<if _args[1].summoned === true>>
<<set $pc_spellbook[_spell_index].total_deaths++>>
<<set $pc_spellbook[_spell_index].cast_bool to false>>
<</if>>
<<else>>
CLAMP HEALTH
<<set _args[1].cur_hp.clamp(0, _args[1].max_hp)>>
<</if>>
TROPHY COLLECTOR TRIGGER
<<if _args[1].cur_hp <= 0>>
<<for _i = 0; _i < _args[0].length; _i++>>
<<set _cur_girl to _args[0][_i]>>
<<if _cur_girl.trait_names.includes("Trophy Collector")>>
ADD BUFF IF NO BUFF ALREADY
<<if !_cur_girl.status_names.includes(setup.trophy_status.id)>>
CREATE STATUS
<<set _newStatus to clone(setup.trophy_status)>>
PUSH STATUS TO RAIDER
<<set _cur_girl.statuses.push(_newStatus)>>
<<set _cur_girl.status_names.push(_newStatus.id)>>
<</if>>
UPDATE STATUS BUFF
<<for _z = 0; _z < _cur_girl.statuses.length; _z++>>
<<if _cur_girl.statuses[_z].id === setup.trophy_status.id>>
<<if !_cur_girl.statuses[_z].list.includes(_args[1].base_name)>>
ADD STACK
<<set _cur_girl.statuses[_z].stack++>>
UPDATE NAME
<<set _cur_girl.statuses[_z].name to _cur_girl.statuses[_z].id+" x"+_cur_girl.statuses[_z].stack>>
UPDATE TROPHY LIST
<<set _cur_girl.statuses[_z].list.unshift(_args[1].base_name)>>
UPDATE TOOLTIP
<<set _cur_girl.statuses[_z].tooltip to setup.trophy_status.tooltip + _cur_girl.statuses[_z].list>>
TRIGGER TEXT
<<set _text_triggers.trait.trophy_collector.push(_cur_girl.index)>>
<</if>>
UPDATE RAIDER
<<set _args[0][_i] to _cur_girl>>
END LOOP
<<break>>
<</if>>
<</for>>
<</if>>
<</for>>
<</if>>
* Add EXP Gained from each Raider *
<<set _creature_exp_gained to 0>>
<<for _i = 0; _i < _args[0].length; _i++>>
<<set _cur_girl to _args[0][_i]>>
CAPTURED OR DEFEATED RAIDER
<<if _cur_girl.status_names.includes("Captured")>>
SET EXP GAINED
<<set _exp_amount to (Math.round(_cur_girl.exp * setup.exp_calc.capture_percent * $diffEXPMod)).clamp(1, 1000000)>> EXP: _exp_amount
EDGING STATUS
<<if _cur_girl.status_names.includes("Edging") && _cur_girl.cur_lust >= _cur_girl.max_lust>>
<<for _z = 0; _z < _cur_girl.statuses.length; _z++>>
<<if _cur_girl.statuses[_z].id === "Edging">>
<<set _exp_amount += (Math.round(_exp_amount * _cur_girl.statuses[_z].float)).clamp(1, 1000000)>> EXP: _exp_amount
<<break>>
<</if>>
<</for>>
<</if>>
ABANDONED RAIDER
<<elseif _cur_girl.status_names.includes("Abandoned")>>
ABANDONED EXP GAINS
<<set _exp_amount to (Math.round(_cur_girl.exp * setup.exp_calc.abandon_percent * $diffEXPMod)).clamp(1, 1000000)>> EXP: _exp_amount
STILL RAIDING RAIDERS
<<else>>
<<set _exp_amount to (Math.round(_cur_girl.exp * setup.exp_calc.combat_percent * $diffEXPMod)).clamp(1, 1000000)>> EXP: _exp_amount
<</if>>
EXP MODIFIERS
DARK MOON EVENT
<<if $current_event.event === true && $current_event.name === setup.dark_moon.name>>
DARK MOON INCREASED EXP GAINED BY <<- (Math.round(_exp_amount * setup.dark_moon.exp_float)).clamp(1, 1000000)>>
<<set _exp_amount += (Math.round(_exp_amount * setup.dark_moon.exp_float)).clamp(1, 1000000)>>
<</if>>
NEEDS MET EFFECT
<<if _args[1].effect_names.includes("Needs Met")>>
<<for _e = 0; _e < _args[1].effects.length; _e++>>
<<if _args[1].effects[_e].id === "Needs Met">>
<<set _float to _args[1].effects[_e].percent / 100>>
<<set _exp_amount += (Math.round(_exp_amount * _float)).clamp(1, 1000000)>>
<<break>>
<</if>>
<</for>>
<</if>>
ADD EXP
EXP ADDED: _exp_amount
<<set _creature_exp_gained += _exp_amount>>
<</for>>
* Creature EXP Gain and Level Trigger *
<<if _args[1].level <= $creature_levelcap && _args[1].summoned === false>>
GAINED LEVEL
<<CreatureLevelUp _args[1] _creature_exp_gained>>
<<set _args[1].report.exp_gained += _creature_exp_gained>>
<</if>>
<</widget>><<widget "CleanUp">>
* ADD CAPTURE AND DEFEATED GIRLS TO CAPTURE LIST, REMOVE ABANDONED GIRLS *
<<set _wipe_text to false>> set to true if no raiders are left in the party
FIND ANY GIRLS WHO ARE CAPTURED, DEFEATED, OR ABANDONED
<<for _i = 0; _i < _args[0].length; _i++>>
<<set _cur_girl to _args[0][_i]>>
REMOVE BRAINWASHED STATUS
<<if _text_triggers.status.brainwashed_trig.includes(_cur_girl.index)>>
<<RemoveStatus _cur_girl setup.brainwashed>>
<</if>>
<<if _cur_girl.status_names.includes("Captured")>>
SHINY RING
<<if $treasureroom_inventory.count(setup.common_treasure_08.name) > 0>>
<<set $shinyRingTracker++>>
<<if $shinyRingTracker >= setup.common_treasure_08.max_count>>
<<set $shinyRingTracker to 0>>
<<set $pc_gold += setup.common_treasure_08.int>>
<<set $shinyRingGold += setup.common_treasure_08.int>>
<<set _text_triggers.treasure.shinyRing to true>>
<<for _z = 0; _z < $treasureroom_inventory.length; _z++>>
<<if $treasureroom_inventory[_z] === setup.common_treasure_08.name>>
<<set _destoryed to $treasureroom_inventory.deleteAt(_z)>>
<<break>>
<</if>>
<</for>>
<</if>>
<</if>>
ESSENCE RING
<<if $treasureroom_inventory.count(setup.rare_treasure_03.name) > 0>>
<<set $essenceRingTracker++>>
<<if $essenceRingTracker >= setup.rare_treasure_03.max_count>>
<<set $essenceRingTracker to 0>>
<<set $pc_lust += setup.rare_treasure_03.int>>
<<set _text_triggers.treasure.essenceRing to true>>
<<for _z = 0; _z < $treasureroom_inventory.length; _z++>>
<<if $treasureroom_inventory[_z] === setup.rare_treasure_03.name>>
<<set _destoryed to $treasureroom_inventory.deleteAt(_z)>>
<<break>>
<</if>>
<</for>>
<</if>>
<</if>>
LEWD HARVESTER BLESSING
<<if $pc_blessing_list.includes("Lewd Harvester") && $pc_cur_mana < $pc_max_mana>>
<<set $pc_cur_mana += setup.blessing_00_2.mana>>
<<set _text_triggers.blessing.lewd_harvester to true>>
<</if>>
SPREADING SAVAGERY
<<if $pc_blessing_list.includes("Spreading Savagery") && _args[1].room_type === "Creature">>
<<set _text_triggers.spreading_savagery to true>>
<<for _c = 0; _c < $dungeon_floor_list.length; _c++>>
<<if $dungeon_floor_list[_c].room_type === "Creature">>
UPDATE ROOM
<<if !$dungeon_floor_list[_c].effect_names.includes("Savagery")>>
ADD EFFECT
<<set _newBuff to clone(setup.creature_effect)>>
<<set _newBuff.name to "Savagery">>
<<set _newBuff.id to "Savagery">>
<<set _newBuff.effect_type to ["Raid"]>>
<<set _newBuff.stack to 0>>
<<set _newBuff.icon to setup.effect_icons.blessing>>
SET TOOLTIP
<<if $dungeon_floor_list[_c].attack_type === "Physical">>
<<set _newBuff.tooltip to "Increases @@.phy;Physical@@ and @@.sex;Sexual@@ Attack stats by 3 per stack. Effects from Goddess's Power are doubled if this has 6 or more stacks.">>
<<else>>
<<set _newBuff.tooltip to "Increases @@.mag;Magical@@ and @@.sex;Sexual@@ Attack stats by 3 per stack. Effects from Goddess's Power are doubled if this has 6 or more stacks.">>
<</if>>
<<if $dungeon_floor_list[_c].index === _args[1].index>>
<<set _args[1].effects.push(_newBuff)>>
<<set _args[1].effect_names.push(_newBuff.id)>>
<<else>>
<<set $dungeon_floor_list[_c].effects.push(_newBuff)>>
<<set $dungeon_floor_list[_c].effect_names.push(_newBuff.id)>>
<</if>>
<</if>>
FIND EFFECT
<<for _e = 0; _e < $dungeon_floor_list[_c].effects.length; _e++>>
<<if $dungeon_floor_list[_c].effects[_e].id === "Savagery">>
<<if $dungeon_floor_list[_c].index === _args[1].index>>
INCREASE STACK TWICE AND UPDATE NAME
<<set _args[1].effects[_e].stack += setup.blessing_04_12.stack * 2>>
<<set _args[1].effects[_e].name to _args[1].effects[_e].id + " x" + _args[1].effects[_e].stack>>
<<- _args[1].effects[_e].name>>
<<else>>
INCREASE STACK AND UPDATE NAME
<<set $dungeon_floor_list[_c].effects[_e].stack += setup.blessing_04_12.stack>>
<<set $dungeon_floor_list[_c].effects[_e].name to $dungeon_floor_list[_c].effects[_e].id + " x" + $dungeon_floor_list[_c].effects[_e].stack>>
<<- $dungeon_floor_list[_c].effects[_e].name>>
<</if>>
<<break>>
<</if>>
<</for>>
<</if>>
<</for>>
<</if>>
<</if>>
<</for>>
CHECK IF ANY RAIDERS ARE LEFT AFTER THIS ROOM OR IF THE GROUP WIPED
<<if _args[0].length === _text_triggers.status.captured.length + _text_triggers.status.abandoned.length>>
<<set _wipe_text to true>>
<</if>>
EFFECT CD
<<if _args[1].room_type === "Creature" || _args[1].room_type === "Trap">>
<<DungeonEffects _args[1] false>>
<</if>>
UPDATE ROOM
<<if _args[1].summoned === false>>
<<set $dungeon_floor_list[$cur_room_num] to _args[1]>>
SET PREVIOUS ROOM
<<set $prev_room_num to $cur_room_num>>
ADVANCE DUNGEON ROOM
<<set $cur_room_num++>>
<</if>>
UPDATE SUMMON CREATURE
<<if _args[1].summoned === true>>
<<set $pc_spellbook[_spell_index].hp_percent to (_summon.cur_hp / _summon.max_hp).toFixed(3)>>
<</if>>
<</widget>>
<<widget "NextRoomButton">>
<<if $raiders.length <= _text_triggers.status.captured.length + _text_triggers.status.abandoned.length + _text_triggers.status.teleported.length && $is_tutoring === true>>
/* STOPPED AHRI IN TUTORIAL */
<<set _linkName to "Continue">>
<<set _link to "Tutorial">>
<<elseif _portal_bool>>
/* OPENED PORTAL */
<<set _linkName to "Continue">>
<<set _link to "Opened Portal">>
<<elseif $raiders.length > _text_triggers.status.captured.length + _text_triggers.status.abandoned.length + _text_triggers.status.teleported.length && $at_entrance === true>>
/* CONTINUE TO ENTER THE DUNGEON */
<<set _linkName to "Continue">>
<<set _link to "Enter Dungeon">>
<<elseif $raiders.length > _text_triggers.status.captured.length + _text_triggers.status.abandoned.length + _text_triggers.status.teleported.length>>
/* CONTINUE TO BETWEEN FLOORS */
<<set _linkName to "Continue">>
<<set _link to "Between Rooms">>
<<elseif $raiding_girls_list.length + _text_triggers.status.teleported.length > 0>>
/* START NEXT GROUP RAID */
<<set _linkName to "Next Raid">>
<<set _link to "Raiding Party">>
<<elseif $captured_girl_list.length + _text_triggers.status.captured.length > 0>>
/* END RAID, VISIT CAPTURED RAIDERS */
<<set _linkName to "End Night">>
<<set _link to "Captured Raiders">>
<<else>>
/* END RAID, DAILY SUMMARY */
<<set _linkName to "End Night">>
<<set _link to "Daily Summary">>
<<set $previous_bool to false>>
<</if>>
/* DISPLAY LINK */
<div class="exit-link-right">
<span id="forward">
<<button [[_linkName|_link]]>>
/* REMOVES CAPTURED OR DEFEATED GIRLS */
<<if $is_tutoring === false || $is_tutoring == null>>
<<for _r = 0; _r < $raiders.length; _r++>>
<<if _text_triggers.status.captured.includes($raiders[_r].index)>>
<<set $captured_girl_list.push(clone($raiders[_r]))>>
<<set _remove to $raiders.deleteAt(_r)>>
<<set _r-->>
<<continue>>
<<elseif _text_triggers.status.abandoned.includes($raiders[_r].index)>>
<<set $abandoned_girl_list.push(clone($raiders[_r]))>>
<<set _remove to $raiders.deleteAt(_r)>>
<<set _r-->>
<<continue>>
<<elseif _text_triggers.status.teleported.includes($raiders[_r].index)>>
<<set $raiding_girls_list.push(clone($raiders[_r]))>>
<<set _remove to $raiders.deleteAt(_r)>>
<<set _r-->>
<<continue>>
<</if>>
<</for>>
<</if>>
<</button>>
</span>
</div>
<</widget>>
<<widget "NextSpellButton">>
<<if $raiders.length <= _text_triggers.status.captured.length + _text_triggers.status.abandoned.length + _text_triggers.status.teleported.length && $is_tutoring === true>>
/* STOPPED AHRI IN TUTORIAL */
<<set _linkName to "Continue">>
<<set _link to "Tutorial">>
<<elseif $raiders.length > _text_triggers.status.captured.length + _text_triggers.status.abandoned.length + _text_triggers.status.teleported.length>>
/* CONTINUE TO ENTER THE DUNGEON */
<<set _linkName to "Continue">>
<<set _link to "View Spells">>
<<elseif $raiding_girls_list.length + _text_triggers.status.teleported.length > 0>>
/* START NEXT GROUP RAID */
<<set _linkName to "Next Raid">>
<<set _link to "Raiding Party">>
<<elseif $captured_girl_list.length + _text_triggers.status.captured.length > 0>>
/* END RAID, VISIT CAPTURED RAIDERS */
<<set _linkName to "End Night">>
<<set _link to "Captured Raiders">>
<<else>>
/* END RAID, DAILY SUMMARY */
<<set _linkName to "End Night">>
<<set _link to "Daily Summary">>
<<set $previous_bool to false>>
<</if>>
/* DISPLAY LINK */
<div class="exit-link-right">
<span id="forward">
<<button [[_linkName|_link]]>>
/* REMOVES CAPTURED OR DEFEATED GIRLS */
<<if $is_tutoring === false || $is_tutoring == null>>
<<for _r = 0; _r < $raiders.length; _r++>>
<<if _text_triggers.status.captured.includes($raiders[_r].index)>>
<<set $captured_girl_list.push(clone($raiders[_r]))>>
<<set _remove to $raiders.deleteAt(_r)>>
<<set _r-->>
<<continue>>
<<elseif _text_triggers.status.abandoned.includes($raiders[_r].index)>>
<<set $abandoned_girl_list.push(clone($raiders[_r]))>>
<<set _remove to $raiders.deleteAt(_r)>>
<<set _r-->>
<<continue>>
<<elseif _text_triggers.status.teleported.includes($raiders[_r].index)>>
<<set $raiding_girls_list.push(clone($raiders[_r]))>>
<<set _remove to $raiders.deleteAt(_r)>>
<<set _r-->>
<<continue>>
<</if>>
<</for>>
<</if>>
*/ SPECIAL TRIGGERS */
<<if _suggestive_whispers_target != null>>
/* ADD CHOSEN FETISH AS NEW KINK FROM FETISH LIST */
<<set _newKink to $raiders[_suggestive_whispers_target].fetishes.delete(_option)>>
<<set $raiders[_suggestive_whispers_target].kinks to $raiders[_suggestive_whispers_target].kinks.concatUnique(_newKink)>>
<</if>>
<<unset $target, $mana_cost, $spell_index, $spell_percent>>
<</button>>
</span>
</div>
<</widget>>
<<widget "PortalButton">>
<<if $raiders.length > 0>>
/* CONTINUE TO BETWEEN FLOORS */
<<set _linkName to "Continue">>
<<set _link to "Between Rooms">>
<<elseif $raiding_girls_list.length > _text_triggers.status.captured.length + _text_triggers.status.abandoned.length && $raiders.length === 0>>
/* START NEXT GROUP RAID */
<<set _linkName to "Next Raid">>
<<set _link to "Raiding Party">>
<<elseif $captured_girl_list.length + _text_triggers.status.captured.length > 0>>
/* END RAID, VISIT CAPTURED RAIDERS */
<<set _linkName to "End Night">>
<<set _link to "Captured Raiders">>
<<else>>
/* END RAID, DAILY SUMMARY */
<<set _linkName to "End Night">>
<<set _link to "Daily Summary">>
<<set $previous_bool to false>>
<</if>>
/* DISPLAY LINK */
<div class="exit-link-right">
<span id="forward">
<<button [[_linkName|_link]]>>
/* REMOVES CAPTURED OR DEFEATED GIRLS */
<<if $is_tutoring === false || $is_tutoring == null>>
<<for _r = 0; _r < $raiding_girls_list.length; _r++>>
<<if _text_triggers.status.captured.includes($raiding_girls_list[_r].index)>>
<<set $captured_girl_list.push(clone($raiding_girls_list[_r]))>>
<<set _remove to $raiding_girls_list.deleteAt(_r)>>
<<set _r-->>
<<continue>>
<<elseif _text_triggers.status.abandoned.includes($raiding_girls_list[_r].index)>>
<<set $abandoned_girl_list.push(clone($raiding_girls_list[_r]))>>
<<set _remove to $raiding_girls_list.deleteAt(_r)>>
<<set _r-->>
<<continue>>
<</if>>
<</for>>
<</if>>
<</button>>
</span>
</div>
<</widget>><<widget "RoomSetup">>
<<set _creature_damage_taken to 0>> amount of total damage creature has taken
<<set $update_next_room to true>>
* Set the Cur Room *
<<set _args[1].room_num to $cur_room_num + 1>> update where this room is
* Reset First Time Check for Between Rooms *
<<set $first_time_check to false>>
* Increase Creature Total Raiders Count *
<<set _args[1].total_raiders += _args[0].length>>
<<set _args[1].report.raiders += _args[0].length>>
* Set room gifs and pics *
SET ROOM PIC
<<set _room_image to _args[1].pic>>
* Set Raiders Inital Report *
<<for _r = 0; _r < _args[0].length; _r++>>
<<set _title to "She encountered your " + _args[1].name + " on Floor " + _args[1].room_num + ".">>
<<set _newLog to {
type: "Room",
title: _title,
entry: []
}>>
<<set _args[0][_r].report.log.push(clone(_newLog))>>
<</for>>
<</widget>>
<<widget "SummonRoomSetup">>
<<set _creature_damage_taken to 0>> amount of total damage creature has taken
* Increase Creature Total Raiders Count *
<<set $pc_spellbook[_spell_index].total_raiders += _args[0].length>>
* Set room gifs and pics *
SET ROOM PIC
<<set _room_image to _args[1].pic>>
* Set Raiders Inital Report *
<<if $cur_room_num === 0>>
<<for _r = 0; _r < _args[0].length; _r++>>
<<set _title to "She encountered your summoned " + _args[1].name + " at the dungeon's entrance.">>
<<set _newLog to {
type: "Room",
title: _title,
entry: []
}>>
<<set _args[0][_r].report.log.push(clone(_newLog))>>
<</for>>
<<else>>
<<for _r = 0; _r < _args[0].length; _r++>>
<<set _title to "She encountered your summoned " + _args[1].name + " after Floor " + $cur_room_num + ".">>
<<set _newLog to {
type: "Room",
title: _title,
entry: []
}>>
<<set _args[0][_r].report.log.push(clone(_newLog))>>
<</for>>
<</if>>
* Mending Entrance *
<<if $pc_blessing_list.includes("Mending Entrance") && _args[1].cur_hp < _args[1].max_hp>>
<<set _args[1].cur_hp to (_args[1].cur_hp + (_args[1].max_hp * setup.blessing_03_11.float)).clamp(1, _args[1].max_hp)>>
<<set _text_triggers.blessing.mending_entrance to true>>
<</if>>
<</widget>><<widget "CalcTrapcheck">>
_args[0].name is cur_girl, _args[1] is the room's trapcheck
* INCREASE TRAPCHECK *
DIABOLIC INTENT
<<if $this_room.effect_names.includes("Diabolic Intent")>>
<<set _args[1] += (Math.round(_args[1] * setup.blessing_04_8.float)).clamp(1, 1000000)>>
<</if>>
* Calc Percent for Trapcheck *
<<set _trapcheck to (setup.check_mult * (_args[1] - _args[0].cur_aware + 100)).clamp(0, 100)>>
TRAPCHECK: _args[1] - AWARE: _args[0].cur_aware
TRAPCHECK PERCENT IS _trapcheck
* INCREASE TRAPCHECK *
STICKY
<<if _args[0].status_names.includes("Sticky")>>
FIND STATUS
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
<<if _args[0].statuses[_z].id === "Sticky">>
SUBTRACT AMOUNT TIMES NUMBER OF STACKS
<<set _trapcheck += Math.round(_trapcheck * (setup.sticky.float * _args[0].statuses[_z].stack)).clamp(1, 1000000)>>
BREAK FOR LOOP AFTER FINDING
<<break>>
<</if>>
<</for>>
STICKY INCREASED THE TRAPCHECK TO _trapcheck
<</if>>
* TRAITS *
PETITE
<<if _args[0].trait_names.includes("Petite") && $this_room.trap_types.includesAny(setup.petite.room_types)>>
<<set _trapcheck -= Math.clamp(Math.round(_trapcheck * setup.petite.float), 1, 1000000)>>
<<set _text_triggers.trait.petite_trap.push(_args[0].index)>>
PETITE REDUCED THE TRAPCHECK TO _trapcheck
<</if>>
* STATUSES *
* BlESSINGS *
* CLAMP AND ROUND TRAPCHECK *
<<set _trapcheck to Math.clamp(Math.round(_trapcheck), setup.min_trapcheck, setup.max_trapcheck)>>
<</widget>>
<<widget "SimTrapcheck">>
_args[0].name is cur_girl and _args[1] is the room's trapcheck
<<set _clumsy_trigger to false>>
CLUMSY CHECK
<<if _args[0].trait_names.includes("Clumsy")>>
<<set _clumsy_rng to random(1, 100)>>
<<if setup.clumsy.percent >= _clumsy_rng>>
<<set _clumsy_trigger to true>>
<</if>>
<</if>>
* TRAPCHECK RESULTS *
<<set _rng to random(1, 100)>> _rng RNG VS _args[1] TRAPCHECK
<<d20Roll _args[0]>>
WELCOME MAT BLESSING
<<if $pc_blessing_list.includes("Welcome Mat") && $this_room.room_type === "Trap" && $cur_room_num === 0 && !_text_triggers.blessing.welcome_mat.includes(_args[0].index) && _clumsy_trigger === false>>
ADD TO LIST
<<set _text_triggers.blessing.welcome_mat.push(_args[0].index)>>
<<if $pc_blessing_list.includes("Machine Mastery")>>
<<set _fail_int to setup.blessing_06_10.int * 2>>
<<else>>
<<set _fail_int to setup.blessing_06_10.int>>
<</if>>
SET D20 TO 1 IF ROLL FALLS UNDER AMOUNT
<<if _d20 <= _fail_int>>
WELCOME MAT TRIGGER!
<<set _d20 to 1>>
<</if>>
<</if>>
CLUMSY TRIGGER
<<if _clumsy_trigger === true>>
<<set _text_triggers.trait.clumsy.push(_args[0].index)>>
<<set _text_triggers.check.trapcheck_failed.push(_args[0].index)>>
CRITICAL SUCCESS
<<elseif _d20 === 20>>
<<set _text_triggers.check.trapcheck_crit_passed.push(_args[0].index)>>
CRITICAL FAIL, SHARP CANNOT CRIT FAIL
<<elseif _d20 === 1 && !_args[0].trait_names.includes("Sharp")>>
<<set _text_triggers.check.trapcheck_crit_failed.push(_args[0].index)>>
FAILED IF TRAPCHECK GREATER THAN RNG
<<elseif _args[1] >= _rng>>
<<set _text_triggers.check.trapcheck_failed.push(_args[0].index)>>
PASSED
<<else>>
<<set _text_triggers.check.trapcheck_passed.push(_args[0].index)>>
<</if>>
INSPECTION COMPLETE EFFECT
<<if $this_room.effect_names.includes("Inspection Complete")>>
<<for _e = 0; _e < $this_room.effects.length; _e++>>
<<if $this_room.effects[_e].id === "Inspection Complete">>
<<set $this_room.effects[_e].int-->>
<<if $this_room.effects[_e].int <= 0>>
REDUCE TRAPCHECK
<<set $this_room.cur_check -= $this_room.effects[_e].check_int>>
SET TO REMOVE
<<set $this_room.effects[_e].effect_types.push("Duration")>>
<<set $this_room.effects[_e].duration to 0>>
<<else>>
UPDATE NAME
<<set $this_room.effects[_e].name to $this_room.effects[_e].id+" x"+$this_room.effects[_e].int>>
<</if>>
<<break>>
<</if>>
<</for>>
<</if>>
<</widget>><<widget "RaiderGrinder">>
args[0] is current raider
Requires a temp special_trait list before holding list of special traits to choose from
* CHOOSE NAME *
<<set _args[0].name to setup.girl_names_list.random()>>
* CHOOSE SUBCLASS *
<<if _args[0].subclass === "">>
<<set _list to clone(setup.subclass_list)>>
<<for _z = 0; _z < _list.length; _z++>>
<<set _list[_z].percent to $subclass_percent[_z]>>
<</for>>
REORDER LIST
<<set _list.sort(function (a, b) { return a.percent - b.percent; });>>
<<for _z = 0; _z < _list.length; _z++>>
<<if _list[_z].percent === 0>>
_list[_z].name IS NOT AN OPTION
<<continue>>
<</if>>
<<set _rng to random(1, 100)>> RNG: _rng VS _list[_z].percent
<<if _list[_z].percent >= _rng || _list[_z].percent === 100>>
<<set _args[0].subclass to clone(_list[_z])>>
_list[_z].name IS _args[0].name's SUBCLASS
<<break>>
<</if>>
<</for>>
<</if>>
* SET STATS BASED ON CLASS AND SUBCLASS *
HEALTH
<<set _args[0].max_hp to Math.round((random(_args[0].low_hp, _args[0].high_hp) * _args[0].subclass.pool_mod) * $diffRaiderPoolMod)>>
VIGOR
<<set _args[0].vig to Math.round((random(_args[0].low_vig, _args[0].high_vig) * _args[0].subclass.stat_mod) * $diffRaiderStatMod)>>
ENDURANCE
<<set _args[0].end to Math.round((random(_args[0].low_end, _args[0].high_end) * _args[0].subclass.stat_mod) * $diffRaiderStatMod)>>
WILLPOWER
<<set _args[0].will to Math.round((random(_args[0].low_will, _args[0].high_will) * _args[0].subclass.stat_mod) * $diffRaiderStatMod)>>
PERSEVERANCE
<<set _args[0].pers to Math.round((random(_args[0].low_pers, _args[0].high_pers) * _args[0].subclass.stat_mod) * $diffRaiderStatMod)>>
TOLERANCE
<<set _args[0].toler to Math.round((random(_args[0].low_toler, _args[0].high_toler) * _args[0].subclass.stat_mod) * $diffRaiderStatMod)>>
AWARENESS
<<set _args[0].aware to Math.round(((random(_args[0].low_aware, _args[0].high_aware) * _args[0].subclass.stat_mod) * $diffRaiderStatMod) / setup.aware_reas_mod)>>
REASON
<<set _args[0].reas to Math.round(((random(_args[0].low_reas, _args[0].high_reas) * _args[0].subclass.stat_mod) * $diffRaiderStatMod) / setup.aware_reas_mod)>>
LUST
<<set _args[0].max_lust to Math.round((random(_args[0].low_lust, _args[0].high_lust) * _args[0].subclass.pool_mod) * $diffRaiderPoolMod)>>
* SET BASE EXP *
<<set _args[0].exp to _args[0].max_hp + _args[0].max_lust + _args[0].vig + _args[0].end + _args[0].will + _args[0].pers + _args[0].toler + _args[0].aware + _args[0].reas>>
<<set _args[0].exp to Math.round(((_args[0].exp * setup.exp_raider_mod) + _args[0].subclass.base_exp) * $diffEXPMod)>>
BASE EXP IS _args[0].exp
* SET BASE GOLD *
<<set _args[0].gold to _args[0].max_hp + _args[0].max_lust + _args[0].vig + _args[0].end + _args[0].will + _args[0].pers + _args[0].toler + _args[0].aware + _args[0].reas>>
<<set _args[0].gold to Math.round(((_args[0].gold * setup.gold_raider_mod) + _args[0].subclass.base_gold) * $diffGoldMod)>>
BASE GOLD IS _args[0].gold
* GIVE POTIONS TO ALCHEMIST *
<<if _args[0].class === "Alchemist">>
<<set _potion_count to random(_args[0].subclass.min_potion_count, _args[0].subclass.max_potion_count)>>
<<for _p = 0; _p < _potion_count; _p++>>
<<set _potion to setup.potion_list.random()>>
<<set _name to _potion.name>>
<<set _args[0].potions.push(_name)>>
<</for>>
<<set _log_potions to _args[0].potions>>
<</if>>
CLASS BONUS
HUNTER
<<if _args[0].class === "Hunter">>
<<set _args[0].vig += Math.round(_args[0].vig * _args[0].vig_float)>>
<</if>>
SORCERER
<<if _args[0].class === "Sorcerer">>
<<set _args[0].will += Math.round(_args[0].will * _args[0].will_float)>>
<</if>>
KNIGHT
<<if _args[0].class === "Knight">>
<<set _args[0].end += Math.round(_args[0].end * _args[0].stat_float)>>
<<set _args[0].pers += Math.round(_args[0].pers * _args[0].stat_float)>>
<</if>>
WARRIOR
<<if _args[0].class === "Warrior">>
<<set _args[0].max_hp += Math.round(_args[0].max_hp * _args[0].stat_float)>>
<<set _args[0].max_lust += Math.round(_args[0].max_lust * _args[0].stat_float)>>
<</if>>
THIEF
<<if _args[0].class === "Thief">>
<<set _args[0].aware += Math.round(_args[0].aware * _args[0].aware_float)>>
<</if>>
* SET TRAITS *
UNIQUE TRAIT CHECK
<<set _rng to random(1, _special_trait_rng)>>
<<set _special_traits.push(_args[0].unique_trait)>>
<<if _rng >= _special_trait_rng && _args[0].special_trait === "">>
ADDS SPECIAL TRAIT FROM A LIST BASED ON DUNGEON RANK
<<set _args[0].special_trait to _special_traits.random()>>
<</if>>
REMOVE UNIQUE TRAIT AFTER
<<set _remove to _special_traits.delete(_args[0].unique_trait)>>
MALLORY QUEST 1
<<if $missionLog.mallory.num === 0 && $missionLog.mallory.started === true && $missionLog.mallory.completed === false && _args[0].special_trait === "">>
<<set _rng to random(1, 100)>>
<<if setup.malloryMisLine[$missionLog.mallory.num].percent >= _rng>>
<<set _args[0].special_trait to clone(setup.newblood)>>
<</if>>
<</if>>
CHOOSE AND ADD TRAITS
<<if _args[0].class === "Neeko">>
<<set _args[0].traits to clone(setup.all_raider_traits)>>
<<elseif _args[0].special_trait != "">>
SPECIAL TRAIT
<<set _args[0].traits.push(_args[0].special_trait)>>
SEXUAL TRAIT
<<set _args[0].traits.push(_args[0].special_trait.sexual_trait_list.random())>>
PHYSICAL TRAIT
<<set _args[0].traits.push(_args[0].special_trait.physical_trait_list.random())>>
MENTAL TRAIT
<<set _args[0].traits.push(_args[0].special_trait.mental_trait_list.random())>>
<<else>>
SEXUAL TRAIT
<<set _args[0].traits.push(setup.traits_sexual_list.random())>>
PHYSICAL TRAIT
<<set _args[0].traits.push(setup.traits_physical_list.random())>>
MENTAL TRAIT
<<set _args[0].traits.push(setup.traits_mental_list.random())>>
<</if>>
GIVE FETISH LIST
<<set _args[0].fetishes to _args[0].fetishes.concat(setup.fetish_list)>>
APPLY TRAITS
SET TRAIT NAMES
<<for _t = 0; _t < _args[0].traits.length; _t++>>
<<set _args[0].trait_names.push(_args[0].traits[_t].name)>>
<</for>>
--- SEXUAL TRAITS ---
EXHIBITIONIST
<<if _args[0].trait_names.includes("Exhibitionist")>>
<<set _args[0].statuses to _args[0].statuses.concat(setup.exhibitionist.statuses)>>
<</if>>
GOKKUN
<<if _args[0].trait_names.includes("Gokkun")>>
<<set _delete to _args[0].fetishes.delete(setup.gokkun.fetishes)>>
<<set _args[0].kinks to _args[0].kinks.concat(setup.gokkun.fetishes)>>
<</if>>
KINKY
<<if _args[0].trait_names.includes("Kinky")>>
<<set _args[0].kinkcount += setup.kinky.int>>
<</if>>
NASTY
<<if _args[0].trait_names.includes("Nasty")>>
<<set _delete to _args[0].fetishes.delete(setup.nasty.fetishes)>>
<<set _args[0].kinks to _args[0].kinks.concat(setup.nasty.fetishes)>>
<</if>>
PRUDE
<<if _args[0].trait_names.includes("Prude")>>
<<set _args[0].turnoffcount += setup.prude.int>>
<</if>>
SUBMISSIVE
<<if _args[0].trait_names.includes("Submissive")>>
<<set _delete to _args[0].fetishes.delete(setup.submissive.fetishes)>>
<<set _args[0].kinks to _args[0].kinks.concat(setup.submissive.fetishes)>>
<</if>>
--- PHYSICAL TRAITS ---
FIT
<<if _args[0].trait_names.includes("Fit")>>
<<set _args[0].body_type to setup.fit.body>>
<</if>>
FLAT
<<if _args[0].trait_names.includes("Flat")>>
<<set _amount to Math.trunc(_args[0].end * setup.flat.float)>>
<<set _args[0].end -= _amount>>
<<set _args[0].body_type to setup.flat.body>>
<</if>>
MUSCULAR
<<if _args[0].trait_names.includes("Muscular")>>
<<set _boost to Math.trunc(_args[0].vig * setup.muscular.float)>>
<<set _args[0].vig += _boost>>
<<set _boost to Math.trunc(_args[0].end * setup.muscular.float)>>
<<set _args[0].end += _boost>>
<<set _args[0].body_type to setup.muscular.body>>
<</if>>
PETITE
<<if _args[0].trait_names.includes("Petite")>>
<<set _args[0].body_type to setup.petite.body>>
<</if>>
ROBUST
<<if _args[0].trait_names.includes("Robust")>>
<<set _boost to Math.trunc(_args[0].max_hp * setup.robust.float)>>
<<set _args[0].max_hp += _boost>>
<</if>>
THICC
<<if _args[0].trait_names.includes("Thicc")>>
<<set _args[0].body_type to setup.thicc.body>>
<</if>>
VOLUPTUOUS
<<if _args[0].trait_names.includes("Voluptuous")>>
<<set _boost to Math.trunc(_args[0].max_hp * setup.voluptuous.float)>>
<<if _boost < 1>>
<<set _boost to 1>>
<</if>>
<<set _args[0].max_hp += _boost>>
<<set _boost to Math.trunc(_args[0].max_lust * setup.voluptuous.float)>>
<<if _boost < 1>>
<<set _boost to 1>>
<</if>>
<<set _args[0].max_lust += _boost>>
<<set _args[0].body_type to setup.voluptuous.body>>
<</if>>
--- MENTAL TRAITS ---
FANTASIZER
<<if _args[0].trait_names.includes("Fantasizer")>>
<<set _args[0].statuses to _args[0].statuses.concat(setup.fantasizer.statuses)>>
<</if>>
RESOLUTE
<<if _args[0].trait_names.includes("Resolute")>>
<<set _boost to Math.trunc(_args[0].will * setup.resolute.float)>>
<<set _args[0].will += _boost>>
<<set _boost to Math.trunc(_args[0].pers * setup.resolute.float)>>
<<set _args[0].pers += _boost>>
<</if>>
SHARP
<<if _args[0].trait_names.includes("Sharp")>>
<<set _amount to Math.trunc(_args[0].aware * setup.sharp.float)>>
<<set _args[0].aware += _amount>>
<</if>>
WISE
<<if _args[0].trait_names.includes("Wise")>>
<<set _amount to Math.trunc(_args[0].reas * setup.wise.float)>>
<<set _args[0].reas += _amount>>
<</if>>
--- SPECIAL TRAITS ---
DRAGONBORN
<<if _args[0].trait_names.includes("Dragonborn")>>
<<set _args[0].vig += Math.trunc(_args[0].vig * setup.dragonborn.float) + 1>>
<<set _args[0].end += Math.trunc(_args[0].end * setup.dragonborn.float) + 1>>
<<set _args[0].will += Math.trunc(_args[0].will * setup.dragonborn.float) + 1>>
<<set _args[0].pers += Math.trunc(_args[0].pers * setup.dragonborn.float) + 1>>
<<set _args[0].toler += Math.trunc(_args[0].toler * setup.dragonborn.float) + 1>>
<<set _args[0].aware += Math.trunc(_args[0].aware * setup.dragonborn.float) + 1>>
<<set _args[0].reas += Math.trunc(_args[0].reas * setup.dragonborn.float) + 1>>
<</if>>
TAINTED
<<if _args[0].trait_names.includes("Tainted")>>
<<set _amount to Math.round(_args[0].max_lust * setup.tainted.float)>>
<<set _args[0].max_lust += _amount>>
<<set _amount to Math.round(_args[0].toler * setup.tainted.float)>>
<<set _args[0].toler += _amount>>
<</if>>
WEALTHY
<<if _args[0].trait_names.includes("Wealthy")>>
<<set _args[0].gold += Math.round(_args[0].gold * randomFloat(setup.wealthy.low_mult, setup.wealthy.high_mult))>>
<</if>>
--- ADD KINKS AND TURNOFFS, REMOVE COPIES ---
KINKS
<<set _kinks to _args[0].fetishes.pluckMany(_args[0].kinkcount)>>
<<set _args[0].kinks to _args[0].kinks.concat(_kinks)>>
<<set _empty to []>>
<<set _unique to _empty.concatUnique(_args[0].kinks)>>
<<set _args[0].kinks to _unique>>
<<set _args[0].kinks.shuffle()>>
TURNOFFS
<<set _turnoffs to _args[0].fetishes.pluckMany(_args[0].turnoffcount)>>
<<set _args[0].turnoffs to _args[0].turnoffs.concat(_turnoffs)>>
<<set _empty to []>>
<<set _unique to _empty.concatUnique(_args[0].turnoffs)>>
<<set _args[0].turnoffs to _unique>>
<<set _args[0].turnoffs.shuffle()>>
STATUSES
<<set _empty to []>>
<<set _unique to _empty.concatUnique(_args[0].statuses)>>
<<set _args[0].statuses to _unique>>
<<set _args[0].statuses.shuffle()>>
--- SET HEALTH, CLAMP STATS ---
<<set _args[0].cur_hp to _args[0].max_hp>> @@.health;HEALTH: _args[0].max_hp@@
<<if _args[0].vig < 1>>
<<set _args[0].vig to 1>>
<</if>>
<<set _args[0].cur_vig to clone(_args[0].vig)>>
@@.vig;VIGOR: _args[0].vig@@
<<if _args[0].end < 1>>
<<set _args[0].end to 1>>
<</if>>
<<set _args[0].cur_end to clone(_args[0].end)>>
@@.end;ENDURANCE: _args[0].end@@
<<if _args[0].will < 1>>
<<set _args[0].will to 1>>
<</if>>
<<set _args[0].cur_will to clone(_args[0].will)>>
@@.will;WILLPOWER: _args[0].will@@
<<if _args[0].pers < 1>>
<<set _args[0].pers to 1>>
<</if>>
<<set _args[0].cur_pers to clone(_args[0].pers)>>
@@.pers;PERSEVERANCE: _args[0].pers@@
<<if _args[0].toler < 1>>
<<set _args[0].toler to 1>>
<</if>>
<<set _args[0].cur_toler to clone(_args[0].toler)>>
@@.toler;TOLERANCE: _args[0].toler@@
<<if _args[0].aware < 1>>
<<set _args[0].aware to 1>>
<</if>>
<<set _args[0].cur_aware to clone(_args[0].aware)>>
@@.aware;AWARENESS: _args[0].aware@@
<<if _args[0].reas < 1>>
<<set _args[0].reas to 1>>
<</if>>
<<set _args[0].cur_reas to clone(_args[0].reas)>>
@@.reas;REASON: _args[0].reas@@
*ADD LATE TRAITS*
SLUT TRAIT
<<if _args[0].trait_names.includes("Slut")>>
<<set _mover to _args[0].turnoffs>>
<<set _args[0].turnoffs to []>>
<<set _args[0].kinks to _args[0].kinks.concat(_mover)>>
<<set _args[0].max_lust to Math.trunc(_args[0].max_lust * setup.slut.mult)>>
<</if>>
@@.lust;LUST: _args[0].max_lust@@
* ADD EXP FROM TRAITS *
<<for _z = 0; _z < _args[0].traits.length; _z++>>
<<set _args[0].exp += Math.round(_args[0].exp * _args[0].traits[_z].exp_mod)>>
<</for>>
TOTAL EXP _args[0].exp
*SET REPUTATION AND THREAT*
<<if _args[0].trait_names.includes("Famous")>>
<<set _args[0].reputation to _args[0].subclass.base_reputation * setup.famous.mult>>
<<else>>
<<set _args[0].reputation to _args[0].subclass.base_reputation>>
<</if>>
<<set _args[0].threat to _args[0].subclass.base_threat>>
* SET TREASURE *
<<for _z = 0; _z < setup.subclass_list.length; _z++>>
<<if _args[0].subclass.name === setup.subclass_list[_z].name>>
<<set _rate to setup.treasure_raider_rate * (_z + 1)>>
<<break>>
<</if>>
<</for>>
GEARED UP EVENT
<<if $current_event.event === true && $current_event.name === setup.geared_up.name>>
<<set _rate *= setup.geared_up.mult>>
<</if>>
SET TREASURE RNG
<<set _rng to (randomFloat(0.999)).toFixed(3)>>
<<if _rate > _rng || _args[0].trait_names.includes("Wealthy")>>
SET RARITY RNG
<<set _rarity_rng to (randomFloat(0.999)).toFixed(3)>>
<<if (_args[0].subclass.rare_rate > _rarity_rng || (_args[0].trait_names.includes("Wealthy") && _args[0].subclass.rare_rate * setup.wealthy.treasure_mult >= _rarity_rng)) && $global_treasure_stock.rare.length > 0>>
GOT RARE TREASURE
<<SetRareTreasure>>
<<elseif (_args[0].subclass.uncommon_rate > _rarity_rng || (_args[0].trait_names.includes("Wealthy") && _args[0].subclass.uncommon_rate * setup.wealthy.treasure_mult >= _rarity_rng)) && $global_treasure_stock.uncommon.length > 0>>
GOT UNCOMMON TREASURE
<<SetUncommonTreasure>>
<<else>>
GOT COMMON TREASURE
<<SetCommonTreasure>>
<</if>>
ADD TREASURE TO RAIDER
<<set _args[0].item to clone(_newTreasure.name)>>
<</if>>
*SET TRAIT AND STATUS LIST*
<<set _traits to []>>
<<set _statuses to []>>
<<for _z = 0; _z < _args[0].traits.length; _z++>>
<<set _traits.push(_args[0].traits[_z].name)>>
<</for>>
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
<<set _statuses.push(_args[0].statuses[_z].id)>>
<</for>>
<<set _args[0].trait_names to clone(_traits)>>
<<set _args[0].status_names to clone(_statuses)>>
*GRIND PICTURE*
<<if _args[0].body_type === "">>
<<set _body_type to ["busty", "slender", "average"]>>
<<set _args[0].body_type to _body_type.random()>>
<</if>>
CHECK SLAVE PACK OPTIONS
<<if _args[0].class !== "Neeko">>
<<for _p = 0; _p < _class_list[_args[0].class].length; _p++>>
<<if _class_list[_args[0].class][_p].body_type == _args[0].body_type && !_class_list[_args[0].class][_p].used && _args[0].pic_default === "">>
<<set _class_list[_args[0].class][_p].used to true>>
<<set _args[0].pic_default to _class_list[_args[0].class][_p].raider.random()>>
<<set _args[0].slave_pack to _class_list[_args[0].class][_p]>>
<<break>>
<</if>>
<</for>>
<</if>>
PICK BASE PICTURE
<<if _args[0].pic_default === "">>
<<if _args[0].body_type === "slender">>
<<set _args[0].pic_default to setup.slender_raider_pics[_args[0].class].random()>>
<<elseif _args[0].body_type === "average">>
<<set _args[0].pic_default to setup.average_raider_pics[_args[0].class].random()>>
<<elseif _args[0].body_type === "busty">>
<<set _args[0].pic_default to setup.busty_raider_pics[_args[0].class].random()>>
<<else>>
<<set _error.push(_args[0].class + ": No body type")>>
<</if>>
<</if>>
<<set _args[0].pic to _args[0].pic_default>>
CREATE BASE REPORT
<<set _report to {
name: _args[0].name,
class: _args[0].class,
subclass: _args[0].subclass.name,
pic: _args[0].pic_default,
result: "",
result_pic: "",
log: []
}>>
<<set _args[0].report to clone(_report)>>
UPDATE GRINDED
<<set _args[0].grinded to true>>
<</widget>><<widget "SlaveLoveGrowth">>
arg[0] is cur_slave and args[1] is exp gained
DIFFICULTY MOD
<<set _args[1] to Math.round(_args[1] * $diffSlaveEXPMod)>>
STARTING LOVE EXP IS _args[1]
GODDESS CHARM BLESSING
<<set _blessing to $pc_blessing_list.delete("Goddess's Charm I", "Goddess's Charm II", "Goddess's Charm III", "Goddess's Charm IV", "Goddess's Charm V")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.charm.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.charm[_z].name)>>
<<set _info to clone(setup.allBlessingList.charm[_z])>>
INCREASE EXP
<<set _args[1] += (Math.round(_args[1] * _info.float)).clamp(1, 1000000)>>
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
DAYOFF
<<if _args[0].dayoff_bool === true>>
<<set _args[1] += (Math.round(_args[1] * 0.25)).clamp(1, 1000000)>>
<</if>>
POSITIVE TRAITS
WAIFU
<<if _args[0].trait_names.includes("Waifu")>>
<<set _args[1] += (Math.round(_args[1] * setup.waifu.float)).clamp(1, 1000000)>>
<</if>>
PASSIONATE
<<if _args[0].trait_names.includes("Passionate")>>
<<set _args[1] += (Math.round(_args[1] * setup.passionate.float)).clamp(1, 1000000)>>
<</if>>
PROTECTIVE
<<if _args[0].trait_names.includes("Protective")>>
<<set _args[1] += (Math.round(_args[1] * setup.protective.float)).clamp(1, 1000000)>>
<</if>>
COMPASSIONATE
<<if _args[0].trait_names.includes("Compassionate")>>
<<set _args[1] += (Math.round(_args[1] * setup.compassionate.float)).clamp(1, 1000000)>>
<</if>>
GIFTED
<<if _args[0].trait_names.includes("Gifted")>>
<<set _args[1] += (Math.round(_args[1] * setup.gifted.float)).clamp(1, 1000000)>>
<</if>>
ADORING
<<if _args[0].trait_names.includes("Adoring")>>
<<set _args[1] += (Math.round(_args[1] * setup.adoring.float)).clamp(1, 1000000)>>
<</if>>
LOVER
<<if _args[0].trait_names.includes("Lover")>>
<<set _args[1] += (Math.round(_args[1] * setup.lover.float)).clamp(1, 1000000)>>
<</if>>
CLINGY
<<if _args[0].trait_names.includes("Clingy")>>
<<set _args[1] += (Math.round(_args[1] * (_args[0].love * setup.clingy.love_float))).clamp(1, 1000000)>>
<</if>>
NEGATIVE TRAITS
BITTER
<<if _args[0].trait_names.includes("Bitter")>>
<<set _args[1] -= (Math.round(_args[1] * setup.bitter.float)).clamp(1, 1000000)>>
<</if>>
SCOLDED
<<if _args[0].scolded_bool === true>>
SUBDUED EMOTIONS
<<set _blessing to $pc_blessing_list.delete("Subdued Emotions I", "Subdued Emotions II")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.charm.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.charm[_z].name)>>
<<set _info to clone(setup.allBlessingList.charm[_z])>>
SET SCOLD AMOUNT
<<set _scold_mod to clone(_info.float)>>
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
REGULAR SCOLDED
<<else>>
<<set _scold_mod to 0.5>>
<</if>>
REDUCE LOVE EXP GAINED FOR EACH CONSECUTIVE DAY SCOLDED
<<for _z = 0; _z < _args[0].scolded_count; _z++>>
<<set _args[1] -= (Math.round(_args[1] * _scold_mod)).clamp(1, 1000000)>>
<</for>>
<</if>>
ADD STAT GROWTH
LOATHING
<<if _args[0].trait_names.includes("Loathing")>>
<<set _args[1] to 0>>
GAINED NO LOVE BECAUSE OF LOATHING
<<else>>
<<set _args[1].clamp(1, 1000000)>>
<<set _slave_triggers.exp_gained.love += _args[1]>>
GAINED _args[1] LOVE EXP
<</if>>
<<if _args[0].love < _args[0].love_limit>>
<<set _args[0].love_tracker += _args[1]>>
_args[0].name's LOVE EXP IS AT _args[0].love_tracker OUT OF _args[0].love_tracker_limit
---STAT INCREASE CHECK---
<<if _args[0].love_tracker >= _args[0].love_tracker_limit>>
<<for _z = 0; _z < 1; _z++>>
SET TRIGGER AND INCREASE STAT
<<set _slave_triggers.stat_gained.love++>>
<<set _args[0].love++>>
CONVICTION OF ADORATION
<<if $pc_blessing_list.includes("Conviction of Adoration") && _args[0].love >= setup.blessing_08_12.love_req && _args[0].adoration_bool === false>>
<<AdorationReplacement _args[0] setup.blessing_08_12>>
<</if>>
SET NEXT LEVEL EXP, CHECK IF GAINED ANOTHER LEVEL
<<if _args[0].love === _args[0].love_limit>>
CANT GAIN ANYMORE LOVE, MAX EXP TRACKER
<<set _args[0].love_tracker to _args[0].love_tracker_limit>>
<<break>>
<<else>>
<<set _args[0].love_tracker_limit += Math.round((_args[0].love + setup.slave_stat_constant) * setup.slave_stat_mod)>>
<<if _args[0].love_tracker >= _args[0].love_tracker_limit>>
<<set _z-->>
<</if>>
<<continue>>
<</if>>
<</for>>
UPDATE UPKEEP COST
<<SlaveUpkeepCalc _args[0]>>
<</if>>
<</if>>
<</widget>>
<<widget "SlaveObedienceGrowth">>
args[0] is slave and args[1] is obedience stat exp from job/quest
DIFFICULTY MOD
<<set _args[1] to Math.round(_args[1] * $diffSlaveEXPMod)>>
STARTING OBEDIENCE EXP IS _args[1]
PASSIONTATE EXPERIENCE
<<if $pc_blessing_list.includes("Passionate Experience")>>
<<set _args[1] += (Math.round(_args[1] * (setup.blessing_08_7.float * _args[0].love))).clamp(1, 1000000)>>
<</if>>
POSITIVE TRAITS
WAIFU
<<if _args[0].trait_names.includes("Waifu")>>
<<set _args[1] += (Math.round(_args[1] * setup.waifu.float)).clamp(1, 1000000)>>
<</if>>
MISTRESS
<<if _args[0].trait_names.includes("Mistress")>>
<<set _args[1] += (Math.round(_args[1] * setup.mistress.float)).clamp(1, 1000000)>>
<</if>>
DRIVEN
<<if _args[0].trait_names.includes("Driven")>>
<<set _args[1] += (Math.round(_args[1] * setup.driven.float)).clamp(1, 1000000)>>
<</if>>
SMART
<<if _args[0].trait_names.includes("Smart")>>
<<set _args[1] += (Math.round(_args[1] * setup.smart.float)).clamp(1, 1000000)>>
<</if>>
LOYAL
<<if _args[0].trait_names.includes("Loyal") && _args[0].love >= setup.loyal.love_req>>
<<set _args[1] += (Math.round(_args[1] * setup.loyal.float)).clamp(1, 1000000)>>
<</if>>
GUARDIAN
<<if _args[0].trait_names.includes("Guardian") && _args[0].love >= setup.guardian.love_req>>
<<set _args[1] += (Math.round(_args[1] * setup.guardian.float)).clamp(1, 1000000)>>
<</if>>
INTELLECTUAL
<<if _args[0].trait_names.includes("Intellectual") && _args[0].love >= setup.intellectual.love_req>>
<<set _args[1] += (Math.round(_args[1] * setup.intellectual.float)).clamp(1, 1000000)>>
<</if>>
GIFTED
<<if _args[0].trait_names.includes("Gifted")>>
<<set _args[1] += (Math.round(_args[1] * setup.gifted.float)).clamp(1, 1000000)>>
<</if>>
BEHAVED
<<if _args[0].trait_names.includes("Behaved")>>
<<set _args[1] += (Math.round(_args[1] * setup.behaved.float)).clamp(1, 1000000)>>
<</if>>
LOVER
<<if _args[0].trait_names.includes("Lover")>>
<<set _args[1] += (Math.round(_args[1] * setup.lover.float)).clamp(1, 1000000)>>
<</if>>
NEGATIVE TRAITS
REBEL
<<if _args[0].trait_names.includes("Rebel")>>
<<set _args[1] -= (Math.round(_args[1] * setup.rebel.float)).clamp(1, 1000000)>>
<</if>>
ADD STAT GROWTH
<<set _args[1].clamp(1, 1000000)>>
<<set _slave_triggers.exp_gained.obedience += _args[1]>>
GAINED _args[1] OBEDIENCE EXP
<<if _args[0].obedience < _args[0].obedience_limit>>
<<set _args[0].obedience_tracker += _args[1]>>
_args[0].name's OBEDIENCE EXP IS AT _args[0].obedience_tracker OUT OF _args[0].obedience_tracker_limit
---STAT INCREASE CHECK---
<<if _args[0].obedience_tracker >= _args[0].obedience_tracker_limit>>
<<for _z = 0; _z < 1; _z++>>
SET TRIGGER AND INCREASE STAT
<<set _slave_triggers.stat_gained.obedience++>>
<<set _args[0].obedience++>>
SET NEXT LEVEL EXP, CHECK IF GAINED ANOTHER LEVEL
<<if _args[0].obedience === _args[0].obedience_limit>>
CANT GAIN ANYMORE OBEDIENCE, MAX EXP TRACKER
<<set _args[0].obedience_tracker to _args[0].obedience_tracker_limit>>
<<break>>
<<else>>
<<set _args[0].obedience_tracker_limit += Math.round((_args[0].obedience + setup.slave_stat_constant) * setup.slave_stat_mod)>>
<<if _args[0].obedience_tracker >= _args[0].obedience_tracker_limit>>
<<set _z-->>
<</if>>
<<continue>>
<</if>>
<</for>>
UPDATE UPKEEP COST
<<SlaveUpkeepCalc _args[0]>>
<</if>>
<</if>>
<</widget>>
<<widget "SlaveLibidoGrowth">>
args[0] is slave and args[1] is libido stat exp from job/quest
DIFFICULTY MOD
<<set _args[1] to Math.round(_args[1] * $diffSlaveEXPMod)>>
STARTING LIBIDO EXP IS _args[1]
PASSIONTATE EXPERIENCE
<<if $pc_blessing_list.includes("Passionate Experience")>>
<<set _args[1] += (Math.round(_args[1] * (setup.blessing_08_7.float * _args[0].love))).clamp(1, 1000000)>>
<</if>>
POSITIVE TRAITS
PASSIONATE
<<if _args[0].trait_names.includes("Passionate")>>
<<set _args[1] += (Math.round(_args[1] * setup.passionate.float)).clamp(1, 1000000)>>
<</if>>
MISTRESS
<<if _args[0].trait_names.includes("Mistress")>>
<<set _args[1] += (Math.round(_args[1] * setup.mistress.float)).clamp(1, 1000000)>>
<</if>>
DOMINATE
<<if _args[0].trait_names.includes("Dominate")>>
<<set _args[1] += (Math.round(_args[1] * setup.dominate.float)).clamp(1, 1000000)>>
<</if>>
PROVOCATIVE
<<if _args[0].trait_names.includes("Provocative")>>
<<set _args[1] += (Math.round(_args[1] * setup.provocative.float)).clamp(1, 1000000)>>
<</if>>
LOYAL
<<if _args[0].trait_names.includes("Loyal") && _args[0].love >= setup.loyal.love_req>>
<<set _args[1] += (Math.round(_args[1] * setup.loyal.float)).clamp(1, 1000000)>>
<</if>>
DEVOTED
<<if _args[0].trait_names.includes("Devoted") && _args[0].love >= setup.devoted.love_req>>
<<set _args[1] += (Math.round(_args[1] * setup.devoted.float)).clamp(1, 1000000)>>
<</if>>
FAITHFUL
<<if _args[0].trait_names.includes("Faithful") && _args[0].love >= setup.faithful.love_req>>
<<set _args[1] += (Math.round(_args[1] * setup.faithful.float)).clamp(1, 1000000)>>
<</if>>
GIFTED
<<if _args[0].trait_names.includes("Gifted")>>
<<set _args[1] += (Math.round(_args[1] * setup.gifted.float)).clamp(1, 1000000)>>
<</if>>
SENSUAL
<<if _args[0].trait_names.includes("Sensual")>>
<<set _args[1] += (Math.round(_args[1] * setup.sensual.float)).clamp(1, 1000000)>>
<</if>>
LOVER
<<if _args[0].trait_names.includes("Lover")>>
<<set _args[1] += (Math.round(_args[1] * setup.lover.float)).clamp(1, 1000000)>>
<</if>>
NEGATIVE TRAITS
SHY
<<if _args[0].trait_names.includes("Shy")>>
<<set _args[1] -= (Math.round(_args[1] * setup.shy.float)).clamp(1, 1000000)>>
<</if>>
ADD STAT GROWTH
<<if _args[0].trait_names.includes("Traumatized")>>
<<set _args[1] to 0>>
GAINED NO EXP FROM TRAUMATIZED
<<else>>
<<set _args[1].clamp(1, 1000000)>>
<<set _slave_triggers.exp_gained.libido += _args[1]>>
GAINED _args[1] LIBIDO EXP
<</if>>
<<if _args[0].libido < _args[0].libido_limit>>
<<set _args[0].libido_tracker += _args[1]>>
_args[0].name's LIBIDO EXP IS AT _args[0].libido_tracker OUT OF _args[0].libido_tracker_limit
---STAT INCREASE CHECK---
<<if _args[0].libido_tracker >= _args[0].libido_tracker_limit>>
<<for _z = 0; _z < 1; _z++>>
SET TRIGGER AND INCREASE STAT
<<set _slave_triggers.stat_gained.libido++>>
<<set _args[0].libido++>>
SET NEXT LEVEL EXP, CHECK IF GAINED ANOTHER LEVEL
<<if _args[0].libido === _args[0].libido_limit>>
CANT GAIN ANYMORE OBEDIENCE, MAX EXP TRACKER
<<set _args[0].libido_tracker to _args[0].libido_tracker_limit>>
<<break>>
<<else>>
<<set _args[0].libido_tracker_limit += Math.round((_args[0].libido + setup.slave_stat_constant) * setup.slave_stat_mod)>>
<<if _args[0].libido_tracker >= _args[0].libido_tracker_limit>>
<<set _z-->>
<</if>>
<<continue>>
<</if>>
<</for>>
UPDATE UPKEEP COST
<<SlaveUpkeepCalc _args[0]>>
<</if>>
<</if>>
<</widget>>
<<widget "SlaveStrengthGrowth">>
args[0] is salve and args[1] is strength stat exp from job/quest
DIFFICULTY MOD
<<set _args[1] to Math.round(_args[1] * $diffSlaveEXPMod)>>
STARTING STRENGTH EXP IS _args[1]
PASSIONTATE EXPERIENCE
<<if $pc_blessing_list.includes("Passionate Experience")>>
<<set _args[1] += (Math.round(_args[1] * (setup.blessing_08_7.float * _args[0].love))).clamp(1, 1000000)>>
<</if>>
POSITIVE TRAITS
PROTECTIVE
<<if _args[0].trait_names.includes("Protective")>>
<<set _args[1] += (Math.round(_args[1] * setup.protective.float)).clamp(1, 1000000)>>
<</if>>
DRIVEN
<<if _args[0].trait_names.includes("Driven")>>
<<set _args[1] += (Math.round(_args[1] * setup.driven.float)).clamp(1, 1000000)>>
<</if>>
DOMINATE
<<if _args[0].trait_names.includes("Dominate")>>
<<set _args[1] += (Math.round(_args[1] * setup.dominate.float)).clamp(1, 1000000)>>
<</if>>
INFLUENTIAL
<<if _args[0].trait_names.includes("Influential")>>
<<set _args[1] += (Math.round(_args[1] * setup.influential.float)).clamp(1, 1000000)>>
<</if>>
GUARDIAN
<<if _args[0].trait_names.includes("Guardian") && _args[0].love >= setup.guardian.love_req>>
<<set _args[1] += (Math.round(_args[1] * setup.guardian.float)).clamp(1, 1000000)>>
<</if>>
DEVOTED
<<if _args[0].trait_names.includes("Devoted") && _args[0].love >= setup.devoted.love_req>>
<<set _args[1] += (Math.round(_args[1] * setup.devoted.float)).clamp(1, 1000000)>>
<</if>>
DETERMINED
<<if _args[0].trait_names.includes("Determined") && _args[0].love >= setup.determined.love_req>>
<<set _args[1] += (Math.round(_args[1] * setup.determined.float)).clamp(1, 1000000)>>
<</if>>
GIFTED
<<if _args[0].trait_names.includes("Gifted")>>
<<set _args[1] += (Math.round(_args[1] * setup.gifted.float)).clamp(1, 1000000)>>
<</if>>
VIGOROUS
<<if _args[0].trait_names.includes("Vigorous")>>
<<set _args[1] += (Math.round(_args[1] * setup.vigorous.float)).clamp(1, 1000000)>>
<</if>>
LOVER
<<if _args[0].trait_names.includes("Lover")>>
<<set _args[1] += (Math.round(_args[1] * setup.lover.float)).clamp(1, 1000000)>>
<</if>>
NEGATIVE TRAITS
FEEBLE
<<if _args[0].trait_names.includes("Feeble")>>
<<set _args[1] -= (Math.round(_args[1] * setup.feeble.float)).clamp(1, 1000000)>>
<</if>>
ADD STAT GROWTH
<<set _args[1].clamp(1, 1000000)>>
<<set _slave_triggers.exp_gained.strength += _args[1]>>
GAINED _args[1] STRENGTH EXP
<<if _args[0].strength < _args[0].strength_limit>>
<<set _args[0].strength_tracker += _args[1]>>
_args[0].name's STRENGTH EXP IS AT _args[0].strength_tracker OUT OF _args[0].strength_tracker_limit
---STAT INCREASE CHECK---
<<if _args[0].strength_tracker >= _args[0].strength_tracker_limit>>
<<for _z = 0; _z < 1; _z++>>
SET TRIGGER AND INCREASE STAT
<<set _slave_triggers.stat_gained.strength++>>
<<set _args[0].strength++>>
SET NEXT LEVEL EXP, CHECK IF GAINED ANOTHER LEVEL
<<if _args[0].strength === _args[0].strength_limit>>
CANT GAIN ANYMORE STRENGTH, MAX EXP TRACKER
<<set _args[0].strength_tracker to _args[0].strength_tracker_limit>>
<<break>>
<<else>>
<<set _args[0].strength_tracker_limit += Math.round((_args[0].strength + setup.slave_stat_constant) * setup.slave_stat_mod)>>
<<if _args[0].strength_tracker >= _args[0].strength_tracker_limit>>
<<set _z-->>
<</if>>
<<continue>>
<</if>>
<</for>>
UPDATE UPKEEP COST
<<SlaveUpkeepCalc _args[0]>>
<</if>>
<</if>>
<</widget>>
<<widget "SlaveIntelligenceGrowth">>
args[0] is salve and args[1] is intelligence stat exp from job/quest
DIFFICULTY MOD
<<set _args[1] to Math.round(_args[1] * $diffSlaveEXPMod)>>
STARTING INTELLIGENCE EXP IS _args[1]
PASSIONTATE EXPERIENCE
<<if $pc_blessing_list.includes("Passionate Experience")>>
<<set _args[1] += (Math.round(_args[1] * (setup.blessing_08_7.float * _args[0].love))).clamp(1, 1000000)>>
<</if>>
POSITIVE TRAITS
COMPASSIONATE
<<if _args[0].trait_names.includes("Compassionate")>>
<<set _args[1] += (Math.round(_args[1] * setup.compassionate.float)).clamp(1, 1000000)>>
<</if>>
SMART
<<if _args[0].trait_names.includes("Smart")>>
<<set _args[1] += (Math.round(_args[1] * setup.smart.float)).clamp(1, 1000000)>>
<</if>>
PROVOCATIVE
<<if _args[0].trait_names.includes("Provocative")>>
<<set _args[1] += (Math.round(_args[1] * setup.provocative.float)).clamp(1, 1000000)>>
<</if>>
INFLUENTIAL
<<if _args[0].trait_names.includes("Influential")>>
<<set _args[1] += (Math.round(_args[1] * setup.influential.float)).clamp(1, 1000000)>>
<</if>>
INTELLECTUAL
<<if _args[0].trait_names.includes("Intellectual") && _args[0].love >= setup.intellectual.love_req>>
<<set _args[1] += (Math.round(_args[1] * setup.intellectual.float)).clamp(1, 1000000)>>
<</if>>
FAITHFUL
<<if _args[0].trait_names.includes("Faithful") && _args[0].love >= setup.faithful.love_req>>
<<set _args[1] += (Math.round(_args[1] * setup.faithful.float)).clamp(1, 1000000)>>
<</if>>
DETERMINED
<<if _args[0].trait_names.includes("Determined") && _args[0].love >= setup.determined.love_req>>
<<set _args[1] += (Math.round(_args[1] * setup.determined.float)).clamp(1, 1000000)>>
<</if>>
GIFTED
<<if _args[0].trait_names.includes("Gifted")>>
<<set _args[1] += (Math.round(_args[1] * setup.gifted.float)).clamp(1, 1000000)>>
<</if>>
BRILLIANT
<<if _args[0].trait_names.includes("Brilliant")>>
<<set _args[1] += (Math.round(_args[1] * setup.brilliant.float)).clamp(1, 1000000)>>
<</if>>
LOVER
<<if _args[0].trait_names.includes("Lover")>>
<<set _args[1] += (Math.round(_args[1] * setup.lover.float)).clamp(1, 1000000)>>
<</if>>
NEGATIVE TRAITS
AIR HEAD
<<if _args[0].trait_names.includes("Air Head")>>
<<set _args[1] -= (Math.round(_args[1] * setup.airhead.float)).clamp(1, 1000000)>>
<</if>>
ADD STAT GROWTH
<<set _args[1].clamp(1, 1000000)>>
<<set _slave_triggers.exp_gained.intelligence +=_args[1]>>
GAINED _args[1] INTELLIGENCE EXP
<<if _args[0].intelligence < _args[0].intelligence_limit>>
<<set _args[0].intelligence_tracker += _args[1]>>
_args[0].name's INTELLIGENCE EXP IS AT _args[0].intelligence_tracker OUT OF _args[0].intelligence_tracker_limit
---STAT INCREASE CHECK---
<<if _args[0].intelligence_tracker >= _args[0].intelligence_tracker_limit>>
<<for _z = 0; _z < 1; _z++>>
SET TRIGGER AND INCREASE STAT
<<set _slave_triggers.stat_gained.intelligence++>>
<<set _args[0].intelligence++>>
SET NEXT LEVEL EXP, CHECK IF GAINED ANOTHER LEVEL
<<if _args[0].intelligence === _args[0].intelligence_limit>>
CANT GAIN ANYMORE INTELLIGENCE, MAX EXP TRACKER
<<set _args[0].intelligence_tracker to _args[0].intelligence_tracker_limit>>
<<break>>
<<else>>
<<set _args[0].intelligence_tracker_limit += Math.round((_args[0].intelligence + setup.slave_stat_constant) * setup.slave_stat_mod)>>
<<if _args[0].intelligence_tracker >= _args[0].intelligence_tracker_limit>>
<<set _z-->>
<</if>>
<<continue>>
<</if>>
<</for>>
UPDATE UPKEEP COST
<<SlaveUpkeepCalc _args[0]>>
<</if>>
<</if>>
<</widget>>
<<widget "SexSkillGrowth">>
_args[0].name is slave _args[1] is exp gained and _args[2] is sex skill name
<<set _limit to _args[2]+"_limit">>
<<set _tracker to _args[2]+"_tracker">>
<<set _tracker_limit to _args[2]+"_tracker_limit">>
DIFFICULTY MOD
<<set _args[1] to Math.round(_args[1] * $diffSlaveEXPMod)>>
PASSIONTATE EXPERIENCE
<<if $pc_blessing_list.includes("Passionate Experience")>>
<<set _args[1] += (Math.round(_args[1] * (setup.blessing_08_7.float * _args[0].love))).clamp(1, 1000000)>>
<</if>>
POSITIVE TRAITS
TALENTED
<<if _args[0].trait_names.includes("Talented")>>
<<set _args[1] += (Math.round(_args[1] * setup.talented.float)).clamp(1, 1000000)>>
<</if>>
ASSIDUOUS
<<if _args[0].trait_names.includes("Assiduous") && _args[0].love >= setup.assiduous.love_req>>
<<set _args[1] += (Math.round(_args[1] * setup.assiduous.float)).clamp(1, 1000000)>>
<</if>>
LOVER
<<if _args[0].trait_names.includes("Lover")>>
<<set _args[1] += (Math.round(_args[1] * setup.lover.float)).clamp(1, 1000000)>>
<</if>>
EXOTIC
<<if _args[0].trait_names.includes("Exotic")>>
<<set _args[1] += (Math.round(_args[1] * setup.exotic.float)).clamp(1, 1000000)>>
<</if>>
NEGATIVE TRAITS
INCOMPETENT
<<if _args[0].trait_names.includes("Incompetent")>>
<<set _args[1] -= (Math.round(_args[1] * setup.incompetent.float)).clamp(1, 1000000)>>
<</if>>
ADD SKILL EXP
<<set _args[1].clamp(1, 1000000)>>
<<set _slave_triggers.exp_gained[_args[2]] += _args[1]>>
<<if _args[0][_args[2]] < _args[0][_limit]>>
<<set _args[0][_tracker] += _args[1]>>
_args[0].name's _args[2] SKILL IS AT _args[0][_tracker] OUT OF _args[0][_tracker_limit]
---STAT INCREASE CHECK---
<<if _args[0][_tracker] >= _args[0][_tracker_limit]>>
<<for _z = 0; _z < 1; _z++>>
SET TRIGGER AND INCREASE STAT
<<set _slave_triggers.skill_gained[_args[2]]++>>
<<set _args[0][_args[2]]++>>
SET NEXT LEVEL EXP, CHECK IF GAINED ANOTHER LEVEL
<<if _args[0][_args[2]] === _args[0][_limit]>>
CANT GAIN ANYMORE _args[2] EXP
<<set _args[0][_tracker] to _args[0][_tracker_limit]>>
<<break>>
<<else>>
<<set _args[0][_tracker_limit] += Math.round((_args[0][_args[2]] + setup.slave_skill_constant) * setup.slave_skill_mod)>>
<<if _args[0][_tracker] >= _args[0][_tracker_limit]>>
<<set _z-->>
<</if>>
<<continue>>
<</if>>
<</for>>
UPDATE UPKEEP COST
<<SlaveUpkeepCalc _args[0]>>
<</if>>
<</if>>
<</widget>>
<<widget "SlaveConformity">>
_args[0].name is Conformity Slave
<<set _options to []>> List of slaves who can be receive EXP
<<for _z = 0; _z < $slave_room_list.length; _z++>>
<<if $slave_room_list[_z].room_type === "Slave">>
<<if $slave_room_list[_z].report.conformity_slave === "" && $slave_room_list[_z].disobedient === false && $slave_room_list[_z].class_cd === 0 && $slave_room_list[_z].quest_cd === 0 && $slave_room_list[_z].index !== _args[0].index>>
<<set _num to clone(_z)>>
<<set _options.push(_num)>>
$slave_room_list[_z].name IS AN OPTION
<</if>>
<</if>>
<</for>>
<<if _options.length > 0>>
<<set _exp_share = {
love: Math.round(_args[0].report.exp_gained.love * setup.blessing_09_12.float),
obedience: Math.round(_args[0].report.exp_gained.obedience * setup.blessing_09_12.float),
libido: Math.round(_args[0].report.exp_gained.libido * setup.blessing_09_12.float),
strength: Math.round(_args[0].report.exp_gained.strength * setup.blessing_09_12.float),
intelligence: Math.round(_args[0].report.exp_gained.intelligence * setup.blessing_09_12.float),
handjob: Math.round(_args[0].report.exp_gained.handjob * setup.blessing_09_12.float),
blowjob: Math.round(_args[0].report.exp_gained.blowjob * setup.blessing_09_12.float),
titjob: Math.round(_args[0].report.exp_gained.titjob * setup.blessing_09_12.float),
footjob: Math.round(_args[0].report.exp_gained.footjob * setup.blessing_09_12.float),
missionary: Math.round(_args[0].report.exp_gained.missionary * setup.blessing_09_12.float),
cowgirl: Math.round(_args[0].report.exp_gained.cowgirl * setup.blessing_09_12.float),
doggy: Math.round(_args[0].report.exp_gained.doggy * setup.blessing_09_12.float),
anal: Math.round(_args[0].report.exp_gained.anal * setup.blessing_09_12.float)
}>>
DETERMINE WEIGHT FOR EACH OPTION
<<set _Slavelist to []>>
<<set _totalWeight to 0>>
<<for _z = 0; _z < _options.length; _z++>>
<<set _total_stats to $slave_room_list[_options[_z]].love + $slave_room_list[_options[_z]].obedience + $slave_room_list[_options[_z]].libido + $slave_room_list[_options[_z]].strength + $slave_room_list[_options[_z]].intelligence>>
<<set _total_skills to $slave_room_list[_options[_z]].handjob + $slave_room_list[_options[_z]].blowjob + $slave_room_list[_options[_z]].titjob + $slave_room_list[_options[_z]].footjob + $slave_room_list[_options[_z]].missionary + $slave_room_list[_options[_z]].cowgirl + $slave_room_list[_options[_z]].doggy + $slave_room_list[_options[_z]].anal>>
<<set _newSlave to {
index: $slave_room_list[_options[_z]].index,
weight: _total_stats + _total_skills
}>>
<<set _totalWeight += _newSlave.weight>>
<<set _Slavelist.push(clone(_newSlave))>>
<</for>>
ORDER LOWEST TO HIGHTEST
<<set _Slavelist.sort(function (a, b) { return a.weight - b.weight; });>>
FIND SLAVE
<<set _rng to random(1, _totalWeight)>>
<<set _needle to clone(_totalWeight)>>
<<for _z = 0; _z < _Slavelist.length; _z++>>
<<if _rng >= _needle - _Slavelist[_z].weight>>
<<set _target to clone(_Slavelist[_z].index)>>
<<break>>
<<else>>
<<set _needle -= _Slavelist[_z].weight>>
<</if>>
<</for>>
INCREASE EXP
<<for _s = 0; _s < $slave_room_list.length; _s++>>
<<if $slave_room_list[_s].room_type === "Slave">>
<<if $slave_room_list[_s].index === _target>>
<<set $slave_room_list[_s].report.conformity_slave to _args[0].name>>
<<set _conformity_text to []>>
<<SlaveSetup $slave_room_list[_s]>>
<<if _exp_share.love > 0>>
<<SlaveLoveGrowth $slave_room_list[_s] _exp_share.love>>
<<set $slave_room_list[_s].report.conformity_exp.love += _exp_share.love>>
<<set _conformity_text.push(" @@.love;"+_exp_share.love+" Love@@")>>
<</if>>
<<if _exp_share.obedience > 0>>
<<SlaveObedienceGrowth $slave_room_list[_s] _exp_share.obedience>>
<<set $slave_room_list[_s].report.conformity_exp.obedience += _exp_share.obedience>>
<<set _conformity_text.push(" @@.obedience;"+_exp_share.obedience+" Obedience@@")>>
<</if>>
<<if _exp_share.libido > 0>>
<<SlaveLibidoGrowth $slave_room_list[_s] _exp_share.libido>>
<<set $slave_room_list[_s].report.conformity_exp.libido += _exp_share.libido>>
<<set _conformity_text.push(" @@.libido;"+_exp_share.libido+" Libido@@")>>
<</if>>
<<if _exp_share.strength > 0>>
<<SlaveStrengthGrowth $slave_room_list[_s] _exp_share.strength>>
<<set $slave_room_list[_s].report.conformity_exp.strength += _exp_share.strength>>
<<set _conformity_text.push(" @@.strength;"+_exp_share.strength+" Strength@@")>>
<</if>>
<<if _exp_share.intelligence > 0>>
<<SlaveIntelligenceGrowth $slave_room_list[_s] _exp_share.intelligence>>
<<set $slave_room_list[_s].report.conformity_exp.intelligence += _exp_share.intelligence>>
<<set _conformity_text.push(" @@.intelligence;"+_exp_share.intelligence+" Intelligence@@")>>
<</if>>
<<if _exp_share.handjob > 0>>
<<SexSkillGrowth $slave_room_list[_s] _exp_share.handjob "handjob">>
<<set $slave_room_list[_s].report.conformity_exp.handjob += _exp_share.handjob>>
<<set _conformity_text.push(" "+_exp_share.handjob+" Handjob")>>
<</if>>
<<if _exp_share.blowjob > 0>>
<<SexSkillGrowth $slave_room_list[_s] _exp_share.blowjob "blowjob">>
<<set $slave_room_list[_s].report.conformity_exp.blowjob += _exp_share.blowjob>>
<<set _conformity_text.push(" "+_exp_share.blowjob+" Blowjob")>>
<</if>>
<<if _exp_share.titjob > 0>>
<<SexSkillGrowth $slave_room_list[_s] _exp_share.titjob "titjob">>
<<set $slave_room_list[_s].report.conformity_exp.titjob += _exp_share.titjob>>
<<set _conformity_text.push(" "+_exp_share.titjob+" Titjob")>>
<</if>>
<<if _exp_share.footjob > 0>>
<<SexSkillGrowth $slave_room_list[_s] _exp_share.footjob "footjob">>
<<set $slave_room_list[_s].report.conformity_exp.footjob += _exp_share.footjob>>
<<set _conformity_text.push(" "+_exp_share.footjob+" Footjob")>>
<</if>>
<<if _exp_share.missionary > 0>>
<<SexSkillGrowth $slave_room_list[_s] _exp_share.missionary "missionary">>
<<set $slave_room_list[_s].report.conformity_exp.missionary += _exp_share.missionary>>
<<set _conformity_text.push(" "+_exp_share.missionary+" Missionary")>>
<</if>>
<<if _exp_share.cowgirl > 0>>
<<SexSkillGrowth $slave_room_list[_s] _exp_share.cowgirl "cowgirl">>
<<set $slave_room_list[_s].report.conformity_exp.cowgirl += _exp_share.cowgirl>>
<<set _conformity_text.push(" "+_exp_share.cowgirl+" Cowgirl")>>
<</if>>
<<if _exp_share.doggy > 0>>
<<SexSkillGrowth $slave_room_list[_s] _exp_share.doggy "doggy">>
<<set $slave_room_list[_s].report.conformity_exp.doggy += _exp_share.doggy>>
<<set _conformity_text.push(" "+_exp_share.doggy+" Doggy")>>
<</if>>
<<if _exp_share.anal > 0>>
<<SexSkillGrowth $slave_room_list[_s] _exp_share.anal "anal">>
<<set $slave_room_list[_s].report.conformity_exp.anal += _exp_share.anal>>
<<set _conformity_text.push(" "+_exp_share.anal+" Anal")>>
<</if>>
<<if _conformity_text.length > 1>>
<<set _lastText to _conformity_text.pop()>>
<<if _conformity_text.length === 1>>
<<set _text to _conformity_text+" and"+_lastText>>
<<else>>
<<set _text to _conformity_text+", and"+_lastText>>
<</if>>
<<elseif _conformity_text.length === 1>>
<<set _text to _conformity_text>>
<</if>>
<<set $slave_room_list[_s].report.conformity_exp.text to $slave_room_list[_s].report.conformity_slave+" shared their experiences with her, gaining"+_text+" EXP.">>
<<break>>
<</if>>
<</if>>
<</for>>
<</if>>
<</widget>><<widget "DancerBuff">>
<<if !_args[0].status_names.includes("Brainwashed")>>
_args[0].name is Dancer and _args[1].name is room
<<set _dancer_def_limit to 50>> defense buff becomes an option if health totals are less than this limit
<<set _dancer_toler_limit to 50>> tolerance buff becomes an option if lust totals are greater than this limit
<<set _dancer_def_buff to Math.round(40 * _args[0].subclass.buff_mod)>>
<<- _dancer_def_buff>> DEFENCE BUFF
<<set _dancer_toler_buff to Math.round(40 * _args[0].subclass.buff_mod)>>
<<- _dancer_toler_buff>> TOLERANCE BUFF
<<set _dancer_atk_buff to Math.round(30 * _args[0].subclass.buff_mod)>>
<<- _dancer_atk_buff>> ATTACK BUFF
<<set _dancer_aware_buff to Math.trunc(20 * _args[0].subclass.buff_mod)>>
<<- _dancer_aware_buff>> AWARENESS BUFF
* Choose What Buff to Give *
<<set _dancer_options to []>>
HOW HEALTH IS EVERYONE?
If average health is lower than limit, defense buff is an option
<<set _tot_cur_health to 0>>
<<set _tot_max_health to 0>>
<<for _z = 0; _z < $raiders.length; _z++>>
<<set _tot_cur_health += $raiders[_z].cur_health>>
<<set _tot_max_health += $raiders[_z].max_health>>
<</for>>
<<set _average to (_tot_cur_health / _tot_max_health).toFixed(2) * 100>>
<<if _average < _dancer_def_limit>>
<<set _dancer_options.push("Defense Buff")>>
<</if>>
HOW HORNY IS EVERYONE?
If average lust is higher than limit, tolerance buff is an option
<<set _tot_cur_lust to 0>>
<<set _tot_max_lust to 0>>
<<for _z = 0; _z < $raiders.length; _z++>>
<<set _tot_cur_lust += $raiders[_z].cur_lust>>
<<set _tot_max_lust += $raiders[_z].max_lust>>
<</for>>
<<set _average to (_tot_cur_lust / _tot_max_lust).toFixed(2) * 100>>
<<if _average > _dancer_toler_limit>>
<<set _dancer_options.push("Tolerance Buff")>>
<</if>>
ARE WE FIGHTING A CREATURE?
If the room is a creature, then attack buff is an option
<<if _args[1].room_type === "Creature">>
<<set _dancer_options.push("Attack Buff")>>
<</if>>
ARE WE IN A TRAP ROOM?
If the room is a trap, then awareness buff is an option
<<if _args[1].room_type === "Trap">>
<<set _dancer_options.push("Awareness Buff")>>
<</if>>
* Choose Dance *
<<if _dancer_options.length > 0>>
<<set _chosen_dance to _dancer_options.random()>>
<<set _args[0].dance to _chosen_dance>>
<</if>>
<<if _chosen_dance === "Attack Buff">>
* Dance of the Jaguar (ATTACK BUFF) *
CREATE STATUS
<<set _newStatus to clone(setup.stat_up)>>
<<set _newStatus.name to "Dance of the Jaguar">>
<<set _newStatus.id to "Dancer Buff">>
<<for _z = 0; _z < $raiders.length; _z++>>
GIVE ATTACK BUFF
<<set $raiders[_z].cur_vig += _dancer_atk_buff>>
<<set $raiders[_z].cur_will += _dancer_atk_buff>>
GIVE STATUS
<<set $raiders[_z].statuses.push(_newStatus)>>
<<set $raiders[_z].status_names.push(_newStatus.id)>>
<</for>>
<<elseif _chosen_dance === "Defense Buff">>
* Dance of the Serpent (DEFENSE BUFF) *
CREATE STATUS
<<set _newStatus to clone(setup.stat_up)>>
<<set _newStatus.name to "Dance of the Serpent">>
<<set _newStatus.id to "Dancer Buff">>
<<for _z = 0; _z < $raiders.length; _z++>>
GIVE ATTACK BUFF
<<set $raiders[_z].cur_end += _dancer_def_buff>>
<<set $raiders[_z].cur_pers += _dancer_def_buff>>
GIVE STATUS
<<set $raiders[_z].statuses.push(_newStatus)>>
<<set $raiders[_z].status_names.push(_newStatus.id)>>
<</for>>
<<elseif _chosen_dance === "Tolerance Buff">>
* Dance of the Mermaid (TOLERANCE BUFF) *
CREATE STATUS
<<set _newStatus to clone(setup.stat_up)>>
<<set _newStatus.name to "Dance of the Mermaid">>
<<set _newStatus.id to "Dancer Buff">>
<<for _z = 0; _z < $raiders.length; _z++>>
GIVE ATTACK BUFF
<<set $raiders[_z].cur_toler += _dancer_toler_buff>>
GIVE STATUS
<<set $raiders[_z].statuses.push(_newStatus)>>
<<set $raiders[_z].status_names.push(_newStatus.id)>>
<</for>>
<<elseif _chosen_dance === "Awareness Buff">>
* Dance of the Eagle (AWARENESS BUFF) *
CREATE STATUS
<<set _newStatus to clone(setup.stat_up)>>
<<set _newStatus.name to "Dance of the Eagle">>
<<set _newStatus.id to "Dancer Buff">>
<<for _z = 0; _z < $raiders.length; _z++>>
GIVE ATTACK BUFF
<<set $raiders[_z].cur_aware += _dancer_aware_buff>>
GIVE STATUS
<<set $raiders[_z].statuses.push(_newStatus)>>
<<set $raiders[_z].status_names.push(_newStatus.id)>>
<</for>>
<</if>>
FLOW WEAVER
<<if _args[0].trait_names.includes("Flow Weaver")>>
GIVE STATUS IF DOES NOT HAVE
<<if !_args[0].status_names.includes(setup.flow.id)>>
<<set _args[0].statuses.push(setup.flow)>>
<<set _args[0].status_names.push(setup.flow.id)>>
<</if>>
FIND FLOW STATUS
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
<<if _args[0].statuses[_z].id === setup.flow.id>>
INCREASE FLOW STACK
<<if _args[0].statuses[_z].stack < _args[0].statuses[_z].max_stack>>
<<set _args[0].statuses[_z].stack++>>
<</if>>
UPDATE NAME
<<set _args[0].statuses[_z].name to "Flow x" + _args[0].statuses[_z].stack>>
END LOOP
<<break>>
<</if>>
<</for>>
<</if>>
<</if>>
<</widget>>RANK 1 JOBS
Maid Jobs - Slave services player and provides exp
Prostitution Jobs - Slave prostitutes body to earn Gold
Creature Caretaker - Slave takes care of a selected Creature room, increasing it's maximum Health and reducing it's Upkeep Cost
Trap Maintenance - Slave takes care of selected Trap room, increasing it's trapcheck and reducing it's Upkeep Cost
RANK 2 JOBS<div class="titlebox">\
$effect_room.name's Effects
</div>\
<div class="effect-box">\
<<for _i = 0; _i < $effect_room.effects.length; _i++>>\
<div class="effect-cell">\
<<hovertip "<<-$effect_room.effects[_i].tooltip>>">>\
<div class="effect-cell-icon">\
$effect_room.effects[_i].icon
</div>\
<div class="effect-cell-name">\
$effect_room.effects[_i].name
</div>\
<</hovertip>>\
</div>\
<</for>>\
</div>\
<div class="exit-link-right">\
<span id="back">\
<<if $effect_room.room_type === "Creature">>\
<<button [[Back|Creature Room]]>><<unset $effect_room>><</button>>
<<elseif $effect_room.room_type === "Trap">>\
<<button [[Back|Trap Room]]>><<unset $effect_room>><</button>>
<</if>>\
</span>\
</div>\<<silently>>\
* Variables *
<<set $newMission_bool to false>>
* Display *
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Player's Stats]]>><</button>></span>
</div>\
<div class="titlebox">\
Mission Log
</div>\
<div class="quest-box">\
<div class="quest-cell">\
<div class="quest-picbox">\
[img[images/mistress/face.jpg]]
</div>\
<div class="quest-namebox">\
Goddess
</div>\
<div class="quest-textbox">\
<<if $missionLog.goddess.unlocked === false>>\
<<- setup.goddessMisLine[$missionLog.goddess.num].unlock_description>>
<<elseif $missionLog.goddess.completed === true>>\
<<- setup.goddessMisLine[$missionLog.goddess.num].complete_description>>
<<elseif $dungeon_rank < setup.goddessMisLine[$missionLog.goddess.num].rank>>\
Reach Dungeon Rank <<- setup.goddessMisLine[$missionLog.goddess.num].rank>> for her next Mission.
<<elseif $missionLog.goddess.started === false>>\
I heard she was looking for me.
<<elseif $missionLog.goddess.started === true>>\
<<- setup.goddessMisLine[$missionLog.goddess.num].description>>
<</if>>\
</div>\
</div>\
<div class="quest-cell">\
<<if $missionLog.anna.num === "">>\
<div class="quest-picbox">\
[img[images/misc/unknown.png]]
</div>\
<div class="quest-namebox">\
Unknown
</div>\
<div class="quest-textbox">\
I first need to discover who they are.
</div>\
<<else>>\
<div class="quest-picbox">\
[img[images/town/anna/face_0.jpg]]
</div>\
<div class="quest-namebox">\
Anna
</div>\
<div class="quest-textbox">\
<<if $missionLog.anna.unlocked === false>>\
<<- setup.annaMisLine[$missionLog.anna.num].unlock_description>>
<<elseif $missionLog.anna.completed === true>>\
<<- setup.annaMisLine[$missionLog.anna.num].complete_description>>
<<elseif $dungeon_rank < setup.annaMisLine[$missionLog.anna.num].rank>>\
Reach Dungeon Rank <<- setup.annaMisLine[$missionLog.anna.num].rank>> for her next Quest.
<<elseif $missionLog.anna.started === false>>\
I heard she was looking for me.
<<elseif $missionLog.anna.started === true>>\
<<- setup.annaMisLine[$missionLog.anna.num].description>>
<</if>>\
</div>\
<</if>>\
</div>\
<div class="quest-cell">\
<<if $missionLog.sara.num === "">>\
<div class="quest-picbox">\
[img[images/misc/unknown.png]]
</div>\
<div class="quest-namebox">\
Unknown
</div>\
<div class="quest-textbox">\
I first need to discover who they are.
</div>\
<<else>>\
<div class="quest-picbox">\
[img[images/town/sara/face_0.jpg]]
</div>\
<div class="quest-namebox">\
Sara
</div>\
<div class="quest-textbox">\
<<if $missionLog.sara.unlocked === false>>\
<<- setup.saraMisLine[$missionLog.sara.num].unlock_description>>
<<elseif $missionLog.sara.completed === true>>\
<<- setup.saraMisLine[$missionLog.sara.num].complete_description>>
<<elseif $dungeon_rank < setup.saraMisLine[$missionLog.sara.num].rank>>\
Reach Dungeon Rank <<- setup.saraMisLine[$missionLog.sara.num].rank>> for her next Quest.
<<elseif $missionLog.sara.started === false>>\
I heard she was looking for me.
<<elseif $missionLog.sara.started === true>>\
<<- setup.saraMisLine[$missionLog.sara.num].description>>
<</if>>\
</div>\
<</if>>\
</div>\
<div class="quest-cell">\
<<if $missionLog.patricia.num === "">>\
<div class="quest-picbox">\
[img[images/misc/unknown.png]]
</div>\
<div class="quest-namebox">\
Unknown
</div>\
<div class="quest-textbox">\
I first need to discover who they are.
</div>\
<<else>>\
<div class="quest-picbox">\
[img[images/town/patricia/face_0.jpg]]
</div>\
<div class="quest-namebox">\
Patricia
</div>\
<div class="quest-textbox">\
<<if $missionLog.patricia.unlocked === false>>\
<<- setup.patriciaMisLine[$missionLog.patricia.num].unlock_description>>
<<elseif $missionLog.patricia.completed === true>>\
<<- setup.patriciaMisLine[$missionLog.patricia.num].complete_description>>
<<elseif $dungeon_rank < setup.patriciaMisLine[$missionLog.patricia.num].rank>>\
Reach Dungeon Rank <<- setup.patriciaMisLine[$missionLog.patricia.num].rank>> for her next Quest.
<<elseif $missionLog.patricia.started === false>>\
I heard she was looking for me.
<<elseif $missionLog.patricia.started === true>>\
<<- setup.patriciaMisLine[$missionLog.patricia.num].description>>
<</if>>\
</div>\
<</if>>\
</div>\
<div class="quest-cell">\
<<if $missionLog.mallory.num === "">>\
<div class="quest-picbox">\
[img[images/misc/unknown.png]]
</div>\
<div class="quest-namebox">\
Unknown
</div>\
<div class="quest-textbox">\
I first need to discover who they are.
</div>\
<<else>>\
<div class="quest-picbox">\
[img[images/town/mallory/face_0.jpg]]
</div>\
<div class="quest-namebox">\
Mallory
</div>\
<div class="quest-textbox">\
<<if $missionLog.mallory.unlocked === false>>\
<<- setup.malloryMisLine[$missionLog.mallory.num].unlock_description>>
<<elseif $missionLog.mallory.completed === true>>\
<<- setup.malloryMisLine[$missionLog.mallory.num].complete_description>>
<<elseif $dungeon_rank < setup.malloryMisLine[$missionLog.mallory.num].rank>>\
Reach Dungeon Rank <<- setup.malloryMisLine[$missionLog.mallory.num].rank>> for her next Quest.
<<elseif $missionLog.mallory.started === false>>\
I heard she was looking for me.
<<elseif $missionLog.mallory.started === true>>\
<<- setup.malloryMisLine[$missionLog.mallory.num].description>>
<</if>>\
</div>\
<</if>>\
</div>\
<div class="quest-cell">\
<<if $missionLog.sylvia.num === "">>\
<div class="quest-picbox">\
[img[images/misc/unknown.png]]
</div>\
<div class="quest-namebox">\
Unknown
</div>\
<div class="quest-textbox">\
I first need to discover who they are.
</div>\
<<else>>\
<div class="quest-picbox">\
[img[images/town/sylvia/face_0.jpg]]
</div>\
<div class="quest-namebox">\
Sylvia
</div>\
<div class="quest-textbox">\
<<if $missionLog.sylvia.unlocked === false>>\
<<- setup.sylviaMisLine[$missionLog.sylvia.num].unlock_description>>
<<elseif $missionLog.sylvia.completed === true>>\
<<- setup.sylviaMisLine[$missionLog.sylvia.num].complete_description>>
<<elseif $dungeon_rank < setup.sylviaMisLine[$missionLog.sylvia.num].rank>>\
Reach Dungeon Rank <<- setup.sylviaMisLine[$missionLog.sylvia.num].rank>> for her next Quest.
<<elseif $missionLog.sylvia.started === false>>\
I heard she was looking for me.
<<elseif $missionLog.sylvia.started === true>>\
<<- setup.sylviaMisLine[$missionLog.sylvia.num].description>>
<</if>>\
</div>\
<</if>>\
</div>\
</div>\
</div>\<<silently>>\
* Variables *
<<set $slave_job_gold to 0>> amount of gold earned from slave's jobs tonight
<<set $slave_job_rep to 0>> amount of rep earned from slave's jobs tonight
<<set $slave_job_treasure to 0>> number of treasures earned from slave's jobs tonight
<<set $slave_quest_gold to 0>> amount of gold earned from slave's quests tonight
<<set $slave_quest_rep to 0>> amount of reputation earned from slave's quests tonight
<<set $slave_quest_treasure to 0>> number of treasures earned from slave's quests tonight
<<set $slave_quest_count to 0>> number of quests completed tonight
<<set $slave_job_count to 0>> number of jobs done tonight
<<set $slave_class_count to 0>> number of classes completed tonight
<<set $slave_class_failed to 0>> number of classes failed tonight
<<set $slave_working_count to 0>> total number of slaves doing any jobs, quests, classes, or training tonight
<<set $slave_nowork_count to 0>> total number of slaves not working any jobs, quests, classes or training tonight
* Slave Quest & Class *
<<for _i = 0; _i < $slave_room_list.length; _i++>>
<<if $slave_room_list[_i].room_type === "Slave">>
<<if $slave_room_list[_i].quest_cd > 0>>
<<set $slave_working_count++>>
<<set $slave_room_list[_i].quest_cd-->>
<<if $slave_room_list[_i].quest_cd <= 0 && $slave_room_list[_i].quest.type === "Basic">>
<<BasicQuest $slave_room_list[_i] $slave_room_list[_i].quest>>
<<elseif $slave_room_list[_i].quest_cd <= 0 && $slave_room_list[_i].quest.type === "Special">>
SPECIAL QUEST
<<else>>
<<set _report to {
type: "Quest",
status: "Incomplete"
}>>
<<set $slave_room_list[_i].report to _report>>
<</if>>
<<elseif $slave_room_list[_i].class_cd > 0>>
<<set $slave_working_count++>>
<<set $slave_room_list[_i].class_cd-->>
<<if $slave_room_list[_i].class_cd <= 0 && $slave_room_list[_i].class.type === "Basic">>
<<BasicClass $slave_room_list[_i] $slave_room_list[_i].class>>
<<elseif $slave_room_list[_i].class_cd <= 0 && $slave_room_list[_i].class.type === "Special">>
SPECIAL CLASS
<<else>>
<<set _report to {
type: "Class",
status: "Incomplete"
}>>
<<set $slave_room_list[_i].report to _report>>
<</if>>
<<elseif $slave_room_list[_i].injured === true>>
<<set $slave_nowork_count++>>
<<set _report to {
type: "Injured"
}>>
<<set $slave_room_list[_i].report to _report>>
<<elseif $slave_room_list[_i].disobedient === true>>
<<set $slave_nowork_count++>>
<<set _report to {
type: "Disobedient"
}>>
<<set $slave_room_list[_i].report to _report>>
<<elseif $slave_room_list[_i].job === "">>
<<set $slave_nowork_count++>>
<<set _report to {
type: "Nothing",
motherly: "",
motherly_heal: ""
}>>
<<set $slave_room_list[_i].report to _report>>
<</if>>
<</if>>
<</for>>
* Set Slaves Job List *
<<set $cur_slave_jobs to []>>
<<for _i = 0; _i < $slave_room_list.length; _i++>>
CHECK IF ROOM HAS SLAVE AND SLAVE HAS A JOB
<<if $slave_room_list[_i].room_type === "Slave">>
<<if $slave_room_list[_i].job != "">>
<<set $slave_working_count++>>
<<set $slave_job_count++>>
<<set $cur_slave_jobs.push($slave_room_list[_i].job)>>
<</if>>
<</if>>
<</for>>
* Display *
<</silently>>\
<div id="section">\
<div class="titlebox">\
Slave Report
</div>\
<div class="cardholder-scout">\
<div class="textbox-scout">\
<<if $cur_slave_jobs.length === 0>>\
You don't have any Slaves working today.
<<else>>\
PLACEHOLDER SLAVES WORKING
$cur_slave_jobs.length JOBS TODAY
<</if>>\
</div>\
</div>\
</div>\
<<silently>>\
* SET LINK *
<<if $cur_slave_jobs.length > 0>>
<<set $cur_job to $cur_slave_jobs.pluck()>>
<<set $link to $cur_job.passage>>
<<else>>
<<set $link to "Scouting Report">>
<<unset $cur_job>>
<</if>>
<</silently>>\
<div class="exit-link-right">\
<<link [[Continue|$link]]>><<unset $link>><</link>>
</div>\<<silently>>\
* Variables *
* Set Spell List *
<<if $spell_type === "Infliction">>
<<set _spell_list to $infliction_spell_sale_list>>
<<elseif $spell_type === "Manipulation">>
<<set _spell_list to $manipulation_spell_sale_list>>
<<elseif $spell_type === "Supportive">>
<<set _spell_list to $supportive_spell_sale_list>>
<<elseif $spell_type === "Summoning">>
<<set _spell_list to $summoning_spell_sale_list>>
<</if>>
<<set _spell_list.sort(function (a, b) { return a.order_num - b.order_num; });>>
* Spellbook Page *
<<set _spells_per_page to 9>> the number of spells that can be on each page, starting count from 0
<<if $spellbook_page == null>>
<<set $spellbook_page to 0>>
<</if>>
<<set _start_pos to _spells_per_page * $spellbook_page>> Set where to start the list based on what the page is
<<if _start_pos + _spells_per_page < _spell_list.length>>
<<set _end_pos to _start_pos + _spells_per_page>> Set where to end the list based on what the page is
<<else>>
<<set _end_pos to _spell_list.length>>
<</if>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
<strong>$spell_type Spells</strong>
</div>\
<div class="buttonbox-spellbook">\
</div>\
<div class="container-spellbook">\
<<for _i = _start_pos; _i < _end_pos; _i++>>\
<<set _hotKey to (_i % 9) + 1>>\
<<set _shiftKey to "shift"+_hotKey>>\
<div class="cellholder-spellbook">\
<div class="cells-spellbook">\
<div class="cell-levelreq-spellbook">\
</div>\
<div class="cell-name-spellbook">\
_spell_list[_i].name
</div>\
<div class="cell-cost-spellbook">\
<span style="color:skyblue">Mana: _spell_list[_i].mana</span>
</div>\
<div class="cell-description-spellbook">\
_spell_list[_i].tooltip
</div>\
<div class="cell-link-spellbook">\
<<silently>>\
* Find Spell Price *
<<set _price to _spell_list[_i].cost>>
<</silently>>\
<<if $pc_gold < _price>>\
<div class="offbutton">\
<<hovertip "Requires more Gold">><<button "_price Gold">><</button>><</hovertip>> \
</div>\
<<else>>\
<<capture _i, _price, _hotKey>>\
<span @id="_hotKey"><<button "_price Gold ^^_hotKey^^" "Arcane Emporium">>\
<<silently>>\
SUBTRACT GOLD SPENT
<<set $pc_gold -= _price>>
ADD TOTAL GOLD SPENT
<<set $pc_total_gold_spent += _price>>
ADD NEW SPELL TO SPELLBOOK, REMOVE OLD ONE FROM LIST
<<if $spell_type === "Infliction">>
<<set $pc_spellbook.push($infliction_spell_sale_list[_i])>>
<<set _delete to $infliction_spell_sale_list.deleteAt(_i)>>
<<elseif $spell_type === "Manipulation">>
<<set $pc_spellbook.push($manipulation_spell_sale_list[_i])>>
<<set _delete to $manipulation_spell_sale_list.deleteAt(_i)>>
<<elseif $spell_type === "Supportive">>
<<set $pc_spellbook.push($supportive_spell_sale_list[_i])>>
<<set _delete to $supportive_spell_sale_list.deleteAt(_i)>>
<<elseif $spell_type === "Summoning">>
<<set $pc_spellbook.push($summoning_spell_sale_list[_i])>>
<<set _delete to $summoning_spell_sale_list.deleteAt(_i)>>
<</if>>
SET TEXT BOOL
<<set $bought_spell_bool to true>>
UNSET SPELL TYPE
<<unset $spell_type>>
<</silently>>\
<</button>></span> \
<</capture>>\
<</if>>\
<<if _spell_list[_i].type === "Summoning">>\
<<capture _i, _shiftKey, _hotKey>>\
<span @id="_shiftKey"><<button "[img[images/icons/desc_icon.png]]^^[_hotKey]^^" "Summon Creature Stats">><<set $summon_spell to _spell_list[_i]>><</button>></span>
<</capture>>\
<</if>>\
</div>\
</div>\
</div>\
<</for>>\
</div>\
<div class="buttonbox-spellbook">\
<div class="pagebutton-spellbook">\
<<if $spellbook_page > 0>>\
<span id="left"><<button [[Previous Page|Buy Spell]]>><<set $spellbook_page-->><</button>></span>
<<else>>\
<div class="offbutton">\
<<button "Previous Page">><</button>>
</div>\
<</if>>\
</div>\
<div class="pagebutton-spellbook">\
<<if _spell_list.length > _end_pos>>\
<span id="right"><<button [[Next Page|Buy Spell]]>><<set $spellbook_page++>><</button>></span>
<<else>>\
<div class="offbutton">\
<<button "Next Page">><</button>>
</div>\
<</if>>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Arcane Emporium]]>><<unset $spell_type, $spellbook_page>><</button>></span> <span id="q"><<button "<u>Q</u>uick Menu" "Quick Menu">><<unset $spell_type, $spellbook_page>><</button>></span>\
</div>\
</div>\<<silently>>\
* Variables *
* Set Player Blessing List *
<<set _pcBlessingList to setup.allBlessingList.starting.concat(setup.allBlessingList.gift, setup.allBlessingList.sorcery, setup.allBlessingList.mastery, setup.allBlessingList.power, setup.allBlessingList.endurance, setup.allBlessingList.ingenuity, setup.allBlessingList.devotion, setup.allBlessingList.charm, setup.allBlessingList.technique, setup.allBlessingList.special)>>
CLEAN UP LIST
<<for _z = 0; _z < _pcBlessingList.length; _z++>>
<<if !$pc_blessing_list.includes(_pcBlessingList[_z].name)>>
DOES NOT OWN _pcBlessingList[_z].name
<<set _remove to _pcBlessingList.deleteAt(_z)>>
<<set _z-->>
<<continue>>
<</if>>
<<if !$filter_blessing.includesAny(_pcBlessingList[_z].type) && $filter_blessing.length > 0>>
FILTERED _goddess_blessing_list[_z].name OUT
<<set _remove to _pcBlessingList.deleteAt(_z)>>
<<set _z-->>
<<continue>>
<</if>>
ADDED _pcBlessingList[_z].name TO LIST
<</for>>
* Blessing Page *
<<set _spells_per_page to 9>> the number of slaves that can be on each page, starting count from 0
<<if $blessing_page == null>>
<<set $blessing_page to 0>>
<</if>>
<<set _start_pos to _spells_per_page * $blessing_page>> Set where to start the list based on what the page is
<<if _start_pos + _spells_per_page < _pcBlessingList.length>>
<<set _end_pos to _start_pos + _spells_per_page>> Set where to end the list based on what the page is
<<else>>
<<set _end_pos to _pcBlessingList.length>>
<</if>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
<strong>$pc_name's Blessings</strong>
</div>\
<div class="buttonbox-spellbook">\
<div class="buttonholder-spellbook">\
<<if $filter_blessing.includes("Player")>>\
<span id="p"><<button "<u>P</u>layer" "Player Blessing List">><<set _clear to $filter_blessing.delete("Player")>><<set $blessing_page to 0>><</button>></span>
<<else>>\
<div class="transparent-button">\
<span id="p"><<button "<u>P</u>layer" "Player Blessing List">>\
<<silently>>\
<<set $filter_blessing.push("Player")>>
<<if $filter_blessing.length >= 3>>
<<set $filter_blessing to []>>
<</if>>
<<set $blessing_page to 0>>
<</silently>>\
<</button>></span>
</div>\
<</if>>\
</div>\
<div class="buttonholder-spellbook">\
<<if $filter_blessing.includes("Dungeon")>>\
<span id="d"><<button "<u>D</u>ungeon" "Player Blessing List">><<set _clear to $filter_blessing.delete("Dungeon")>><<set $blessing_page to 0>><</button>></span>
<<else>>\
<div class="transparent-button">\
<span id="d"><<button "<u>D</u>ungeon" "Player Blessing List">>\
<<silently>>\
<<set $filter_blessing.push("Dungeon")>>
<<if $filter_blessing.length >= 3>>
<<set $filter_blessing to []>>
<</if>>
<<set $blessing_page to 0>>
<</silently>>\
<</button>></span>
</div>\
<</if>>\
</div>\
<div class="buttonholder-spellbook">\
<<if $filter_blessing.includes("Slave")>>\
<span id="s"><<button "<u>S</u>lave" "Player Blessing List">><<set _clear to $filter_blessing.delete("Slave")>><<set $blessing_page to 0>><</button>></span>
<<else>>\
<div class="transparent-button">\
<span id="s"><<button "<u>S</u>lave" "Player Blessing List">>\
<<silently>>\
<<set $filter_blessing.push("Slave")>>
<<if $filter_blessing.length >= 3>>
<<set $filter_blessing to []>>
<</if>>
<<set $blessing_page to 0>>
<</silently>>\
<</button>></span>
</div>\
<</if>>\
</div>\
</div>\
<div class="container-spellbook">\
<<for _i = _start_pos; _i < _end_pos; _i++>>\
<div class="cellholder-spellbook">\
<div class="cells-blessing">\
<<if _pcBlessingList[_i].type.includes("Mythical")>>\
<div class="cell-name-blessing-gold">\
_pcBlessingList[_i].name
</div>\
<<elseif _pcBlessingList[_i].type.includes("Special")>>\
<div class="cell-name-blessing-teal">\
_pcBlessingList[_i].name
</div>\
<<else>>\
<div class="cell-name-blessing">\
_pcBlessingList[_i].name
</div>\
<</if>>\
<div class="cell-title-blessing">\
Blessing Tree: _pcBlessingList[_i].tree
</div>\
<div class="cell-description-blessing">\
_pcBlessingList[_i].tooltip
</div>\
</div>\
</div>\
<</for>>\
</div>\
<div class="buttonbox-spellbook">\
<div class="pagebutton-spellbook">\
<<if $blessing_page > 0>>\
<span id="left"><<button [[Previous Page|Player Blessing List]]>><<set $blessing_page-->><</button>></span>
<<else>>\
<div class="offbutton">\
<<button "Previous Page">><</button>>
</div>\
<</if>>\
</div>\
<div class="pagebutton-spellbook">\
<<if _pcBlessingList.length > _end_pos>>\
<span id="right"><<button [[Next Page|Player Blessing List]]>><<set $blessing_page++>><</button>></span>
<<else>>\
<div class="offbutton">\
<<button "Next Page">><</button>>
</div>\
<</if>>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button[[Back|Player's Stats]]>><<unset $filter_blessing, $blessing_page>><</button>></span>
</div>\
</div>\<<widget "PCLevelUp">>
_args[0] is exp_gained
<<set _levelup_trigger to false>> tracks if player gained a level
<<set _times_leveledup to 0>> tracks how many levels the player gained
* Blessings *
DIFFICULTY MOD
<<set _args[0] to Math.round(_args[0] * $diffEXPMod)>>
ADD EXP TO PLAYER
<<if $pc_level < $pc_levelcap>>
<<set $pc_exp += _args[0]>>
<<set _exp_gained to _args[0]>>
EXP: $pc_exp / $pc_nextlevel_exp
LEVEL UP CHECK
<<if $pc_exp >= $pc_nextlevel_exp>>
<<for _i = 0; _i < 1; _i++>>
SET PLAYER EXP TO LEFTOVER EXP
<<set _levelup_trigger to true>>
<<set _times_leveledup++>>
<<set $pc_level++>>
<<set $pc_lust++>>
<<set $pc_lust_gained++>>
<<if $pc_level < $pc_levelcap && $pc_level < $pc_levelcap>>
<<set $pc_nextlevel_exp += Math.round((($pc_level * $pc_level) + setup.pc_nextlevel_constant) * setup.pc_nextlevel_mod)>>
<<if $pc_exp > $pc_nextlevel_exp>>
<<set _i-->>
<</if>>
<<elseif $pc_level === $pc_levelcap>>
<<set $pc_exp to clone($pc_nextlevel_exp)>>
<<set $pc_nextlevel_exp += Math.round((($pc_level * $pc_level) + setup.pc_nextlevel_constant) * setup.pc_nextlevel_mod)>>
<</if>>
EXP: $pc_exp / $pc_nextlevel_exp
<</for>>
<</if>>
<<else>>
<<set _exp_gained to 0>>
<</if>>
<</widget>><<silently>>\
* Variables *
<<set _list to ["Handjob", "Blowjob", "Titjob", "Footjob", "Missionary", "Cowgirl", "Doggy", "Anal"]>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Prostitution Services
</div>\
<div class="slaveholder-assignjob">\
<div class="sidebutton-assignjob">\
</div>\
<div class="slaveinfo-assignjob">\
<div class="picbox-slaveinfo-assignjob">\
$cur_slave.pic
</div>\
<div class="textholder-slaveinfo-assignjob">\
<div class="namebox-slaveinfo-assignjob">\
$cur_slave.name
</div>\
<div class="skillholder-slaveinfo-assignjob">\
<div class="skillbox-slaveinfo-assignjob">\
<<hovertip "EXP: $cur_slave.handjob_tracker / $cur_slave.handjob_tracker_limit<br>Max: $cur_slave.handjob_limit">>Handjob
$cur_slave.handjob<</hovertip>>
</div>\
<div class="skillbox-slaveinfo-assignjob">\
<<hovertip "EXP: $cur_slave.blowjob_tracker / $cur_slave.blowjob_tracker_limit<br>Max: $cur_slave.blowjob_limit">>Blowjob
$cur_slave.blowjob<</hovertip>>
</div>\
<div class="skillbox-slaveinfo-assignjob">\
<<hovertip "EXP: $cur_slave.titjob_tracker / $cur_slave.titjob_tracker_limit<br>Max: $cur_slave.titjob_limit">>Titjob
$cur_slave.titjob<</hovertip>>
</div>\
<div class="skillbox-slaveinfo-assignjob">\
<<hovertip "EXP: $cur_slave.footjob_tracker / $cur_slave.footjob_tracker_limit<br>Max: $cur_slave.footjob_limit">>Footjob
$cur_slave.footjob<</hovertip>>
</div>\
<div class="skillbox-slaveinfo-assignjob">\
<<hovertip "EXP: $cur_slave.missionary_tracker / $cur_slave.missionary_tracker_limit<br>Max: $cur_slave.missionary_limit">>Missionary
$cur_slave.missionary<</hovertip>>
</div>\
<div class="skillbox-slaveinfo-assignjob">\
<<hovertip "EXP: $cur_slave.cowgirl_tracker / $cur_slave.cowgirl_tracker_limit<br>Max: $cur_slave.cowgirl_limit">>Cowgirl
$cur_slave.cowgirl<</hovertip>>
</div>\
<div class="skillbox-slaveinfo-assignjob">\
<<hovertip "EXP: $cur_slave.doggy_tracker / $cur_slave.doggy_tracker_limit<br>Max: $cur_slave.doggy_limit">>Doggy
$cur_slave.doggy<</hovertip>>
</div>\
<div class="skillbox-slaveinfo-assignjob">\
<<hovertip "EXP: $cur_slave.anal_tracker / $cur_slave.anal_tracker_limit<br>Max: $cur_slave.anal_limit">>Anal
$cur_slave.anal<</hovertip>>
</div>\
</div>\
</div>\
</div>\
<div class="sidebutton">\
</div>\
</div>\
<div class="jobinfo-assignjob">\
<div class="infotext-assignjob">\
Choose any number of Sex Skills your Slave will be willing to perform
<u>Current Selection</u>
<span id="sex_list">None</span>
</div>\
<<for _i = 0; _i < _list.length; _i++>>\
<<set _hotKey to _i + 1>>\
<div class="servicebox-assignjob">\
<<capture _i, _hotKey>>\
<span @id="_hotKey"><<button "_list[_i] ^^_hotKey^^">>\
<<silently>>\
<<if $cur_slave[$job].sex_list.includes(_list[_i])>>
<<set $cur_slave[$job].sex_list.delete(_list[_i])>>
<<else>>
<<set $cur_slave[$job].sex_list.push(_list[_i])>>
<</if>>
<<if $cur_slave[$job].sex_list.length > 0>>
<<replace '#sex_list' t8n>>$cur_slave[$job].sex_list<</replace>>
<<replace '#confirm'>><span id="forward"><<button [[Confirm|Slave Room]]>>\
<<silently>>\
CONVERT TO LOWERCASE
<<for _z = 0; _z < $cur_slave[$job].sex_list.length; _z++>>
<<set $cur_slave[$job].sex_list[_z] to $cur_slave[$job].sex_list[_z].toLowerCase()>>
<</for>>
UPDATE SLAVE
<<set $slave_room_list[$cur_slave_num] to clone($cur_slave)>>
<<unset $job, $job_page, $filter_jobs>>
<</silently>>\
<</button>></span><</replace>>\
<<else>>
<<replace '#sex_list' t8n>>None<</replace>>
<<replace '#confirm'>><div class="offbutton"><<button "Confirm">><</button>></div><</replace>>
<</if>>\
<</silently>>\
<</button>></span>\
<</capture>>\
</div>\
<</for>>\
</div>\
<div class="buttons-assignjob">\
<div class="box-buttons-assignjob">\
<span id="back"><<button [[Back|Assign Slave Job]]>><<set $cur_slave[$job] to "">><</button>></span>
</div>\
<div class="box-buttons-assignjob">\
<div id="confirm">\
<div class="offbutton">\
<<button "Confirm">><</button>>
</div>\
</div>\
</div>\
</div>\
</div>\ OBEDIENCE CHECK
<<widget "SlaveObedienceCheck">>
_args[0].name is slave and _args[1] is the base obedience check from job, discipling, or training
Obedience check is a pass or fail check that uses the slave's obedience and stress. Failing the check results earning less rewards
<<set _widget_mod to 3>> mult this by the slaves obedience stat and add to base
<<set _widget_love_mod to 1.5>> mult this by the slaves love stat and add to base for blessing
OBEDIENCE PERCENT
<<set _obedience_percent to Math.round(_args[1] + (_args[0].obedience * _widget_mod))>>
ENDEARING PLEDGE
<<set _blessing to $pc_blessing_list.delete("Endearing Pledge I", "Endearing Pledge II")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.charm.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.charm[_z].name)>>
<<set _info to clone(setup.allBlessingList.charm[_z])>>
INCREASE PERCENT
<<set _obedience_percent += Math.round(_args[0].love * _info.float * _widget_love_mod)>>
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
STRESS MOD
<<if _args[0].cur_stress <= 20>>
<<set _obedience_percent += 30>>
<<elseif _args[0].cur_stress <= 40>>
<<set _obedience_percent += 10>>
<<elseif _args[0].cur_stress <= 60>>
<<set _obedience_percent += 0>>
<<elseif _args[0].cur_stress <= 80>>
<<set _obedience_percent -= 10>>
<<else>>
<<set _obedience_percent -= 30>>
<</if>>
RNG MOD
<<set _d6 to 0>>
<<set _d6 += random(1, 6)>> Rolled _d6
<<set _d6 += random(1, 6)>> Total _d6
<<set _obedience_percent += _d6>>
COLLECTED TRAIT
<<if _args[0].trait_names.includes("Collected") && _args[0].cur_stress <= setup.collected.int>>
<<set _obedience_percent += Math.round(_obedience_percent * setup.collected.float)>>
<</if>>
STOIC TRAIT
<<if _args[0].trait_names.includes("Stoic") && _args[0].cur_stress >= setup.stoic.int>>
<<set _obedience_percent += Math.round(_obedience_percent * setup.stoic.float)>>
<</if>>
EMOTINOAL TRAIT
<<if _args[0].trait_names.includes("Emotional") && _args[0].cur_stress >= setup.emotional.int>>
<<set _obedience_percent -= Math.round(_obedience_percent * setup.emotional.float)>>
<</if>>
FINAL OBEDIENCE PERCENT: _obedience_percent
INFLUENCING DEMEANOR
<<if $pc_blessing_list.includes("Influencing Demeanor")>>
STARTING AMOUNT
<<set _amount to 0>>
ADD AMOUNT FROM OTHER SLAVES
<<for _z = 0; _z < $slave_room_list.length; _z++>>
<<if $slave_room_list[_z].room_type === "Slave">>
<<if $slave_room_list[_z].obedience > setup.blessing_09_11.float.obedience_req && $slave_room_list[_z].index != _args[0].index>>
<<set _amount += setup.blessing_09_11.float>>
<<if _amount >= setup.blessing_09_11.max_float>>
<<break>>
<</if>>
<</if>>
<</if>>
<</for>>
INCREASE PERCENT
<<set _obedience_percent += Math.round(_obedience_percent * _amount)>>
<</if>>
RNG CHECK
<<set _rng to random(1, 100)>>
<<if _obedience_percent >= _rng || _args[0].scolded_bool === true>>
PASSED OBEDIENCE CHECK
<<set _obedience_result to 1>>
<<else>>
FAILED OBEDIENCE CHECK
<<set _obedience_result to 0>>
<</if>>
<</widget>>
VIRGINITY CHECK
<<widget "SlaveVirginCheck">>
args[0] is slave and args[1] is sex type
<<if _args[0].trait_names.includes(setup.virginity.name)>>
<<if setup.breaks_virginity.includes(_args[1])>>
REMOVE VIRGINITY TRAIT
<<for _i = 0; _i < _args[0].traits.length; _i++>>
<<if _args[0].traits[_i].name === setup.virginity.name>>
<<set _remove to _args[0].traits.deleteAt(_i)>>
<<set _remove to _args[0].trait_names.delete(setup.virginity.name)>>
<<break>>
<</if>>
<</for>>
NEW TRAIT GAINED
LOVER CHECK
<<if _args[0].love >= setup.lover.love_req && _args[2] != "Prostitution">>
ADD LOVER TRAIT
<<set _args[0].traits.unshift(setup.lover)>>
<<set _args[0].trait_names.unshift(setup.lover.name)>>
<<set _slave_triggers.trait.lover_trig to true>>
CLINGY CHECK
<<elseif _args[0].love >= setup.clingy.love_req && _args[2] != "Prostitution">>
ADD CLINGY TRAIT
<<set _args[0].traits.unshift(setup.clingy)>>
<<set _args[0].trait_names.unshift(setup.clingy.name)>>
<<set _slave_triggers.trait.clingy_trig to true>>
REMOVE HER FROM NON SERVICE JOBS
<<if _args[0].job.type != "Service">>
<<set _args[0].job to "">>
<<set _args[0].creature_index to "">>
<<set _args[0].trap_index to "">>
<</if>>
SLUTTY CHECK
<<elseif _args[0].libido >= setup.slutty.libido_req && _args[2] === "Prostitution">>
ADD SLUTTY TRAIT
<<set _args[0].traits.unshift(setup.slutty)>>
<<set _args[0].trait_names.unshift(setup.slutty.name)>>
<<set _slave_triggers.trait.slutty_trig to true>>
TRAUMATIZED CHECK
<<elseif _args[2] === "Prostitution">>
HOLD NEG TRAIT
<<set _pop to _args[0].traits.pop()>>
<<set _pop_name to _args[0].trait_names.pop()>>
ADD TRAUMATIZED TRAIT
<<set _args[0].traits.push(setup.traumatized)>>
<<set _args[0].trait_names.push(setup.traumatized.name)>>
<<set _slave_triggers.trait.traumatized_trig to true>>
REMOVE HER FROM PROSTITUTION JOB
<<if _args[0].job.type === "Prostitution">>
<<set _args[0].job to "">>
<</if>>
ADD NEG TRAIT BACK
<<set _args[0].traits.push(_pop)>>
<<set _args[0].trait_names.push(_pop_name)>>
LOATHING CHECK
<<else>>
HOLD NEG TRAIT
<<set _pop to _args[0].traits.pop()>>
<<set _pop_name to _args[0].trait_names.pop()>>
ADD LOATHING TRAIT
<<set _args[0].traits.push(setup.loathing)>>
<<set _args[0].trait_names.push(setup.loathing.name)>>
<<set _slave_triggers.trait.loathing_trig to true>>
REMOVE HER FROM SERVICE JOB
<<if _args[0].job.type === "Service">>
<<set _args[0].job to "">>
<</if>>
ADD NEG TRAIT BACK
<<set _args[0].traits.push(_pop)>>
<<set _args[0].trait_names.push(_pop_name)>>
<</if>>
<</if>>
<</if>>
<</widget>>
INJURY CHECK
<<widget "SlaveInjuryCheck">>
_args[0].name is slave, _args[1] is rate of injury, _args[2].name is job or room
<<set _strengthInjuryMod to 2.5>>
SET RNG
<<set _rng to random(1, 100)>>
STRENGTH MOD
<<set _args[1] -= Math.trunc((_args[0].strength * _strengthInjuryMod) * setup.obedienceCheckOutcome[_obedience_result])>>
SOFT TRAIT
<<if _args[0].trait_names.includes("Soft")>>
<<set _args[1] += Math.round(_args[1] * setup.soft.float)>>
<</if>>
INJURY RATE IS _args[1] against _rng RNG
<<if _args[1] >= _rng>>
STURDY TRAIT
<<if _args[0].trait_names.includes("Sturdy")>>
<<set _rng to random(1, 100)>>
<<set _percent to clone(setup.sturdy.percent)>>
LUCKY
<<if _args[0].trait_names.includes("Lucky")>>
<<set _percent += (Math.round(_percent * setup.lucky.float)).clamp(1, 1000000)>>
<</if>>
UNLUCKY
<<if args[0].trait_names.includes("Unlucky")>>
<<set _percent -= (Math.round(_percent * setup.unlucky.float)).clamp(1, 1000000)>>
<</if>>
<<if _rng <= _percent>>
AVOID INJURY
<<set _slave_triggers.trait.sturdy_trig to true>>
<</if>>
<</if>>
<<if _slave_triggers.trait.sturdy_trig === false>>
INJURED
<<set _args[0].injured to true>>
<<set _args[0].injured_cd to random(_args[2].min_injury, _args[2].max_injury)>>
<<set _slave_triggers.general.injured_trig to true>>
HARDY TRAIT
<<if _args[0].trait_names.includes("Hardy")>>
<<set _slave_triggers.trait.hardy_trig to true>>
<<set _args[0].injured_cd to setup.hardy.int>>
<</if>>
<</if>>
<<else>>
NOT INJURED
<</if>>
<</widget>>
STRESS CALC
<<widget "SlaveStressCalc">>
_args[0].name is slave, _args[1] stress is _args[2]
<<if _args[2] === "Gained">>
BREEZY TRAIT
<<if _args[0].trait_names.includes("Breezy")>>
Stress is _args[1] before Breezy Trait
<<set _args[1] -= Math.trunc(_args[1] * setup.breezy.float) + 1>>
Stress is _args[1] after Breezy Trait
<</if>>
SCOLDED
<<if _args[0].scolded_bool === true>>
INCREASE STRESS GAINED BY 25% FOR EACH CONSECUTIVE DAY SCOLDED
<<for _z = 0; _z < _args[0].scolded_count; _z++>>
<<set _args[1] += Math.round(_args[1] * 0.25)>>
<</for>>
<</if>>
ADD TO TRACKER
STRESS GAINED: _args[1]
<<set _args[0].cur_stress to Math.clamp(_args[0].cur_stress + _args[1], 0, _args[0].max_stress)>>
<<set _slave_triggers.general.stress_gained to _args[1]>>
CHECK IF DISOBEDIENT TRACKER IS ABOVE LIMIT
<<if _args[0].cur_stress >= _args[0].max_stress>>
<<set _args[0].disobedient to true>>
<<set _slave_triggers.general.disobedient_trig to true>>
<</if>>
STRESS IS AT _args[0].cur_stress OUT OF _args[0].max_stress
<<elseif _args[2] === "Reduced">>
DAYOFF RECOVERS HALF THEIR CURRENT STRESS
<<if _args[0].dayoff_bool === true>>
<<set _args[1] += (Math.round(_args[0].cur_stress * 0.5)).clamp(1, 1000000)>>
<</if>>
RESTRAINED TRAIT
<<if _args[0].trait_names.includes("Restrained") && _args[0].disobedient === true>>
<<set _args[1] += (Math.round(_args[1] * setup.restrained.float)).clamp(1, 1000000)>>
<</if>>
CAREFREE TRAIT
<<if _args[0].trait_names.includes("Carefree")>>
<<set _args[1] += (Math.round(_args[1] * setup.carefree.float)).clamp(1, 1000000)>>
<</if>>
SPIRITUAL TRAIT LAST
<<if _args[0].trait_names.includes("Spiritual") && _args[0].dayoff_bool === true>>
<<set _args[1] += (Math.round(_args[1] * setup.carefree.float)).clamp(1, 1000000)>>
<</if>>
HIGHSTRUNG TRAIT
<<if _args[0].trait_names.includes("High-Strung")>>
<<if _args[0].disobedient === true>>
<<set _args[1] -= Math.trunc(_args[1] * (setup.highstrung.float * setup.highstrung.mult))>>
<<else>>
<<set _args[1] -= Math.trunc(_args[1] * setup.highstrung.float)>>
<</if>>
<</if>>
REDUCE STRESS
STRESS REDUCED: _args[1]
<<set _args[0].cur_stress to Math.clamp(_args[0].cur_stress - _args[1], 0, _args[0].max_stress)>>
<<set _slave_triggers.general.stress_reduced to _args[1]>>
PLAYER REDUCED _args[0].name's STRESS BY _args[1]. IT IS NOW _args[0].cur_stress
REMOVE DISOBEDINCE IF CD IS 0 OR LESS
<<if _args[0].cur_stress <= 0 && _args[0].disobedient === true>>
<<set _args[0].disobedient to false>>
<<set _slave_triggers.general.disobedient_cured to true>>
<</if>>
<</if>>
<</widget>>
<<widget "SlaveIncidentCheck">>
Incident Check determines if a slave working finds herself in a bad situation during a job IE being raped, attacked by creature, caught in trap
_args[0].name is slave, _args[1] is the incident rate, and _args[2].name is job
* Variables *
<<set _intelligenceIndicentMod to 2.5>>
INTELLIGENCE MOD
<<set _args[1] -= Math.trunc((_args[0].intelligence * _intelligenceIndicentMod) * setup.obedienceCheckOutcome[_obedience_result])>>
OTHER INCIDENT MODS
LUCKY
<<if _args[0].trait_names.includes("Lucky")>>
<<set _args[1] -= (Math.round(_args[1] * setup.lucky.float)).clamp(1, 1000000)>>
<</if>>
UNLUCKY
<<if _args[0].trait_names.includes("Unlucky")>>
<<set _args[1] += (Math.round(_args[1] * setup.unlucky.float)).clamp(1, 1000000)>>
<</if>>
INCIDENT RATE: _args[1]
SET RNG
<<set _rng to random(1, 100)>>
INCIDENT CHECK: _args[1] >= _rng
INCIDENT CHECK
<<if _args[1] >= _rng>>
INCIDENT OCCURED
<<set _slave_triggers.general.incident_trig to true>>
<<else>>
NO INCIDENT
<</if>>
<</widget>>
<<widget "RemoveSlaveJob">>
_args[0] is slave index
<<for _z = 0; _z < $cur_slave_jobs.length; _z++>>
<<set _list to []>>
<<if $cur_slave_jobs[_z].slave_index === _args[0]>>
<<set _list.push(clone(_z))>>
<</if>>
<</for>>
DELETE JOBS
<<set _remove to $cur_slave_jobs.deleteAt(_list)>>
<</widget>>
<<widget "CaretakerMods">>
_args[0].name is slave and _args[1] is the starting amount being modified
GODDESS'S DEVOTION
<<set _blessing to $pc_blessing_list.delete("Goddess's Devotion I", "Goddess's Devotion II", "Goddess's Devotion III", "Goddess's Devotion IV", "Goddess's Devotion V")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.devotion.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.devotion[_z].name)>>
<<set _args[1] += (Math.round(_args[1] * setup.allBlessingList.devotion[_z].float)).clamp(1, 1000000)>>
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
GENTLE TRAIT
<<if _args[0].trait_names.includes("Gentle")>>
<<set _args[1] += (Math.round(_args[1] * setup.gentle.float)).clamp(1, 1000000)>>
<</if>>
INCIDENT PENALTY
<<if _slave_triggers.general.incident_trig === true>>
<<set _args[1] -= Math.round(_args[1] * _incident_penalty)>>
<</if>>
STAT TO USE
<<set _newStat to _args[1]>>
<</widget>>
<<widget "MaintenanceMods">>
_args[0].name is slave and _args[1] is the starting amount being modified
GODDESS'S DEVOTION
<<set _blessing to $pc_blessing_list.delete("Goddess's Devotion I", "Goddess's Devotion II", "Goddess's Devotion III", "Goddess's Devotion IV", "Goddess's Devotion V")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.devotion.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.devotion[_z].name)>>
<<set _args[1] += (Math.round(_args[1] * setup.allBlessingList.devotion[_z].float)).clamp(1, 1000000)>>
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
CRAFTY TRAITS
<<if _args[0].trait_names.includes("Crafty")>>
<<set _args[1] += (Math.round(_args[1] * setup.crafty.float)).clamp(1, 1000000)>>
<</if>>
INCIDENT PENALTY
<<if _slave_triggers.general.incident_trig === true>>
<<set _args[1] -= Math.round(_args[1] * _incident_penalty)>>
<</if>>
STAT TO USE
<<set _newStat to _args[1]>>
<</widget>>
<<widget "MorningGratitudeService">>
Assign available slave to service player in the morning
<<set _options to []>>
<<for _z = 0; _z < _args[0].length; _z++>>
<<if _args[0][_z].room_type === "Slave">>
<<if _args[0][_z].quest_cd <= 0 && _args[0][_z].class_cd <= 0 && _args[0][_z].disobedient === false && _args[0][_z].injured === false && !_args[0][_z].trait_names.includes("Loathing") && !_args[0][_z].trait_names.includes("Slutty")>>
<<set _options.push(clone(_z))>>
<</if>>
<</if>>
<</for>>
<<if _options.length > 0>>
<<set _Slavelist to []>>
<<set _total to 0>>
CHECK FOR CERTAIN TRAITS
<<for _z = 0; _z < _options.length; _z++>>
<<set _num to clone(_args[0][_options[_z]].love)>>
<<if _args[0][_options[_z]].trait_names.includes("Lover")>>
ADD BONUS FOR LOVER
<<set _num += 40>>
<</if>>
<<if _args[0][_options[_z]].trait_names.includes("Clingy")>>
ADD BONUS FOR CLINGY
<<set _num += 20>>
<</if>>
<<if _args[0][_options[_z]].trait_names.includes("Supportive")>>
ADD BONUS FOR CLINGY
<<set _num += 10>>
<</if>>
<<if _args[0][_options[_z]].trait_names.includes("Caring")>>
ADD BONUS FOR CARING
<<set _num += 5>>
<</if>>
<<if _args[0][_options[_z]].trait_names.includes("Rude")>>
SUBTRACT BONUS FOR RUDE
<<set _num -= 10>>
<</if>>
SET VAR
<<set _slave to {
name: _args[0][_options[_z]].name,
index: _args[0][_options[_z]].index,
rating: clone(_num)
}>>
<<set _Slavelist.push(_slave)>>
<<set _total += _num>>
<</for>>
ORDER HIGHEST TO LOWEST RATING
<<set _Slavelist.sort(function (a, b) { return b.rating - a.rating; });>>
<<for _z = 0; _z < _Slavelist.length; _z++>>
_z + 1. _Slavelist[_z].name <<- Math.round((_Slavelist[_z].rating / _total) * 100)>>%
<</for>>
<<for _z = 0; _z < _Slavelist.length; _z++>>
<<set _rng to random(1, 100)>>
<<set _percent to Math.round((_Slavelist[_z].rating / _total) * 100)>>
<<if _percent >= _rng>>
<<set _morning_slave to _Slavelist[_z].index>>
<<break>>
<</if>>
<</for>>
<<if !_morning_slave>>
<<set _morning_slave to _Slavelist[0].index>>
<</if>>
<<for _s = 0; _s < _args[0].length; _s++>>
<<if _args[0][_s].room_type === "Slave">>
<<if _args[0][_s].index === _morning_slave>>
MORNING SLAVE IS _args[0][_s].name
SETUP SERVICE JOB
<<set $morning_job to clone(setup.blessing_07_9.job)>>
<<set $morning_job.slave_index to _args[0][_s].index>>
FIND BEST SERVICE SEX
<<set _sex_options to ["blowjob", "footjob", "handjob", "titjob"]>>
<<set _list to []>>
<<set _num to 0>>
<<for _z = 0; _z < _sex_options.length; _z++>>
<<if _args[0][_s][_sex_options[_z]] > _num>>
<<set _list to [_sex_options[_z]]>>
<<elseif _args[0][_s][_sex_options[_z]] === _num>>
<<set _list.push(_sex_options[_z])>>
<</if>>
<</for>>
<<set $morning_job.service_sex to _list.random()>>
UPDATE FAILED, PASSED STRINGS
<<set $morning_job.pass_text to " PASSED">>
<<set $morning_job.fail_text to " FAILED">>
<<break>>
<</if>>
<</if>>
<</for>>
<</if>>
<</widget>>
<<widget "MotherlyJob">>
_args[0].name is Motherly Slave
* Variables *
<<set _stress_float to 0.25>> amount of stress reduced from other slaves from the amount they gained
<<set _stress_cap to 20>> max amount of stress that is reduced from each slave
<<set _gained_float to 0.5>> amount of stress gained by motherly slave from the amount she helped recovered
<<set _injury_int to 1>> number of days she can reduce injury
* Recover other Slaves Stress *
<<for _m = 0; _m < $slave_room_list.length; _m++>>
<<if $slave_room_list[_m].room_type === "Slave">>
<<if $slave_room_list[_m].report.stress_gained > 0 && $slave_room_list[_m].index !== _args[0].index>>
TRIGGER MOTHERLY
<<set _args[0].report.motherly.trig to true>>
SETUP SLAVE
<<SlaveSetup $slave_room_list[_m]>>
INCREASE COUNT
<<set _args[0].report.motherly.slave_count++>>
CALC STRESS AMOUNT REDUCED
<<set _stress_reduced to (Math.round($slave_room_list[_m].report.stress_gained * _stress_float)).clamp(1, _stress_cap)>>
UPDATE MOTHERLY STRESS GAINED
<<set _args[0].report.motherly.stress_gained += Math.round(_stress_reduced * _gained_float)>>
REDUCE STRESS
<<SlaveStressCalc $slave_room_list[_m] _stress_reduced "Reduced">>
UPDATE SLAVE
<<set $slave_room_list[_m].report.end_of_day.stress_reduced += _slave_triggers.general.stress_reduced>>
UPDATE STRESS REDUCED
<<set _args[0].report.motherly.stress_recovered += _slave_triggers.general.stress_reduced>>
<</if>>
<</if>>
<</for>>
* Calc Motherly Stress Gained *
<<if _args[0].report.motherly.stress_gained > 0>>
SETUP SLAVE
<<SlaveSetup _args[0]>>
GAIN STRESS
<<SlaveStressCalc _args[0] _args[0].report.motherly.stress_gained "Gained">>
UPDATE STRESS GAINED
<<set _args[0].report.stress_gained += _slave_triggers.general.stress_gained>>
<</if>>
* Heal Injured Slave *
<<set _options to []>>
<<set _highest_injury_cd to 1>>
<<for _z = 0; _z < $slave_room_list.length; _z++>>
<<if $slave_room_list[_z].room_type === "Slave">>
<<if $slave_room_list[_z].injured === true && $slave_room_list[_z].injured_cd > _highest_injury_cd && $slave_room_list[_z].index !== _args[0].index>>
<<set _highest_injury_cd to clone($slave_room_list[_z].injured_cd)>>
<<set _options to [_z]>>
<<elseif $slave_room_list[_z].injured === true && $slave_room_list[_z].injured_cd === _highest_injury_cd && $slave_room_list[_z].index !== _args[0].index>>
<<set _options.push(_z)>>
<</if>>
<</if>>
<</for>>
FIND TARGET TO HEAL
<<if _options.length > 0>>
CHOOSE SLAVE
<<set _target to _options.random()>>
TRIGGER MOTHERLY
<<set _args[0].report.motherly.trig to true>>
<<set _args[0].report.motherly.slave_healed to $slave_room_list[_target].name>>
REDUCE INJURED CD ON TARGET
<<set $slave_room_list[_target].injured_cd -= setup.motherly.injury_int>>
REDUCED INJURY TO $slave_room_list[_target].injured_cd
<</if>>
* Set Text *
<<if _args[0].report.motherly.stress_recovered > 0 && _args[0].report.motherly.slave_healed !== "">>
<<set _args[0].report.motherly.text to "She cared for your other Slaves at the end of the night, recovering a total of @@.stress;"+_args[0].report.motherly.stress_recovered+" Stress@@ and tending to "+_args[0].report.motherly.slave_healed+"'s Injury.">>
<<elseif _args[0].report.motherly.stress_recovered > 0>>
<<set _args[0].report.motherly.text to "She cared for your other Slaves at the end of the night, recovering a total of @@.stress;"+_args[0].report.motherly.stress_recovered+" Stress@@.">>
<<elseif _args[0].report.motherly.slave_healed !== "">>
<<set _args[0].report.motherly.text to "She cared for your other Slaves at the end of the night, tending to "+_args[0].report.motherly.slave_healed+"'s Injury.">>
<</if>>
<</widget>><<silently>>
*Variables*
*Find Next Open Index*
<<set _index_list to []>>
<<for _z = 0; _z < $slave_room_list.length; _z++>>
<<if $slave_room_list[_z].room_type === "Slave">>
<<set _index_list.push($slave_room_list[_z].index)>>
<</if>>
<</for>>
<<for _z = 0; _z < setup.index_limit; _z++>>
<<if !_index_list.includes(_z)>>
<<set $cur_slave.index to _z>>
INDEX SET TO _z
<<break>>
<</if>>
<</for>>
<</silently>>\
<div class="section">\
<div class="cardholder-picside">\
<div class="picbox-inforoom-violet">\
<div class="buttonbox-slaveroom">\
</div>\
<div class="titlebox-abovepic-slaveroom">\
Purchasing Slave
</div>\
<div class="buttonbox-slaveroom">\
</div>\
<div class="textbox-abovepic-slaveroom">\
<strong>$cur_slave.name</strong>
</div>\
<div class="textbox-abovepic-slaveroom">\
Upkeep: <span class="gold">$cur_slave.upkeep Gold</span>
</div>\
<div class="picbox-slaveroom">\
$cur_slave.body_pic
</div>\
<div class="statusbox-belowpic-slaveroom">\
<<if $cur_slave.injured === true>>\
<<hovertip "<<-setup.slave_statuses.injured.tooltip>>">><<-setup.slave_statuses.injured.icon>><</hovertip>>
<</if>>\
<<if $cur_slave.disobedient === true>>\
<<hovertip "<<-setup.slave_statuses.disobedient.tooltip>>">><<-setup.slave_statuses.disobedient.icon>><</hovertip>>
<</if>>\
<<if $cur_slave.scolded_bool === true>>\
<<hovertip "<<-setup.slave_statuses.scolded.tooltip>>">><<-setup.slave_statuses.scolded.icon>><</hovertip>>
<</if>>\
<<if $cur_slave.dayoff_bool === true>>\
<<hovertip "<<-setup.slave_statuses.dayoff.tooltip>>">><<-setup.slave_statuses.dayoff.icon>><</hovertip>>
<</if>>\
</div>\
</div>\
</div>\
<div class="cardholder-infoside">\
<div class="textbox-inforoom-violet">\
<div class="status-textbox-slave">\
WORDS WORDS WORDS
</div>\
<div class="stats-container-slave">\
<div class="stats-titlebox-slave">\
Stats
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.love.tooltip>>">><<-setup.slave_stats.love.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.love_tracker / $cur_slave.love_tracker_limit<br>Max: $cur_slave.love_limit">>@@.love;$cur_slave.love@@<</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.obedience.tooltip>>">><<-setup.slave_stats.obedience.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.obedience_tracker / $cur_slave.obedience_tracker_limit<br>Max: $cur_slave.obedience_limit">>@@.obedience;$cur_slave.obedience@@<</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.libido.tooltip>>">><<-setup.slave_stats.libido.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.libido_tracker / $cur_slave.libido_tracker_limit<br>Max: $cur_slave.libido_limit">>@@.libido;$cur_slave.libido@@<</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.strength.tooltip>>">><<-setup.slave_stats.strength.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.strength_tracker / $cur_slave.strength_tracker_limit<br>Max: $cur_slave.strength_limit">>@@.strength;$cur_slave.strength@@<</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.intelligence.tooltip>>">><<-setup.slave_stats.intelligence.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.intelligence_tracker / $cur_slave.intelligence_tracker_limit<br>Max: $cur_slave.intelligence_limit">>@@.intelligence;$cur_slave.intelligence@@<</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.stress.tooltip>>">><<-setup.slave_stats.stress.icon>><</hovertip>>
<strong>@@.stress;$cur_slave.cur_stress@@</strong>
</div>\
<div class="stats-titlebox-slave">\
Traits
</div>\
<div class="stats-bigcell-slave">\
<<for _t = 0; _t < $cur_slave.traits.length; _t++>>\
<<print '<span style="color:'+$cur_slave.traits[_t].color+'"><<hovertip "$cur_slave.traits[_t].tooltip">>$cur_slave.traits[_t].name<</hovertip>></span>'>><<if _t + 1 < $cur_slave.traits.length>>, <</if>>\
<</for>>\
</div>\
</div>\
<div class="rec-skill-container-slave">\
<div class="rec-titlebox-slave">\
Sex Skills
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.handjob_tracker / $cur_slave.handjob_tracker_limit<br>Max: $cur_slave.handjob_limit">>Handjobs
$cur_slave.handjob<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.blowjob_tracker / $cur_slave.blowjob_tracker_limit<br>Max: $cur_slave.blowjob_limit">>Blowjobs
$cur_slave.blowjob<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.titjob_tracker / $cur_slave.titjob_tracker_limit<br>Max: $cur_slave.titjob_limit">>Titjobs
$cur_slave.titjob<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.footjob_tracker / $cur_slave.footjob_tracker_limit<br>Max: $cur_slave.footjob_limit">>Footjobs
$cur_slave.footjob<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.missionary_tracker / $cur_slave.missionary_tracker_limit<br>Max: $cur_slave.missionary_limit">>Missionary
$cur_slave.missionary<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.cowgirl_tracker / $cur_slave.cowgirl_tracker_limit<br>Max: $cur_slave.cowgirl_limit">>Cowgirl
$cur_slave.cowgirl<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.doggy_tracker / $cur_slave.doggy_tracker_limit<br>Max: $cur_slave.doggy_limit">>Doggy
$cur_slave.doggy<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.anal_tracker / $cur_slave.anal_tracker_limit<br>Max: $cur_slave.anal_limit">>Anal
$cur_slave.anal<</hovertip>>
</div>\
</div>\
</div>\
<div class="linkbox-enslave">\
<div class="linkbox-text">\
Are you sure you want to Buy $cur_slave.name?
<span id="forward"><<button [[$cur_slave.value + " Gold"|Slave Market]]>>\
<<silently>>\
INCREASE DAYS OWNED
<<set $cur_slave.total_days++>>
SPEND GOLD
<<set $pc_gold -= $cur_slave.value>>
ADD SLAVE TO OPEN ROOM
<<set $slave_room_list[$open_room] to $cur_slave>>
REMOVE SLAVE FROM MARKET
<<set _delete to $slave_market_list.deleteAt($index)>>
STATS
<<set $pc_slaves_bought++>>
<<set $pc_town_gold_spent += $cur_slave.value>>
<<if $cur_slave.value > $pc_highest_slave_bought>>
<<set $pc_highest_slave_bought to $cur_slave.value>>
<</if>>
BOUGHT BOOl
<<set $bought_slave_bool to true>>
UNSET
<<unset $open_room, $cur_slave, $index, $slave_info>>
SET PAGE TO 0
<<set $slave_market_page to 0>>
<</silently>>\
<</button>></span> <span id="back"><<button [[No|Buy Slave]]>><</button>></span>
</div>\
</div>\
</div>\
</div>\<<silently>>\
* Variables *
<<set _allFucked_list to []>>
<<set _exp_gained to 0>>
* Sim Sex for each Captured Raider Left *
<<for _i = 0; _i < $captured_girl_list.length; _i++>>
ADD TO LIST
<<set $used_girl_list.push($captured_girl_list[_i])>>
<<set _sex_type_list to $slave_girl_list[_i].slave_pack.service_positions.concat($slave_girl_list[_i].slave_pack.sex_positions)>>
<<set _sex_type to _sex_type_list.random()>>
<<set _newFucked = {
name: $captured_girl_list[_i].name,
exp: $captured_girl_list[_i].exp,
slave_pack: $slave_girl_list[_i].slave_pack,
sex_type: _sex_type
}>>
<<set _allFucked_list.push(clone(_newFucked))>>
<<set _exp_gained += $captured_girl_list[_i].exp>>
<</for>>
* Update player sex stats *
<<for _i = 0; _i < _allFucked_list.length; _i++>>
<<set _sex to _allFucked_list[_i].sex_type.toLowerCase()>> SEX: _sex
<<set $pc_sex_stats[_sex]++>> <<- $pc_sex_stats[_sex]>> TYPE
<<set $pc_sex_stats.total++>> <<- $pc_sex_stats.total>> TOTAL
<</for>>
* Player gained EXP *
LUST COLLECTOR BLESSSING
<<if $pc_blessing_list.includes("Lust Collector")>>
_exp_gained BEFORE
LUST COLLECTOR TRIGGERED
<<set _exp_gained += (Math.round(_exp_gained * setup.blessing_00_0.float)).clamp(1, 1000000)>>
_exp_gained AFTER
<</if>>
<<PCLevelUp _exp_gained>>
* Set Pic *
<<set _raider to _allFucked_list.random()>>
<<set _pic to _raider.slave_pack[_raider.sex_type.toLowerCase()].random()>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Fucking Raiders
</div>\
<div class="imagebox">\
_pic
</div>\
<div class="textbox-center">\
You've gained _exp_gained EXP.
<<if _levelup_trigger === true>>\
You have gained _times_leveledup <<if _times_leveledup === 1>>level<<else>>levels<</if>>.
<</if>>\
<<if $pc_level === $pc_levelcap>>\
You cannot gain anymore levels in this Rank.
<</if>>\
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[Continue|Daily Summary]]>><</button>></span>
</div>\
</div>\Double-click this passage to edit it.<<silently>>\
* Variables *
<<set _floor_names to ["Floor One", "Floor Two", "Floor Three", "Floor Four", "Floor Five", "Floor Six", "Floor Seven", "Floor Eight", "Floor Nine", "Floor Ten", "Floor Eleven", "Floor Twelve"]>> Display name for each room
* Calc Rate Buff *
OVERLOAD SPELL
<<if $overloadSpellBool === true>>
SPELL OVERLOADED
<<set $pc_spellbook[$spell_index].cur_check += (Math.round($pc_spellbook[$spell_index].cur_check * setup.blessing_02_12.float)).clamp(1, 1000000)>>
<<set $pc_spellbook[$spell_index].cur_duration += (Math.round($pc_spellbook[$spell_index].cur_duration * setup.blessing_02_12.float)).clamp(1, 1000000)>>
PREVENT OVERLOADING SPELL AGAIN
<<set $overloadSpellBool to false>>
<</if>>
*Display*
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<span id="back"><<button [[Back|View Spells]]>><<unset $mana_cost, $spell_index>><</button>></span>
</div>\
<div class="titlebox">\
$pc_spellbook[$spell_index].title
</div>\
<div class="tableholder-manager">\
<<for _i = 0; _i < $dungeon_floor_list.length; _i++>>\
<<set _hotKey to _i + 1>>\
<<silently>>\
<</silently>>\
<div class="cell-manager">\
<div class="cell-textholder-manager">\
<<- _floor_names[_i]>>
<<if $dungeon_floor_list[_i].room_type === "Trap" && $pc_cur_mana >= $mana_cost>>\
<<if $dungeon_floor_list[_i].cur_hp > 0 && !$dungeon_floor_list[_i].effect_names.includes($pc_spellbook[$spell_index].id)>>\
<<capture _i, _hotKey>>\
<span @id="_hotKey"><<button "Cast ^^_hotKey^^" "View Spells">>\
<<silently>>\
CREATE EFFECT
<<set _newBuff to clone(setup.trap_effect)>>
<<set _newBuff.id to $pc_spellbook[$spell_index].id>>
<<set _newBuff.effect_types to $pc_spellbook[$spell_index].effect_types>>
<<set _newBuff.check_int to $pc_spellbook[$spell_index].cur_check>>
<<set _newBuff.duration to $pc_spellbook[$spell_index].cur_duration>>
<<set _newBuff.effect_end to $pc_spellbook[$spell_index].effect_end>>
<<set _newBuff.icon to setup.effect_icons.spell>>
UPDATE NAME AND TOOLTIP
<<set _newBuff.name to _newBuff.id +" x"+_newBuff.duration>>
<<if $dungeon_floor_list[_i].check_type === "Trapcheck">>
<<set _newBuff.tooltip to "Increases @@.trap;Trapcheck@@ by @@.trap;"+_newBuff.check_int+"@@.">>
<<else>>
<<set _newBuff.tooltip to "Increases @@.spell;Spellcheck@@ by @@.spell;"+_newBuff.check_int+"@@.">>
<</if>>
ADD EFFECT
<<set $dungeon_floor_list[_i].effects.push(_newBuff)>>
<<set $dungeon_floor_list[_i].effect_names.push(_newBuff.id)>>
CASTING SPELL WIDGET
<<CastingSpell $pc_spellbook[$spell_index] $mana_cost>>
UNSET
<<unset $mana_cost, $spell_index>>
<</silently>>\
<</button>></span>\
<</capture>>\
<<else>>\
<div class="offbutton">\
<<button "Cast">><</button>>
</div>\
<</if>>\
<<else>>\
<div class="offbutton">\
<<button "Cast">><</button>>
</div>\
<</if>>\
</div>\
<div class="cell-picholder-manager">\
$dungeon_floor_list[_i].pic
</div>\
</div>\
<</for>>\
</div>\
</div>\
<<widget "SlaveSetup">>
Called before slave jobs, holds text trigger information
<<set _slave_triggers to {
exp_gained : {
love: 0,
obedience: 0,
libido: 0,
strength: 0,
intelligence: 0,
handjob: 0,
blowjob: 0,
titjob: 0,
footjob: 0,
missionary: 0,
cowgirl: 0,
doggy: 0,
anal: 0
},
stat_gained : {
love: 0,
obedience: 0,
libido: 0,
strength: 0,
intelligence: 0
},
skill_gained : {
handjob: 0,
blowjob: 0,
titjob: 0,
footjob: 0,
missionary: 0,
cowgirl: 0,
doggy: 0,
anal: 0
},
earned : {
gold: 0,
reputation: 0,
treasure: "",
le: 0
},
trait : {
supportive: 0,
flirtatious: 0,
libidinous: 0,
motherly: 0,
lover_trig: false,
clingy_trig: false,
loathing_trig: false,
slutty_trig: false,
traumatized_trig: false,
sturdy_trig: false,
disruptive_trig: false,
hardy_trig: false
},
blessing : {
acquiescence_trig: false
},
class : {
obedience: false,
libido: false,
strength: false,
intelligence: false
},
general : {
disobedient_trig: false,
disobedient_cured: false,
incident_trig: false,
injured_trig: false,
injured_cured: false,
stress_gained: 0,
stress_reduced: 0
}
}>>
<</widget>>
<<widget "SlaveReport">>
setup slave report list
<<set _report to {
type: "",
complete: true,
job_type: "",
stress_gained: 0,
injured_bool: false,
exp_gained : {
love: 0,
obedience: 0,
libido: 0,
strength: 0,
intelligence: 0,
handjob: 0,
blowjob: 0,
titjob: 0,
footjob: 0,
missionary: 0,
cowgirl: 0,
doggy: 0,
anal: 0
},
stat_gained : {
love: 0,
obedience: 0,
libido: 0,
strength: 0,
intelligence: 0
},
skill_gained : {
handjob: 0,
blowjob: 0,
titjob: 0,
footjob: 0,
missionary: 0,
cowgirl: 0,
doggy: 0,
anal: 0
},
end_of_day : {
love_exp: 0,
love_gain: 0,
obedience_exp: 0,
obedience_gain: 0,
stress_reduced: 0,
injured_cured: false,
disobedient_cured: false,
disruptive_trig: false,
sneaky_treasure: ""
},
conformity_exp : {
love: 0,
obedience: 0,
libido: 0,
strength: 0,
intelligence: 0,
handjob: 0,
blowjob: 0,
titjob: 0,
footjob: 0,
missionary: 0,
cowgirl: 0,
doggy: 0,
anal: 0,
text: ""
},
motherly : {
trig: false,
slave_count: 0,
stress_recovered: 0,
stress_gained: 0,
slave_healed: "",
text: ""
},
conformity_slave: "",
outcome: "",
side_outcome: "",
}>>
<</widget>>
<<widget "UpdateSlaveReport">>
<<set _args[0].report.exp_gained.love += _slave_triggers.exp_gained.love>>
<<set _args[0].report.exp_gained.obedience += _slave_triggers.exp_gained.obedience>>
<<set _args[0].report.exp_gained.libido += _slave_triggers.exp_gained.libido>>
<<set _args[0].report.exp_gained.strength += _slave_triggers.exp_gained.strength>>
<<set _args[0].report.exp_gained.intelligence += _slave_triggers.exp_gained.intelligence>>
<<set _args[0].report.exp_gained.handjob += _slave_triggers.exp_gained.handjob>>
<<set _args[0].report.exp_gained.blowjob += _slave_triggers.exp_gained.blowjob>>
<<set _args[0].report.exp_gained.titjob += _slave_triggers.exp_gained.titjob>>
<<set _args[0].report.exp_gained.footjob += _slave_triggers.exp_gained.footjob>>
<<set _args[0].report.exp_gained.missionary += _slave_triggers.exp_gained.missionary>>
<<set _args[0].report.exp_gained.cowgirl += _slave_triggers.exp_gained.cowgirl>>
<<set _args[0].report.exp_gained.doggy += _slave_triggers.exp_gained.doggy>>
<<set _args[0].report.exp_gained.anal += _slave_triggers.exp_gained.anal>>
<<set _args[0].report.stat_gained.love += _slave_triggers.stat_gained.love>>
<<set _args[0].report.stat_gained.obedience += _slave_triggers.stat_gained.obedience>>
<<set _args[0].report.stat_gained.libido += _slave_triggers.stat_gained.libido>>
<<set _args[0].report.stat_gained.strength += _slave_triggers.stat_gained.strength>>
<<set _args[0].report.stat_gained.intelligence += _slave_triggers.stat_gained.intelligence>>
<<set _args[0].report.skill_gained.handjob += _slave_triggers.skill_gained.handjob>>
<<set _args[0].report.skill_gained.blowjob += _slave_triggers.skill_gained.blowjob>>
<<set _args[0].report.skill_gained.titjob += _slave_triggers.skill_gained.titjob>>
<<set _args[0].report.skill_gained.footjob += _slave_triggers.skill_gained.footjob>>
<<set _args[0].report.skill_gained.missionary += _slave_triggers.skill_gained.missionary>>
<<set _args[0].report.skill_gained.cowgirl += _slave_triggers.skill_gained.cowgirl>>
<<set _args[0].report.skill_gained.doggy += _slave_triggers.skill_gained.doggy>>
<<set _args[0].report.skill_gained.anal += _slave_triggers.skill_gained.anal>>
<<if _args[0].injured === true>>
<<set _args[0].report.injured_bool to true>>
<</if>>
<</widget>>
<<widget "UpdateSlaveEOD">>
<<set $slave_room_list[_i].report.end_of_day.love_exp += clone(_slave_triggers.exp_gained.love)>>
<<set $slave_room_list[_i].report.end_of_day.love_gain += clone(_slave_triggers.stat_gained.love)>>
<<set $slave_room_list[_i].report.end_of_day.obedience_exp += clone(_slave_triggers.exp_gained.obedience)>>
<<set $slave_room_list[_i].report.end_of_day.obedience_gain += clone(_slave_triggers.stat_gained.obedience)>>
<<set $slave_room_list[_i].report.end_of_day.stress_reduced += clone(_slave_triggers.general.stress_reduced)>>
<<set $slave_room_list[_i].report.end_of_day.injured_cured to clone(_slave_triggers.general.injured_cured)>>
<<set $slave_room_list[_i].report.end_of_day.disobedient_cured to clone(_slave_triggers.general.disobedient_cured)>>
<<set $slave_room_list[_i].report.end_of_day.disruptive_trig to clone(_slave_triggers.trait.disruptive_trig)>>
<</widget>>
<<widget "SlaveUpkeepCalc">>
UPDATE UPKEEP COST
_args[0].name is slave and her base upkeep is _args[0].base_upkeep
<<set _total_upkeep to 0>>
Calculate each stat's upkeep amount and then add to total
<<for _z = 0; _z < setup.slave_upkeep_stats.length; _z++>>
<<set _cur_stat to clone(setup.slave_upkeep_stats[_z])>>
<<set _total_upkeep += Math.trunc((_args[0][_cur_stat] - 1) * setup.slave_stats_upkeep_mod)>>
TOTAL UPKEEP AFTER _cur_stat CALC IS _total_upkeep
<</for>>
Calculate each skill's upkeep amount and then add to total
<<for _z = 0; _z < setup.slave_sex_types.length; _z++>>
<<set _cur_skill to clone(setup.slave_sex_types[_z])>>
<<set _total_upkeep += Math.trunc((_args[0][_cur_skill] - 1) * setup.slave_skills_upkeep_mod)>>
TOTAL UPKEEP AFTER _cur_skill CALC IS _total_upkeep
<</for>>
Love stat reduces Upkeep cost
<<set _love_mod to (setup.slave_upkeep_base_love_mod - ((_args[0].love - 1) * setup.slave_upkeep_love_mod)).clamp(setup.slave_upkeep_min_mod, setup.slave_upkeep_base_love_mod)>>
THE POWER OF LOVE IS MODIFYING HER UPKEEP BY _love_mod
Set New Upkeep Cost
<<set _args[0].upkeep to Math.round((_args[0].base_upkeep + _total_upkeep) * _love_mod)>>
_args[0].upkeep IS HER COST PER DAY
* NEEDS APPEASED BLESSING *
<<if $pc_blessing_list.includes("Needs Appeased") && _args[0].love >= setup.blessing_08_8.love_req>>
<<set _args[0].upkeep -= Math.round(_args[0].upkeep * setup.blessing_08_8.float)>>
<</if>>
* APPLY TRAITS *
---Positive Traits---
SIMPLISTIC
<<if _args[0].trait_names.includes("Simplistic")>>
<<set _amount to Math.round(_args[0].upkeep * setup.simplistic.float)>>
<<set _args[0].upkeep -= _amount>>
<</if>>
FOND
<<if _args[0].trait_names.includes("Fond") && _args[0].love >= setup.fond.love_req>>
<<set _amount to Math.round(_args[0].upkeep * setup.fond.float)>>
<<set _args[0].upkeep -= _amount>>
<</if>>
---Negative Traits---
SPOILED
<<if _args[0].trait_names.includes("Spoiled")>>
<<set _args[0].upkeep += Math.round(_args[0].upkeep * setup.spoiled.float)>>
<</if>>
--CLAMP UPKEEP---
<<set _args[0].upkeep to Math.clamp(_args[0].upkeep, setup.min_slave_upkeep, 10000)>>
UPKEEP CLAMPED TO _args[0].upkeep
<</widget>>
<<widget "SlaveTrackerCalc">>
args[0] is slave
LOVE
<<for _z = 1; _z <= _args[0].love; _z++>>
<<set _args[0].love_tracker_limit += Math.round((_z + setup.slave_stat_constant) * setup.slave_stat_mod)>>
<</for>>
<<set _args[0].love_tracker to _args[0].love_tracker_limit - Math.round((_args[0].love + setup.slave_stat_constant) * setup.slave_stat_mod)>> LOVE EXP _args[0].love_tracker / _args[0].love_tracker_limit
OBEDIENCE
<<for _z = 1; _z <= _args[0].obedience; _z++>>
<<set _args[0].obedience_tracker_limit += Math.round((_z + setup.slave_stat_constant) * setup.slave_stat_mod)>>
<</for>>
<<set _args[0].obedience_tracker to _args[0].obedience_tracker_limit - Math.round((_args[0].obedience + setup.slave_stat_constant) * setup.slave_stat_mod)>> OBEDIENCE EXP _args[0].obedience_tracker / _args[0].obedience_tracker_limit
LIBIDO
<<for _z = 1; _z <= _args[0].libido; _z++>>
<<set _args[0].libido_tracker_limit += Math.round((_z + setup.slave_stat_constant) * setup.slave_stat_mod)>>
<</for>>
<<set _args[0].libido_tracker to _args[0].libido_tracker_limit - Math.round((_args[0].libido + setup.slave_stat_constant) * setup.slave_stat_mod)>> LIBIDO EXP _args[0].libido_tracker / _args[0].libido_tracker_limit
STRENGTH
<<for _z = 1; _z <= _args[0].strength; _z++>>
<<set _args[0].strength_tracker_limit += Math.round((_z + setup.slave_stat_constant) * setup.slave_stat_mod)>>
<</for>>
<<set _args[0].strength_tracker to _args[0].strength_tracker_limit - Math.round((_args[0].strength + setup.slave_stat_constant) * setup.slave_stat_mod)>> STRENGTH EXP _args[0].strength_tracker / _args[0].strength_tracker_limit
INTELLIGENCE
<<for _z = 1; _z <= _args[0].intelligence; _z++>>
<<set _args[0].intelligence_tracker_limit += Math.round((_z + setup.slave_stat_constant) * setup.slave_stat_mod)>>
<</for>>
<<set _args[0].intelligence_tracker to _args[0].intelligence_tracker_limit - Math.round((_args[0].intelligence + setup.slave_stat_constant) * setup.slave_stat_mod)>> INTELLIGENCE EXP _args[0].intelligence_tracker / _args[0].intelligence_tracker_limit
HANDJOB
<<for _z = 1; _z <= _args[0].handjob; _z++>>
<<set _args[0].handjob_tracker_limit += Math.round((_z + setup.slave_skill_constant) * setup.slave_skill_mod)>>
<</for>>
<<set _args[0].handjob_tracker to _args[0].handjob_tracker_limit - Math.round((_args[0].handjob + setup.slave_skill_constant) * setup.slave_skill_mod)>> HANDJOB EXP _args[0].handjob_tracker / _args[0].handjob_tracker_limit
BLOWJOB
<<for _z = 1; _z <= _args[0].blowjob; _z++>>
<<set _args[0].blowjob_tracker_limit += Math.round((_z + setup.slave_skill_constant) * setup.slave_skill_mod)>>
<</for>>
<<set _args[0].blowjob_tracker to _args[0].blowjob_tracker_limit - Math.round((_args[0].blowjob + setup.slave_skill_constant) * setup.slave_skill_mod)>> BLOWJOB EXP _args[0].blowjob_tracker / _args[0].blowjob_tracker_limit
TITJOB
<<for _z = 1; _z <= _args[0].titjob; _z++>>
<<set _args[0].titjob_tracker_limit += Math.round((_z + setup.slave_skill_constant) * setup.slave_skill_mod)>>
<</for>>
<<set _args[0].titjob_tracker to _args[0].titjob_tracker_limit - Math.round((_args[0].titjob + setup.slave_skill_constant) * setup.slave_skill_mod)>> TITJOB EXP _args[0].titjob_tracker / _args[0].htitjob_tracker_limit
FOOTJOB
<<for _z = 1; _z <= _args[0].footjob; _z++>>
<<set _args[0].footjob_tracker_limit += Math.round((_z + setup.slave_skill_constant) * setup.slave_skill_mod)>>
<</for>>
<<set _args[0].footjob_tracker to _args[0].footjob_tracker_limit - Math.round((_args[0].footjob + setup.slave_skill_constant) * setup.slave_skill_mod)>> FOOTJOB EXP _args[0].footjob_tracker / _args[0].footjob_tracker_limit
MISSIONARY
<<for _z = 1; _z <= _args[0].missionary; _z++>>
<<set _args[0].missionary_tracker_limit += Math.round((_z + setup.slave_skill_constant) * setup.slave_skill_mod)>>
<</for>>
<<set _args[0].missionary_tracker to _args[0].missionary_tracker_limit - Math.round((_args[0].missionary + setup.slave_skill_constant) * setup.slave_skill_mod)>> MISSIONARY EXP _args[0].missionary_tracker / _args[0].missionary_tracker_limit
COWGIRL
<<for _z = 1; _z <= _args[0].cowgirl; _z++>>
<<set _args[0].cowgirl_tracker_limit += Math.round((_z + setup.slave_skill_constant) * setup.slave_skill_mod)>>
<</for>>
<<set _args[0].cowgirl_tracker to _args[0].cowgirl_tracker_limit - Math.round((_args[0].cowgirl + setup.slave_skill_constant) * setup.slave_skill_mod)>> COWGIRL EXP _args[0].cowgirl_tracker / _args[0].cowgirl_tracker_limit
DOGGY
<<for _z = 1; _z <= _args[0].doggy; _z++>>
<<set _args[0].doggy_tracker_limit += Math.round((_z + setup.slave_skill_constant) * setup.slave_skill_mod)>>
<</for>>
<<set _args[0].doggy_tracker to _args[0].doggy_tracker_limit - Math.round((_args[0].doggy + setup.slave_skill_constant) * setup.slave_skill_mod)>> DOGGY EXP _args[0].doggy_tracker / _args[0].doggy_tracker_limit
ANAL
<<for _z = 1; _z <= _args[0].anal; _z++>>
<<set _args[0].anal_tracker_limit += Math.round((_z + setup.slave_skill_constant) * setup.slave_skill_mod)>>
<</for>>
<<set _args[0].anal_tracker to _args[0].anal_tracker_limit - Math.round((_args[0].anal + setup.slave_skill_constant) * setup.slave_skill_mod)>> ANAL EXP _args[0].anal_tracker / _args[0].anal_tracker_limit
<</widget>>
<<widget "SlaveValueCalc">>
args[0] is slave checking value for and args[1] is either "Buying" or "Selling"
* Variables *
<<set _selling_mod to 0.5>> reduces value of slave by this amount when selling
<<set _disobedient_mod to 0.5>> reduces value of slave by this amount when selling a disobedient slave
<<set _injured_mod to 0.5>> reduces value of slave by this amount when selling an injured slave
*Find General Value*
BASE VALUE
<<set _slave_value to clone(setup.slave_base_value)>> BASE VALUE: _slave_value
ADD STATS
<<for _z = 0; _z < $market_statInfo_list.length; _z++>>
<<set _stat to $market_statInfo_list[_z].name.toLowerCase()>>
<<set _slave_value += (_args[0][_stat] - 1) * $market_statInfo_list[_z].value>>
<</for>>
VALUE AFTER STATS: _slave_value
ADD SKILLS
<<for _z = 0; _z < $market_skillInfo_list.length; _z++>>
<<set _stat to $market_skillInfo_list[_z].name.toLowerCase()>>
<<set _slave_value += _args[0][_stat] * $market_skillInfo_list[_z].value>>
<</for>>
VALUE AFTER SKILLS: _slave_value
ADD TRAIT VALUE
FIND NAMES OF HOT TRAITS
<<set _hot_trait_names to []>>
<<for _z = 0; _z < $hot_traits.length; _z++>>
<<set _hot_trait_names.push($hot_traits[_z].name)>>
<</for>>
<<for _t = 0; _t < _args[0].traits.length; _t++>>
<<if _hot_trait_names.includes(_args[0].traits[_t].name)>>
<<set _slave_value += _args[0].traits[_t].value * setup.hot_trait_mult>>
<<else>>
<<set _slave_value += _args[0].traits[_t].value>>
<</if>>
<</for>>
APPLY TRAITS
VIRGIN
<<if _args[0].trait_names.includes("Virgin")>>
<<set _slave_value *= setup.virginity.mult>>
<</if>>
EXOTIC
<<if _args[0].trait_names.includes("Exotic")>>
<<set _slave_value *= setup.exotic.mult>>
<</if>>
VALUE AFTER TRAITS: _slave_value
ADD VALUE BASED ON TOTAL STATS AND SEX SKILL
<<set _total_stats to _args[0].obedience + _args[0].libido + _args[0].strength + _args[0].intelligence>>
<<set _total_skills to _args[0].handjob + _args[0].blowjob + _args[0].titjob + _args[0].footjob + _args[0].missionary + _args[0].cowgirl + _args[0].doggy + _args[0].anal>>
<<set _total_both to _total_stats + _total_skills>>
<<set _amount to Math.trunc((_total_both * 1.25) * 4)>>
AMOUNT FROM TOTAL STATS AND SEX SKILLS IS _amount
<<set _slave_value += _amount>>
VALUE AFTER TOTAL STATS: _slave_value
ADD VALUE BASED ON HIGHEST STAT AND SEX SKILL
<<set _stat_list to [_args[0].obedience, _args[0].libido, _args[0].strength, _args[0].intelligence]>>
<<set _skill_list to [_args[0].handjob, _args[0].blowjob, _args[0].titjob, _args[0].footjob, _args[0].missionary, _args[0].cowgirl, _args[0].doggy, _args[0].anal]>>
<<set _highest_stat to _stat_list[0]>>
<<for _z = 1; _z < _stat_list.length; _z++>>
<<if _stat_list[_z] > _highest_stat>>
<<set _highest_stat to clone(_stat_list[_z])>>
<</if>>
<</for>>
SET AMOUNT BASED ON HIGHEST STAT
<<set _amount to Math.trunc((_highest_stat * 1.25) * 4)>>
ADD TO VALUE
<<set _slave_value += _amount>>
HIGHEST STAT ADDED _amount to VALUE
<<set _highest_skill to _skill_list[0]>>
<<for _z = 1; _z < _skill_list.length; _z++>>
<<if _skill_list[_z] > _highest_skill>>
<<set _highest_skill to clone(_skill_list[_z])>>
<</if>>
<</for>>
SET AMOUNT BASED ON HIGHEST SKILL
<<set _amount to Math.trunc((_highest_skill * 1.25) * 4)>>
ADD TO VALUE
<<set _slave_value += _amount>>
HIGHEST SKILL ADDED _amount to VALUE
VALUE AFTER HIGHEST STAT AND SKILL: _slave_value
BLESSINGS
EVENTS
HIGH DEMAND
<<if $high_demand_event === true>>
<<set _amount to Math.trunc(_slave_value * setup.high_demand.float)>>
<<set _slave_value += _amount>>
HIGH DEMAND ADDED _amount GOLD TO HER VALUE
<</if>>
BUYING OR SELLING MODS
<<if _args[1] === "Buying">>
ADD MODS FOR BUYING HERE
<<elseif _args[1] === "Selling">>
ADD MODS FOR SELLING HERE
FETCHING FIGURE
<<if $pc_blessing_list.includes("Fetching Figure")>>
<<set _slave_value += (Math.round(_slave_value * setup.blessing_09_10.float)).clamp(1, 1000000)>>
<</if>>
DISOBEDIENT PENALTY
<<if _args[0].disobedient === true && !_connectionPrice>>
<<set _slave_value -= Math.round(_slave_value * _disobedient_mod)>>
VALUE AFTER DISOBEDIENT: _slave_value
<</if>>
INJURED PENALTY
<<if _args[0].injured === true && !_connectionPrice>>
<<set _slave_value -= Math.round(_slave_value * _injured_mod)>>
VALUE AFTER INJURED: _slave_value
<</if>>
REDUCE VALUE BY HALF WHEN SELLING
<<if _connectionPrice>>
<<set _slave_value -= Math.round(_slave_value * setup.annaBlessing_0.gold_float)>>
<<else>>
<<set _slave_value -= Math.round(_slave_value * _selling_mod)>>
<</if>>
FINAL OFFER: _slave_value
<</if>>
SET SLAVE VALUE TO CALC VALUE
<<set _args[0].value to clone(_slave_value)>>
_args[1] SLAVE VALUE: _args[0].value
<</widget>>
<<widget "SneakySlave">>
_args[0].name is Sneaky Slave
Calc chance to steal a treasure, what treasure is stolen, and add it to report.
* Variables *
<<set _base_rare to -0.1>>
<<set _rare_mod to 0.04>>
<<set _base_uncommon to 0.05>>
<<set _uncommon_mod to 0.07>>
<<set _percent to clone(setup.sneaky.percent)>>
CHECK IF SNEAKY TRIGGERED
<<set _rng to random(1, 100)>>
LUCKY
<<if _args[0].trait_names.includes("Lucky")>>
<<set _percent += (Math.round(_percent * setup.lucky.float)).clamp(1, 1000000)>>
<</if>>
UNLUCKY
<<if _args[0].trait_names.includes("Unlucky")>>
<<set _percent -= (Math.round(_percent * setup.unlucky.float)).clamp(1, 1000000)>>
<</if>>
<<if _percent >= _rng>>
SET % OF TREASURE RARITY
<<set _rare_per to _base_rare + (_rare_mod * $dungeon_rank)>>
<<set _uncommon_per to _base_uncommon + (_uncommon_mod * $dungeon_rank)>>
LUCKY
<<if _args[0].trait_names.includes("Lucky")>>
<<set _rare_per += (_rare_per * setup.lucky.float).toFixed(3)>>
<<set _uncommon_per += (_uncommon_per * setup.lucky.float).toFixed(3)>>
<</if>>
UNLUCKY
<<if _args[0].trait_names.includes("Unlucky")>>
<<set _rare_per -= (_rare_per * setup.unlucky.float).toFixed(3)>>
<<set _uncommon_per -= (_uncommon_per * setup.unlucky.float).toFixed(3)>>
<</if>>
CHECK WHAT RARITY OF TREASURE WAS STOLEN
<<set _rng to (randomFloat(1)).toFixed(3)>>
<<if _rare_per >= _rng && $global_treasure_stock.rare.length > 0>>
RARE TREASURE STOLEN
<<SetRareTreasure>>
<<elseif _uncommon_per >= _rng && $global_treasure_stock.uncommon.length > 0>>
UNCOMMON TREASURE STOLEN
<<SetUncommonTreasure>>
<<else>>
COMMON TREASURE STOLEN
<<SetCommonTreasure>>
<</if>>
<<set _args[0].report.end_of_day.sneaky_treasure to clone(_newTreasure)>>
<<set $sneaky_treasures.push(_newTreasure.name)>>
<</if>>
<</widget>><<silently>>\
* SETUP ROOM *
<<RoomSetup $raiders $this_room>>
<<TrapStats $this_room>>
<<set _perm_stimulated_text to []>> holds raiders who got the permanent stimulate status
<<set _perm_brainwashed_text to []>> holds raiders who got the permanent brainwashed status
<<set _perm_brainwash_bool to false>> if true, raider becomes perm brainwashed and takes bonus damage
* SETUP RAIDER *
<<RaiderSetup $raiders>>
* PRE COMBAT EFFECTS *
<<PreCombat $raiders $this_room>>
* DANCER BUFF *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].class === "Dancer">>
<<DancerBuff $raiders[_i] $this_room>>
<</if>>
<</for>>
* FIND TARGET *
<<set _highest_lust to 0>>
<<set _target to "">>
FIND CLOSEST RAIDER
<<for _z = 0; _z < $raiders.length; _z++>>
<<if $this_room.mode === "Shock" && _z == 0>>
<<set _target to $raiders[_z].index>>
<<break>>
<<elseif $this_room.mode === "Hypno" && _z == $raiders.length - 1>>
<<set _target to $raiders[_z].index>>
<<break>>
<<else>>
<<if _target === "">>
<<set _highest_lust to $raiders[_z].max_lust>>
<<set _target to $raiders[_z].index>>
<<elseif $raiders[_z].max_lust > _highest_lust>>
<<set _highest_lust to $raiders[_z].max_lust>>
<<set _target to $raiders[_z].index>>
<<elseif $raiders[_z].max_lust === _highest_lust>>
<<set _rng to random(1)>>
<<if _rng === 1>>
<<set _highest_lust to $raiders[_z].max_lust>>
<<set _target to $raiders[_z].index>>
<</if>>
<</if>>
<</if>>
<</for>>
* CAUGHT TRAPCHECK *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].index === _target>>
<<for _c = clone($this_room.trapcheck_count); _c > 0; _c-->>
<<set $this_room.total_attempts++>>
<<set $this_room.report.trap_attempts++>>
<<CalcTrapcheck $raiders[_i] $this_room.cur_check>>
<<SimTrapcheck $raiders[_i] _trapcheck>>
<<if _text_triggers.check.trapcheck_failed.includes($raiders[_i].index) || _text_triggers.check.trapcheck_crit_failed.includes($raiders[_i].index)>>
<<set $this_room.total_triggers++>>
<<set $this_room.report.trap_successes++>>
UPDATE RAIDER REPORT
<<set _entry to "She was caught and trapped on it.">>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<<break>>
<</if>>
<</for>>
<<if _text_triggers.check.trapcheck_failed.includes($raiders[_i].index) || _text_triggers.check.trapcheck_crit_failed.includes($raiders[_i].index)>>
DAMAGE
<<NormalAttack $raiders[_i] $this_room $this_room.cur_atk>>
<<SexualAttack $raiders[_i] $this_room $this_room.cur_sex>>
SHOCK
<<if $this_room.mode === "Shock">>
<<if !$raiders[_i].status_names.includes(setup.stimulated.id)>>
<<AddStatus $raiders[_i] setup.stimulated true>>
<<if _text_triggers.status.stimulated.includes($raiders[_r])>>
<<set $this_room.total_statuses++>>
UPDATE RAIDER REPORT
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage and became Stimulated.">>
<<else>>
UPDATE RAIDER REPORT
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage.">>
<</if>>
<<elseif $raiders[_i].status_names.includes(setup.stimulated.id)>>
<<for _s = 0; _s < $raiders[_i].statuses.length; _s++>>
<<if $raiders[_i].statuses[_s].id === "Stimulated">>
SET TO PERMANENT
<<set $raiders[_i].statuses[_s].permanent_bool to true>>
UPDATE STATUS AND TEXT
<<set _perm_stimulated_text.push($raiders[_i].index)>>
<<set $this_room.total_statuses++>>
UPDATE NAME AND TOOLTIP
<<set $raiders[_i].statuses[_s].name to "Electrified">>
<<set $raiders[_i].statuses[_s].tooltip to "Attacks with an Ass, Breasts, Cunnilingus, Masturbation, Oral, or Pussy Fetish deals 50% more @@.sex;Sexual damage@@. This effect is permanent.">>
UPDATE RAIDER REPORT
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage and became permanently Stimulated.">>
<<break>>
<</if>>
<</for>>
<</if>>
Hypno
<<elseif $this_room.mode === "Hypno">>
<<if !$raiders[_i].status_names.includes(setup.brainwashed.id)>>
<<AddStatus $raiders[_i] setup.brainwashed true>>
<<if _text_triggers.status.brainwashed.includes($raiders[_r])>>
<<set $this_room.total_statuses++>>
UPDATE RAIDER REPORT
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage and became Brainwashed.">>
<<else>>
UPDATE RAIDER REPORT
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage.">>
<</if>>
<<elseif $raiders[_i].status_names.includes(setup.brainwashed.id)>>
<<for _s = 0; _s < $raiders[_i].statuses.length; _s++>>
<<if $raiders[_i].statuses[_s].id === setup.brainwashed.id>>
SET TO PERMANENT
<<set $raiders[_i].statuses[_s].permanent_bool to true>>
UPDATE STATUS AND TEXT
<<set _perm_brainwashed_text.push($raiders[_i].index)>>
<<set $this_room.total_statuses++>>
UPDATE NAME AND TOOLTIP
<<set $raiders[_i].statuses[_s].name to "Mindless">>
<<set $raiders[_i].statuses[_s].tooltip to "She does not attack or support and her @@.aware;Awareness@@ and @@.reas;Reason@@ are reduced by 50%. This effect is permanent.">>
UPDATE RAIDER REPORT
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage and became permanently Brainwashed.">>
<<break>>
<</if>>
<</for>>
<</if>>
MODIFY
<<elseif $this_room.mode === "Modify">>
EXTRA LACTATION STACKS
<<if $raiders[_i].status_names.includes(setup.lactation.id)>>
FIND STATUS
<<for _s = 0; _s < $raiders[_i].statuses.length; _s++>>
<<if $raiders[_i].statuses[_s].id === setup.lactation.id>>
<<set _extra_lactation to $raiders[_i].statuses[_s].stacks + $this_room.lactation_stacks - $raiders[_i].statuses[_s].max_stack>>
<<break>>
<</if>>
<</for>>
<<else>>
<<set _extra_lactation to 0>>
<</if>>
<<AddStacks $raiders[_i] setup.lactation $this_room.lactation_stacks true>>
<<set $this_room.total_statuses++>>
BONUS SEXUAL DAMAGE
<<if _extra_lactation > 0>>
<<set _milked_damage to 0>>
<<for _e = clone(_extra_lactation); _e > 0; _e-->>
<<set _milked_damage += (Math.trunc($raiders[_i].max_lust * (setup.lactation.lust_float * $raiders[_i].statuses[_s].stack))).clamp(1, 1000000)>>
<<set $raiders[_i].sex_taken += (Math.trunc($raiders[_i].max_lust * (setup.lactation.lust_float * $raiders[_i].statuses[_s].stack))).clamp(1, 1000000)>>
<</for>>
<</if>>
FIND STATUS
<<for _s = 0; _s < $raiders[_i].statuses.length; _s++>>
<<if $raiders[_i].statuses[_s].id === setup.lactation.id>>
UPDATE RAIDER REPORT
<<if _milked_damage > 0>>
<<set _sex_dmg to $raiders[_i].sex_taken - _milked_damage>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+_sex_dmg+"@@ damage, gained "+$raiders[_i].statuses[_s].gain+" Lactation, and took another @@.sex;"+_milked_damage+"@@ after her breasts leaked excess milk.">>
<<else>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage and gained "+$raiders[_i].statuses[_s].gain+" Lactation.">>
<</if>>
<<break>>
<</if>>
<</for>>
<</if>>
<<else>>
UPDATE RAIDER REPORT
<<set _entry to "She was the target, but avoided getting caught.">>
<</if>>
UPDATE RAIDER REPORT
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<<else>>
UPDATE RAIDER REPORT
<<set _entry to "She was not targeted.">>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<</if>>
<</for>>
* POST COMBAT EFFECTS *
<<if $raiders.length === 1>>
<<set $this_room.can_capture to true>>
<</if>>
<<for _r = 0; _r < $raiders.length; _r++>>
<<PostCombat $raiders[_r] $this_room>>
<</for>>
<<set $this_room.can_capture to false>>
* CHOOSE PICTURE *
SETUP PIC ARRAY
<<set _picArray to clone($this_room.raider_pics)>>
<<for _z = 0; _z < $raiders.length; _z++>>
<<if _text_triggers.check.trapcheck_failed.includes($raiders[_z].index) || _text_triggers.check.trapcheck_crit_failed.includes($raiders[_z].index)>>
<<set $raiders[_z].pic to _picArray[$raiders[_z].body_type].pluck()>>
<</if>>
<</for>>
* END OF COMBAT REPORT *
<<PostCombatReport $raiders $this_room>>
* CLEAN UP *
<<CleanUp $raiders $this_room>>
* DISPLAY INFO *
<<set _cardholderID to "cardholder-raid-"+$raiders.length+"raiders">>
<<set _cardinfoID to "cardinfo-raid-"+$raiders.length+"raiders">>
<<set _picboxID to "picbox-raid-"+$raiders.length+"raiders">>
<<set _textboxID to "textbox-raid-"+$raiders.length+"raiders">>
<</silently>>\
<div class="section">\
<<NextRoomButton>>\
<div class="cardholder-raid-playerside">\
<div class="cardinfo-raid-trap">\
<div class="roomtitle-raid-player">\
Floor $cur_room_num
</div>\
<div class="picbox-raid-player">\
$this_room.pic
</div>\
<div class="namebox-raid-player">\
<strong>$this_room.name</strong>
---- $this_room.check_type: $this_room.cur_check% ----
</div>\
<div class="textbox-raid-player">\
<ul>\
<<TrapRoomText $this_room>>
<<BlessingTriggerText $this_room>>
<<EffectEndingText $this_room>>
</ul>\
</div>\
</div>\
</div>\
<div class="cardholder-raid-raiderside">\
<<for _r = 0; _r < $raiders.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_textboxID">\
<ul>\
<<DancerDanceText $raiders[_r] $this_room>>
<<if _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_failed.includes($raiders[_r].index)>>\
<li><<if _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)>><strong>Critical Failure!</strong> <</if>>She was unable to avoid getting caught by all the robotic arms and tentacles from the machine, taking @@.phy;$raiders[_r].dmg_taken Physical@@ damage and @@.sex;$raiders[_r].sex_taken Sexual@@ damage.</li>\
<<elseif _text_triggers.check.trapcheck_crit_passed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_passed.includes($raiders[_r].index)>>\
<li><<if _text_triggers.check.trapcheck_crit_passed.includes($raiders[_r].index)>><strong>Critical Success!</strong> <</if>>She was able to fight off all the robotic arms and tentacles from the machine as it tried to catch her.</li>\
<<else>>\
<li>She could only watch as her teammate was attacked by the machine.</li>\
<</if>>\
<<if _text_triggers.check.trapcheck_failed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)>>\
<<if _milked_damage > 0>>\
<li>Her breasts were already filled with milk, causing the excess to leak out and dealing @@.sex;_milked_damage@@ Sexual amount</li>\
<</if>>\
<<RaiderFetishText $raiders[_r] $this_room>>
<</if>>\
<<if _perm_stimulated_text.includes($raiders[_r].index)>>\
<li>Her body has become permanently <<hovertip "<<- setup.stimulated.tooltip>>">>Stimulated<</hovertip>> from being overstimulated.</li>\
<</if>>\
<<if _perm_brainwashed_text.includes($raiders[_r].index)>>\
<li>Her mind has become permanently <<hovertip "<<- setup.brainwashed.tooltip>>">>Brainwashed<</hovertip>> from the overexposure.</li>\
<</if>>\
<<PostCombatText $raiders[_r] $this_room>>
</ul>\
</div>\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\<<silently>>\
* Variables *
<<set _incident_penalty to 0.25>> reduces effect effects by this amount if there was an incident
<<set _incident_stress to 0.5>> increases stress gained during incident
<<set _tooltip to []>> Holds entries for the tooltip
* Find Slave Working Job *
<<for _s = 0; _s < $slave_room_list.length; _s++>>
<<if $slave_room_list[_s].index === $cur_job.slave_index>>
<<set _cur_slave to $slave_room_list[_s]>>
<<break>>
<</if>>
<</for>>
<<SlaveSetup _cur_slave>>
* Find Creature *
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if $dungeon_floor_list[_z].index === $cur_job.creature_index>>
<<set _creature_index to clone(_z)>>
<<break>>
<</if>>
<</for>>
* Obedience Check *
<<SlaveObedienceCheck _cur_slave $cur_job.base_obedience_check>>
* Incident Check *
<<if !$pc_blessing_list.includes("Vigilant Attendant")>>
<<SlaveIncidentCheck _cur_slave $cur_job.incident_rate $cur_job>>
<</if>>
<<if _slave_triggers.general.incident_trig === true>>
INJURY CHECK
<<SlaveInjuryCheck _cur_slave $cur_job.injury_rate $dungeon_floor_list[_creature_index]>>
<</if>>
* Caretaker Effects *
<<switch $cur_job.name>>
<<case "Basic Needs">>
VARIABLES
<<set _base_hp to 10>>
<<set _base_atk to 5>>
<<set _base_exp to 20>>
CREATE EFFECT
<<set _newEffect to clone(setup.creature_effect)>>
<<set _newEffect.name to "Needs Met">>
<<set _newEffect.id to "Needs Met">>
<<set _newEffect.effect_types to ["Raids"]>>
<<set _newEffect.icon to setup.effect_icons.caretaker>>
* HEALTH *
<<set _health to Math.round(_base_hp + (setup.obedienceCheckOutcome[_obedience_result] * $cur_job.hp_mod * (_cur_slave.strength).clamp(0, $cur_job.stat_cap)))>> STARTING HP: _health
MODIFIERS
<<CaretakerMods _cur_slave _health>>
HP AFTER MODS: _newStat
<<set _newEffect.hp_int to clone(_newStat)>>
* ATTACK *
<<set _attack to Math.round(_base_atk + (setup.obedienceCheckOutcome[_obedience_result] * $cur_job.atk_mod * (_cur_slave.strength).clamp(0, $cur_job.stat_cap)))>> STARTING ATK: _attack
MODIFIERS
<<CaretakerMods _cur_slave _attack>>
ATK AFTER MODS: _newStat
<<set _newEffect.atk_int to clone(_newStat)>>
<<set _newEffect.sex_int to clone(_newStat)>>
* EXP *
<<set _percent to Math.round(_base_exp + (setup.obedienceCheckOutcome[_obedience_result] * $cur_job.exp_mod * (_cur_slave.strength).clamp(0, $cur_job.stat_cap)))>> STARTING EXP PERCENT: _percent
MODIFIERS
<<CaretakerMods _cur_slave _percent>>
EXP PERCENT AFTER MODS: _newStat
<<set _newEffect.percent to clone(_newStat)>>
* TOOLTIP *
<<if $dungeon_floor_list[_creature_index].attack_type === "Physical">>
<<set _newEffect.tooltip to "This Creature was taken care of by "+_cur_slave.name+", increasing its @@.health;Health@@ by @@.health;"+_newEffect.hp_int+"@@, its @@.phy;Physical@@ and @@.sex;Sexual@@ Attack by "+_newEffect.atk_int+", and gains "+_newEffect.percent+"% more EXP.">>
<<else>>
<<set _newEffect.tooltip to "This Creature was taken care of by "+_cur_slave.name+", increasing its @@.health;Health@@ by @@.health;"+_newEffect.hp_int+"@@, its @@.mag;Magical@@ and @@.sex;Sexual@@ Attack by "+_newEffect.atk_int+", and gains "+_newEffect.percent+"% more EXP.">>
<</if>>
* OUTCOME TEXT *
<<set _jobText to " she looked over the creature to make sure it was healthy and ready for tonight's raid.">>
<</switch>>
* Add Buff *
<<set $dungeon_floor_list[_creature_index].effects.push(_newEffect)>>
<<set $dungeon_floor_list[_creature_index].effect_names.push(_newEffect.id)>>
INCREASE HEALTH IF BUFFED
<<if _newEffect.hp_int>>
<<set $dungeon_floor_list[_creature_index].cur_hp += _newEffect.hp_int>>
<</if>>
<<set _creature_name to $dungeon_floor_list[_creature_index].name>>
* Obedience Stat Gained *
<<set _obedience_exp to clone($cur_job.obedience_exp)>>
<<SlaveObedienceGrowth _cur_slave _obedience_exp>>
* Strength Stat Gained *
<<set _strength_exp to clone($cur_job.strength_exp)>>
ATTENTIVE TRAIT
<<if _cur_slave.trait_names.includes("Attentive")>>
<<set _strength_exp *= setup.attentive.mult>>
<</if>>
<<SlaveStrengthGrowth _cur_slave _strength_exp>>
* Stress Increase *
SET BASE AMOUNT
<<set _stress_amount to random($cur_job.min_stress, $cur_job.max_stress)>>
INCIDENT MOD
<<if _slave_triggers.general.incident_trig === true>>
<<set _stress_amount += Math.round(_stress_amount * _incident_stress)>>
<</if>>
SCARED TRAIT
<<if _cur_slave.trait_names.includes("Scared")>>
<<set _stress_amount *= setup.scared.mult>>
<</if>>
CONVICTION OF LOYALTY
<<if _cur_slave.job != "" && _cur_slave.side_job != "" && $pc_blessing_list.includes("Conviction of Loyalty")>>
REDUCE STRESS
<<set _stress_amount -= Math.round(_stress_amount * setup.blessing_07_12.float)>>
<</if>>
<<SlaveStressCalc _cur_slave _stress_amount "Gained">>
* Enchantress Effect *
<<if _cur_slave.trait_names.includes("Enchantress") && !$dungeon_floor_list[_creature_index].effect_names.includes("Enchantress's Protection")>>
ENCHANTRESS'S PROTECTION
<<set _newEffect to clone(setup.creature_effect)>>
<<set _newEffect.name to "Enchantress's Protection">>
<<set _newEffect.id to "Enchantress's Protection">>
<<set _newEffect.effect_types to ["Raids"]>>
<<set _newEffect.icon to setup.effect_icons.spell>>
<<set _newEffect.raider to "">> holds which raider was blocked
TOOLTIP
<<set _newEffect.tooltip to "This Creature was enchanted by "+_cur_slave.name+", preventing all damage that would be dealt to it from the first attack each combat.">>
<<set $dungeon_floor_list[_creature_index].effects.push(_newEffect)>>
<<set $dungeon_floor_list[_creature_index].effect_names.push(_newEffect.id)>>
UPDATE JOB TEXT
<<set _jobText to _jobText + " She also Enchanted it with her magic.">>
<</if>>
* Update Stats *
CURRENT SLAVE STATS
<<set _cur_slave.total_jobs++>>
ALL SLAVE STATS
<<set $slaves_task_stats[$cur_job.type.toLowerCase()]++>>
* Create Report *
<<set _outcome to "After arriving on the "+_creature_name+"'s floor to perform her Caretaking assignment,"+_jobText>>
<<if _slave_triggers.general.incident_trig === true>>
<<switch _obedience_result>>
<<case 0>>
<<set _outcome += " She was't paying attention and the "+_creature_name+" took advantage of the situation to have some fun.">>
<<case 1>>
<<set _outcome += " Her attentiveness wasn't enough to notice the "+_creature_name+"'s desire to release some pent-up energy.">>
<</switch>>
<<else>>
<<switch _obedience_result>>
<<case 0>>
<<set _outcome += " Her effort was lacking and she quickly left after doing the bare minimum.">>
<<case 1>>
<<set _outcome += " She showed great care towards the creature and made sure the job was fully completed before leaving.">>
<</switch>>
<</if>>
UPDATE REPORT
<<if _cur_slave.side_job.name === $cur_job.name>>
<<set _cur_slave.report.stress_gained += _slave_triggers.general.stress_gained>>
<<set _cur_slave.report.side_outcome to _outcome>>
<<else>>
<<set _cur_slave.report.type to "Caretaker">>
<<set _cur_slave.report.job_type to $cur_job.job_type>>
<<set _cur_slave.report.stress_gained += _slave_triggers.general.stress_gained>>
<<set _cur_slave.report.outcome to _outcome>>
<</if>>
<<UpdateSlaveReport _cur_slave>>
* Update Job List *
<<if (_cur_slave.disobedient === true || _cur_slave.injured === true) && _cur_slave.side_job != "">>
<<RemoveSlaveJob $cur_job.slave_index>>
<</if>>
* Set Picture *
<<if _slave_triggers.general.incident_trig === false>>
<<set _pic to _cur_slave.body_pic>>
<<else>>
<<set _pic to $dungeon_floor_list[_creature_index].raider_pics[_cur_slave.body_type].random()>>
<</if>>
* Text Display *
* Set Next Link *
<<if $cur_slave_jobs.length > 0>>
<<set $next_job to $cur_slave_jobs.pluck()>>
<<set $link to $next_job.passage>>
<<else>>
<<set $link to "Raiding Party">>
<<unset $next_job>>
<</if>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
$cur_job.name
</div>\
<div class="imagebox">\
_pic
</div>\
<div class="textbox">\
_outcome
<<SlaveText _cur_slave>>
</div>\
<div class="exit-link-right">\
<<if $link === "Raiding Party">>\
<span id="forward"><<button [[Begin Raid|$link]]>><<unset $link, $cur_job, $next_job>><</button>></span>
<<else>>\
<span id="forward"><<button [[Next Job|$link]]>><<set $cur_job to $next_job>><<unset $link>><</button>></span>
<</if>>\
</div>\
</div>\<<silently>>\
* Variables *
<<set _incident_penalty to 0.25>> Decrease stat buff if slave was injured
<<set _incident_stress to 0.5>> increases stress gained during incident
* Find Slave Working Job *
<<for _s = 0; _s < $slave_room_list.length; _s++>>
<<if $slave_room_list[_s].index === $cur_job.slave_index>>
<<set _cur_slave to $slave_room_list[_s]>>
<<break>>
<</if>>
<</for>>
<<SlaveSetup _cur_slave>>
* Find Trap Room *
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if $dungeon_floor_list[_z].index === $cur_job.trap_index>>
<<set _trap_index to clone(_z)>>
<<break>>
<</if>>
<</for>>
* Obedience Check *
<<SlaveObedienceCheck _cur_slave $cur_job.base_obedience_check>>
* Incident Check *
<<if !$pc_blessing_list.includes("Vigilant Attendant")>>
<<SlaveIncidentCheck _cur_slave $cur_job.incident_rate $cur_job>>
<</if>>
<<if _slave_triggers.general.incident_trig === true>>
INJURY CHECK
<<SlaveInjuryCheck _cur_slave $cur_job.injury_rate $dungeon_floor_list[_trap_index]>>
<</if>>
* Maintenance Effects *
<<switch $cur_job.name>>
<<case "Basic Inspection">>
VARIABLES
<<set _base_check to 20>>
<<set _base_triggers to 3>>
CREATE EFFECT
<<set _newEffect to clone(setup.trap_effect)>>
<<set _newEffect.id to "Inspection Complete">>
<<set _newEffect.effect_types to ["Raid"]>>
<<set _newEffect.effect_end to _cur_slave.name+"'s "+$cur_job.name+" effects ended.">>
<<set _newEffect.icon to setup.effect_icons.maintenance>>
* CHECK *
<<set _check to Math.round(_base_check + (setup.obedienceCheckOutcome[_obedience_result] * $cur_job.check_mod * (_cur_slave.intelligence).clamp(0, $cur_job.stat_cap)))>> STARTING CHECK: _check
MODIFIERS
<<MaintenanceMods _cur_slave _check>>
CHECK AFTER MODS: _newStat
<<set _newEffect.check_int to clone(_newStat)>>
* TRIGGERS *
<<set _triggers to Math.round(_base_triggers + (setup.obedienceCheckOutcome[_obedience_result] * $cur_job.triggers_mod * (_cur_slave.intelligence).clamp(0, $cur_job.stat_cap)))>> STARTING TRIGGERS: _triggers
MODIFIERS
<<MaintenanceMods _cur_slave _triggers>>
CHECK AFTER MODS: _newStat
<<set _newEffect.int to clone(_newStat)>>
* TOOLTIP *
<<set _newEffect.name to _newEffect.id+" x"+_newEffect.int>>
<<set _newEffect.tooltip to "This Trap was inspected by "+_cur_slave.name+", increasing its "+$dungeon_floor_list[_trap_index].check_type+" by "+_newEffect.check_int+" for the next "+_newEffect.int+" triggers.">>
* OUTCOME TEXT *
<<set _jobText to " she examined the trap to make sure everything was functioning properly before tonight's raid.">>
<</switch>>
* Add Effect *
<<set $dungeon_floor_list[_trap_index].effects.push(_newEffect)>>
<<set $dungeon_floor_list[_trap_index].effect_names.push(_newEffect.id)>>
<<set _trap_name to $dungeon_floor_list[_trap_index].name>>
* Obedience Stat Gained *
<<set _obedience_exp to clone($cur_job.obedience_exp)>>
<<SlaveObedienceGrowth _cur_slave _obedience_exp>>
* Intelligence Stat Gained *
<<set _intelligence_exp to clone($cur_job.intelligence_exp)>>
ATTENTIVE TRAIT
<<if _cur_slave.trait_names.includes("Attentive")>>
<<set _intelligence_exp *= setup.attentive.mult>>
<</if>>
<<SlaveIntelligenceGrowth _cur_slave _intelligence_exp>>
* Stress Increase *
SET BASE AMOUNT
<<set _stress_amount to random($cur_job.min_stress, $cur_job.max_stress)>>
INCIDENT MOD
<<if _slave_triggers.general.incident_trig === true>>
<<set _stress_amount += Math.round(_stress_amount * _incident_stress)>>
<</if>>
KLUTZY TRAIT
<<if _cur_slave.trait_names.includes("Klutzy")>>
<<set _stress_amount *= setup.klutzy.mult>>
<</if>>
CONVICTION OF LOYALTY
<<if _cur_slave.job != "" && _cur_slave.side_job != "" && $pc_blessing_list.includes("Conviction of Loyalty")>>
REDUCE STRESS
<<set _stress_amount -= Math.round(_stress_amount * setup.blessing_07_12.float)>>
<</if>>
<<SlaveStressCalc _cur_slave _stress_amount "Gained">>
* Enchantress Effect *
<<if _cur_slave.trait_names.includes("Enchantress") && !$dungeon_floor_list[_trap_index].effect_names.includes("Enchantress's Hindrance")>>
ENCHANTRESS'S PROTECTION
<<set _newEffect to clone(setup.trap_effect)>>
<<set _newEffect.name to "Enchantress's Hindrance">>
<<set _newEffect.id to "Enchantress's Hindrance">>
<<set _newEffect.effect_types to ["Raids"]>>
<<set _newEffect.icon to setup.effect_icons.spell>>
TOOLTIP
<<set _newEffect.tooltip to "This Trap was enchanted by "+_cur_slave.name+", reducing each Raider's @@.aware;Awareness@@ and @@.reas;Reason@@ by 50% while on its floor.">>
<<set $dungeon_floor_list[_trap_index].effects.push(_newEffect)>>
<<set $dungeon_floor_list[_trap_index].effect_names.push(_newEffect.id)>>
UPDATE JOB TEXT
<<set _jobText to _jobText + " She also Enchanted it with her magic.">>
<</if>>
* Update Stats *
CURRENT SLAVE STATS
<<set _cur_slave.total_jobs++>>
ALL SLAVE STATS
<<set $slaves_task_stats[$cur_job.type.toLowerCase()]++>>
* Update Report *
<<set _outcome to "After arriving on the "+_trap_name+"'s floor to perform her Maintenance assignment,"+_jobText>>
<<if _slave_triggers.general.incident_trig === true>>
<<switch _obedience_result>>
<<case 0>>
<<set _outcome += " She was careless become caught by the "+_trap_name+".">>
<<case 1>>
<<set _outcome += " She was doing her best to be careful, but still triggered the "+_trap_name+" and was caught.">>
<</switch>>
<<else>>
<<switch _obedience_result>>
<<case 0>>
<<set _outcome += " She spent very little time actually working and killed time relaxing before it was time to leave.">>
<<case 1>>
<<set _outcome += " Her attention to detail was excellent and she made sure she completely the assignment fully before leaving.">>
<</switch>>
<</if>>
UPDATE REPORT
<<if _cur_slave.side_job.name === $cur_job.name>>
<<set _cur_slave.report.stress_gained += _slave_triggers.general.stress_gained>>
<<set _cur_slave.report.side_outcome to _outcome>>
<<else>>
<<set _cur_slave.report.type to "Maintenance">>
<<set _cur_slave.report.job_type to $cur_job.job_type>>
<<set _cur_slave.report.stress_gained += _slave_triggers.general.stress_gained>>
<<set _cur_slave.report.outcome to _outcome>>
<</if>>
<<UpdateSlaveReport _cur_slave>>
* Update Job List *
<<if (_cur_slave.disobedient === true || _cur_slave.injured === true) && _cur_slave.side_job != "">>
<<RemoveSlaveJob $cur_job.slave_index>>
<</if>>
* Set Picture *
<<if _slave_triggers.general.incident_trig === false>>
<<set _pic to _cur_slave.body_pic>>
<<else>>
<<set _pic to $dungeon_floor_list[_trap_index].raider_pics[_cur_slave.body_type].random()>>
<</if>>
* Set Next Link *
<<if $cur_slave_jobs.length > 0>>
<<set $next_job to $cur_slave_jobs.pluck()>>
<<set $link to $next_job.passage>>
<<else>>
<<set $link to "Raiding Party">>
<<unset $next_job>>
<</if>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
$cur_job.name
</div>\
<div class="imagebox">\
_pic
</div>\
<div class="textbox">\
_outcome
<<SlaveText _cur_slave>>\
</div>\
<div class="exit-link-right">\
<<if $link === "Raiding Party">>\
<span id="forward"><<button [[Begin Raid|$link]]>><<unset $link, $cur_job, $next_job>><</button>></span>
<<else>>\
<span id="forward"><<button [[Next Job|$link]]>><<set $cur_job to $next_job>><<unset $link>><</button>></span>
<</if>>\
</div>\
</div>\<<silently>>\
* Variables *
<<set _floor_names to ["Floor One", "Floor Two", "Floor Three", "Floor Four", "Floor Five", "Floor Six", "Floor Seven", "Floor Eight", "Floor Nine", "Floor Ten", "Floor Eleven", "Floor Twelve"]>> Display name for each room
* Find Rooms Already with Caretakers *
<<set _caretaker_index_list to []>>
<<for _i = 0; _i < $slave_room_list.length; _i++>>
<<if $slave_room_list[_i].room_type === "Slave">>
<<if $slave_room_list[_i].job != "">>
<<if $slave_room_list[_i].job.type === "Caretaker">>\
<<set _caretaker_index_list.push($slave_room_list[_i].job.creature_index)>>
<</if>>
<</if>>
<</if>>
<</for>>
*Display*
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Assign Slave Job]]>><<set $cur_slave[$job] to "">><<unset $job>><</button>></span>
</div>\
<div class="tableholder-manager">\
<div class="titlebox">\
Choose a Creature to Caretaker
</div>\
<<for _i = 0; _i < $dungeon_floor_list.length; _i++>>\
<<set _hotKey to _i + 1>>\
<div class="cell-manager">\
<div class="cell-textholder-manager">\
<<- _floor_names[_i]>>
<<if $dungeon_floor_list[_i].room_type === "Empty">>\
<div class="offbutton">\
<<hovertip "Empty Room">><<button "Assign">><</button>><</hovertip>>
</div>\
<<elseif $dungeon_floor_list[_i].room_type === "Trap">>\
<div class="offbutton">\
<<hovertip "Not a Creature">><<button "Assign">><</button>><</hovertip>>
</div>\
<<else>>\
<<capture _i, _hotKey>>\
<span @id="_hotKey"><<button "Assign ^^_hotKey^^" "Slave Room">>\
<<silently>>\
REMOVE ALL OTHER SLAVES AS CARETAKER AND UNASSIGN JOB
<<for _s = 0; _s < $slave_room_list.length; _s++>>
<<if $slave_room_list[_s].room_type === "Slave">>
<<if $slave_room_list[_s].job != "">>
<<if $slave_room_list[_s].job.type === "Caretaker">>\
<<if $slave_room_list[_s].job.creature_index === $dungeon_floor_list[_i].index>>
<<set $slave_room_list[_s].job to "">>
<</if>>
<</if>>
<</if>>
<</if>>
<</for>>
ASSIGN AS CARETAKER
<<set $cur_slave[$job].creature_index to $dungeon_floor_list[_i].index>>
UPDATE SLAVE
<<set $slave_room_list[$cur_slave_num] to $cur_slave>>
<<unset $job, $job_page, $filter_jobs>>
<</silently>>\
<</button>></span>\
<</capture>>\
<</if>>\
</div>\
<div class="cell-picholder-manager">\
$dungeon_floor_list[_i].pic
</div>\
</div>\
<</for>>\
</div>\
</div>\<<silently>>\
* Variables *
<<set _floor_names to ["Floor One", "Floor Two", "Floor Three", "Floor Four", "Floor Five", "Floor Six", "Floor Seven", "Floor Eight", "Floor Nine", "Floor Ten", "Floor Eleven", "Floor Twelve"]>> Display name for each room
* Find Rooms Already with Caretakers *
<<set _maintenance_index_list to []>>
<<for _i = 0; _i < $slave_room_list.length; _i++>>
<<if $slave_room_list[_i].room_type === "Slave">>
<<if $slave_room_list[_i].job != "">>
<<if $slave_room_list[_i].job.type === "Maintenance">>
<<set _maintenance_index_list.push($slave_room_list[_i].job.trap_index)>>
<</if>>
<</if>>
<</if>>
<</for>>
*Display*
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Assign Slave Job]]>><<set $cur_slave[$job] to "">><<unset $job>><</button>></span>
</div>\
<div class="tableholder-manager">\
<div class="titlebox">\
Choose a Trap to perform Maintenance
</div>\
<<for _i = 0; _i < $dungeon_floor_list.length; _i++>>\
<<set _hotKey to _i + 1>>\
<div class="cell-manager">\
<div class="cell-textholder-manager">\
<<- _floor_names[_i]>>
<<if $dungeon_floor_list[_i].room_type === "Empty">>\
<div class="offbutton">\
<<hovertip "Empty Room">><<button "Assign">><</button>><</hovertip>>
</div>\
<<elseif $dungeon_floor_list[_i].room_type === "Creature">>\
<div class="offbutton">\
<<hovertip "Not a Trap">><<button "Assign">><</button>><</hovertip>>
</div>\
<<else>>\
<<capture _i, _hotKey>>\
<span @id="_hotKey"><<button "Assign ^^_hotKey^^" "Slave Room">>\
<<silently>>\
REMOVE ALL OTHER SLAVES AS MAINTENANCE AND UNASSIGN JOB
<<for _s = 0; _s < $slave_room_list.length; _s++>>
<<if $slave_room_list[_s].room_type === "Slave">>
<<if $slave_room_list[_s].job != "">>
<<if $slave_room_list[_s].job.type === "Maintenance">>
<<if $slave_room_list[_s].job.trap_index === $dungeon_floor_list[_i].index>>
<<set $slave_room_list[_s].job to "">>
<</if>>
<</if>>
<</if>>
<</if>>
<</for>>
ASSIGN AS MAINTENANCE
<<set $cur_slave[$job].trap_index to $dungeon_floor_list[_i].index>>
UPDATE SLAVE
<<set $slave_room_list[$cur_slave_num] to $cur_slave>>
<<unset $job, $job_page, $filter_jobs>>
<</silently>>\
<</button>></span>\
<</capture>>\
<</if>>\
</div>\
<div class="cell-picholder-manager">\
$dungeon_floor_list[_i].pic
</div>\
</div>\
<</for>>\
</div>\
</div>\<<silently>>\
* SETUP ROOM *
<<RoomSetup $raiders $this_room>>
<<CreatureStats $this_room>>
<<set _execute_text to false>> set to true if raider was in execute range, displays text
<<set _cannotAttackBool to false>> set to true if raider cannot attack
* SETUP RAIDER *
<<RaiderSetup $raiders>>
* PRE COMBAT EFFECTS *
<<PreCombat $raiders $this_room>>
* ALPHA HOWL *
<<if $this_room.name === "Alpha Wolf">>
<<set _zoophobia_trigger to []>>
<<for _r = 0; _r < $raiders.length; _r++>>
<<if !$raiders[0].trait_names.includes(setup.zoophobia.id)>>
<<set _rng to random(1, 100)>>
<<if _rng <= $this_room.alpha_percent>>
<<set _newTrait to clone(setup.zoophobia)>>
<<set $raiders[_r].traits.push(_newTrait)>>
<<set $raiders[_r].trait_names.push(_newTrait.id)>>
<<set _zoophobia_trigger.push($raiders[_r].index)>>
UPDATE RAIDER REPORT
<<set _entry to "His howl inflicted her with Zoophobia.">>
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_r].report.log.push(_lastLog)>>
<</if>>
<</if>>
<</for>>
<</if>>
* WOLF TARGETS *
<<if $this_room.name === "Werewolf">>
WEREWOLF TARGET
<<set _weakest_raider to "">> holds index of raider with lowest health
<<set _lust_percent to "">> holds value of current highest lust
<<for _r = 0; _r < $raiders.length; _r++>>
<<if _lust_percent === "">>
<<set _weakest_raider to $raiders[_r].index>>
<<set _lust_percent to Math.trunc(($raiders[_r].cur_lust / $raiders[_r].max_lust) * 100)>>
SETTING TARGET TO $raiders[_r].class
<<elseif _lust_percent < Math.trunc(($raiders[_r].cur_lust / $raiders[_r].max_lust) * 100)>>
<<set _lust_percent to Math.trunc(($raiders[_r].cur_lust / $raiders[_r].max_lust) * 100)>>
<<set _weakest_raider to $raiders[_r].index>>
CHANGING TARGET TO $raiders[_r].class
<<elseif _lust_percent === Math.trunc(($raiders[_r].cur_lust / $raiders[_r].max_lust) * 100)>>
<<set _rng to random(1)>>
<<if _rng === 1>>
<<set _lust_percent to Math.trunc(($raiders[_r].cur_lust / $raiders[_r].max_lust) * 100)>>
<<set _weakest_raider to $raiders[_r].index>>
CHANGING TARGET TO $raiders[_r].class
<</if>>
<</if>>
<</for>>
<<else>>
OTHER WOLVES TARGET
<<set _weakest_raider to "">> holds index of raider with lowest health
<<set _health_percent to "">> holds value of current lowest health
<<for _r = 0; _r < $raiders.length; _r++>>
<<if _health_percent === "">>
<<set _health_percent to Math.trunc(($raiders[_r].cur_hp / $raiders[_r].max_hp) * 100)>>
<<set _weakest_raider to $raiders[_r].index>>
SETTING TARGET TO $raiders[_r].class
<<elseif _health_percent > Math.trunc(($raiders[_r].cur_hp / $raiders[_r].max_hp) * 100)>>
<<set _health_percent to Math.trunc(($raiders[_r].cur_hp / $raiders[_r].max_hp) * 100)>>
<<set _weakest_raider to $raiders[_r].index>>
CHANGING TARGET TO $raiders[_r].class
<<elseif _health_percent === Math.trunc(($raiders[_r].cur_hp / $raiders[_r].max_hp) * 100)>>
<<set _rng to random(1)>>
<<if _rng === 1>>
<<set _health_percent to Math.trunc(($raiders[_r].cur_hp / $raiders[_r].max_hp) * 100)>>
<<set _weakest_raider to $raiders[_r].index>>
CHANGING TARGET TO $raiders[_r].class
<</if>>
<</if>>
<</for>>
<</if>>
SET ATTACKED RAIDER
<<for _r = 0; _r < $raiders.length; _r++>>
<<if $raiders[_r].index === _weakest_raider>>
<<set $raiders[_r].attacked to true>>
<<break>>
<</if>>
<</for>>
* WOLF ATTACKS *
<<for _r = 0; _r < $raiders.length; _r++>>
<<if $raiders[_r].attacked === true>>
<<if $this_room.name === "Werewolf">>
WEREWOLF NORMAL ATTACK
<<set _wolf_atk to Math.trunc($this_room.cur_atk * ($this_room.werewolf_float + $this_room.low_float))>>
<<if (($raiders[_r].cur_lust / $raiders[_r].max_lust).toFixed(2)) * 100 >= $this_room.percent>>
WEREWOLF EXECUTE SEXUAL ATTACK
<<set _wolf_sex to Math.trunc($this_room.cur_sex * ($this_room.werewolf_float + $this_room.execute_float))>>
<<set _execute_text to true>>
<<else>>
WEREWOLF SEXUAL ATTACK
<<set _wolf_sex to Math.trunc($this_room.cur_sex * ($this_room.werewolf_float + $this_room.high_float))>>
<</if>>
<<elseif $this_room.name === "Stalking Wolf" || $this_room.name === "Alpha Wolf" || $this_room.name === "Wolf">>
STALKING, ALPHA, AND BASIC WOLF SEXUAL ATTACK
<<set _wolf_sex to Math.trunc($this_room.cur_sex * $this_room.low_float)>>
<<if (($raiders[_r].cur_hp / $raiders[_r].max_hp).toFixed(2)) * 100 <= $this_room.percent>>
TRIGGER EXECUTE TEXT
<<set _execute_text to true>>
<<if $this_room.name === "Stalking Wolf">>
STALKING WOLF EXECUTE ATTACK
<<set _wolf_atk to Math.trunc($this_room.cur_atk * $this_room.stalking_float)>>
<<else>>
ALPHA AND BASIC WOLF EXECUTE ATTACK
<<set _wolf_atk to Math.trunc($this_room.cur_atk * $this_room.execute_float)>>
<</if>>
<<else>>
STALKING, ALPHA, AND BASIC WOLF NORMAL ATTACK
<<set _wolf_atk to Math.trunc($this_room.cur_atk * $this_room.high_float)>>
<</if>>
<</if>>
<<NormalAttack $raiders[_r] $this_room _wolf_atk>>
<<SexualAttack $raiders[_r] $this_room _wolf_sex>>
UPDATE RAIDER REPORT
<<set _entry to "She took @@.phy;"+$raiders[_r].dmg_taken+"@@ and @@.sex;"+$raiders[_r].sex_taken+"@@ damage.">>
STALKING CAPTURE CHECK
<<if $this_room.name === "Stalking Wolf" && ($raiders[_r].cur_health - $raiders[_r].dmg_taken <= 0 || $raiders[_r].cur_lust + $raiders[_r].sex_taken >= $raiders[_r].max_lust)>>
<<set _cannotAttackBool to true>>
<</if>>
<<else>>
UPDATE RAIDER REPORT
<<set _entry to "She was not attacked.">>
<</if>>
UPDATE RAIDER REPORT
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_r].report.log.push(_lastLog)>>
<</for>>
* ADDITIONAL RADIER REPORT *
<<for _r = 0; _r < $raiders.length; _r++>>
<<if $raiders[_r].attacked === true>>
<<if _execute_text === true && $this_room.name === "Werewolf">>
<<set _entry to "The "+$this_room.name+" dealt more @@.sex;Sexual@@ damage to her because of her sexual state.">>
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_r].report.log.push(_lastLog)>>
<<elseif _execute_text === true>>
<<set _entry to "The "+$this_room.name+" dealt more @@.phy;Physical@@ damage to her because of her weakened state.">>
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_r].report.log.push(_lastLog)>>
<</if>>
<</if>>
<</for>>
* DANCER BUFF *
<<for _r = 0; _r < $raiders.length; _r++>>
<<if $raiders[_r].class === "Dancer" && (_cannotAttackBool === false || $raiders[_r].attacked === false)>>
<<DancerBuff $raiders[_r] $this_room>>
<</if>>
<</for>>
* RAIDERS ATTACK *
<<for _r = 0; _r < $raiders.length; _r++>>
<<if _cannotAttackBool === false || $raiders[_r].attacked === false>>
<<RaiderAttack $raiders[_r] $this_room>>
<<else>>
UPDATE RAIDER REPORT
<<set _entry to "She was defeated before she could attack the "+$this_room.name+".">>
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_r].report.log.push(_lastLog)>>
<</if>>
<</for>>
* POST COMBAT EFFECTS *
<<for _r = 0; _r < $raiders.length; _r++>>
<<PostCombat $raiders[_r] $this_room>>
<</for>>
* WOLF EXP & DAMAGE *
<<CreaturePostCombat $raiders $this_room>>
* CHOOSE PICTURE *
SETUP PIC ARRAY
<<set _picArray to clone($this_room.raider_pics)>>
<<for _r = 0; _r < $raiders.length; _r++>>
* Attacked Pictures *
<<if $raiders[_r].attacked === true>>
<<set $raiders[_r].pic to _picArray[$raiders[_r].body_type].pluck()>>
<</if>>
<</for>>
* END OF COMBAT REPORT *
<<PostCombatReport $raiders $this_room>>
* CLEAN UP *
<<CleanUp $raiders $this_room>>
* DISPLAY INFO *
<<set _cardholderID to "cardholder-raid-"+$raiders.length+"raiders">>
<<set _cardinfoID to "cardinfo-raid-"+$raiders.length+"raiders">>
<<set _picboxID to "picbox-raid-"+$raiders.length+"raiders">>
<<set _cardpicClass to "cardpic-raid-"+$raiders.length+"raiders">>
<<set _nameboxID to "namebox-raid-"+$raiders.length+"raiders">>
<<set _textboxID to "textbox-raid-"+$raiders.length+"raiders">>
<</silently>>\
<div class="section">\
<<NextRoomButton>>\
<div class="cardholder-raid-playerside">\
<div class="cardinfo-raid-creature">\
<div class="roomtitle-raid-player">\
Floor $cur_room_num
</div>\
<div class="picbox-raid-player">\
_room_image
</div>\
<div class="namebox-raid-player">\
<strong>$this_room.name</strong>
---- Health: $this_room.cur_hp / $this_room.cur_max_hp ----
</div>\
<div class="textbox-raid-player">\
<ul>\
<<if _execute_text === true && $this_room.name === "Werewolf">>\
<li>Her erotic stench fueled him, increasing the amount of @@.sex;Sexual@@ damage he dealt.</li>\
<<elseif _execute_text === true>>\
<li>Her weakened state gave him an opening, increasing the amount of @@.phy;Physical@@ damage he dealt.</li>\
<</if>>\
<<CreatureRoomText $this_room>>
<<BlessingTriggerText $this_room>>
<<EffectEndingText $this_room>>
</ul>\
</div>\
</div>\
</div>\
<div class="cardholder-raid-raiderside">\
<<for _r = 0; _r < $raiders.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_textboxID">\
<ul>
<<if _cannotAttackBool === false || $raiders[_r].attacked === false>>\
<<DancerDanceText $raiders[_r] $this_room>>
<<RaiderAtkText $raiders[_r] $this_room>>
<</if>>\
<<if $raiders[_r].attacked === true>>\
<<if $this_room.name === "Wolf">>\
<li>The $this_room.name pounced from the shadows at her, dealing <span style="color:orange">$raiders[_r].dmg_taken</span> Physical damage and <span style="color:fuchsia">$raiders[_r].sex_taken</span> Sexual damage to her.</li>\
<<elseif $this_room.name === "Alpha Wolf">>\
<li>The $this_room.name leapt on her, dominating her and dealing <span style="color:orange">$raiders[_r].dmg_taken</span> Physical damage and <span style="color:fuchsia">$raiders[_r].sex_taken</span> Sexual damage to her.</li>\
<<elseif $this_room.name === "Stalking Wolf">>\
<li>The $this_room.name waited for the perfect moment before striking, dealing <span style="color:orange">$raiders[_r].dmg_taken</span> Physical damage and <span style="color:fuchsia">$raiders[_r].sex_taken</span> Sexual damage to her.</li>\
<<elseif $this_room.name === "Werewolf">>\
<li>The $this_room.name picked her up and used her like a cock sleeve, dealing <span style="color:orange">$raiders[_r].dmg_taken</span> Physical damage and <span style="color:fuchsia">$raiders[_r].sex_taken</span> Sexual damage to her.</li>\
<</if>>\
<<if _cannotAttackBool === true>>\
<li>She was defeated before she could attack the $this_room.name.</li>\
<</if>>\
<<RaiderFetishText $raiders[_r] $this_room>>
<</if>>\
<<PostCombatText $raiders[_r] $this_room>>
</ul>\
</div>\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\ <div class="titlebox">\
$upgrade_room.name Upgrades
</div>\
<div class="upgrade-textbox">\
Upgrades available at level $upgrade_room.upgrade_level
</div>\
<<for _i = 0; _i < $upgrade_room.upgrade_list.length; _i++>>\
<<set _hotKey to _i + 1>>\
<div class="upgrade-cardholder">\
<div class="upgrade-card-green">\
<div class="upgrade-titlebox">\
$upgrade_room.upgrade_list[_i].name
</div>\
<div class="upgrade-picbox-creature">\
$upgrade_room.upgrade_list[_i].pic
</div>\
<div class="upgrade-infobox-creature">\
$upgrade_room.upgrade_list[_i].info
</div>\
<div class="upgrade-buttonbox">\
<<capture _i, _hotKey>>\
<span @id="_hotKey"><<button "Preview ^^_hotKey^^" "Upgrade Confirm">><<set $upgrade_choice to clone($upgrade_room.upgrade_list[_i])>><</button>></span>
<</capture>>
</div>\
</div>\
</div>\
<</for>>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|$sent_from]]>><<unset $upgrade_room, $sent_from>><</button>></span>
</div>\
<<silently>>\
* Variables *
<<set _floor_names to ["Floor One", "Floor Two", "Floor Three", "Floor Four", "Floor Five", "Floor Six", "Floor Seven", "Floor Eight", "Floor Nine", "Floor Ten", "Floor Eleven", "Floor Twelve"]>> Display name for each room
* Upgraded Room *
INFORMATION
<<set $upgrade_room.name to $upgrade_choice.name>>
<<set $upgrade_room.pic to $upgrade_choice.pic>>
<<set $upgrade_room.raider_pics to $upgrade_choice.raider_pics>>
<<set $upgrade_room.description to $upgrade_choice.description>>
<<set $upgrade_room.capture_entry to $upgrade_choice.capture_entry>>
<<set $upgrade_room.defeat_entry to $upgrade_choice.defeat_entry>>
COMBAT STATS
<<set $upgrade_room.max_hp += $upgrade_choice.hp>>
<<set $upgrade_room.cur_hp to $upgrade_room.max_hp>>
<<set $upgrade_room.atk += $upgrade_choice.atk>>
<<set $upgrade_room.pres += $upgrade_choice.pres>>
<<set $upgrade_room.mres += $upgrade_choice.mres>>
<<set $upgrade_room.sex += $upgrade_choice.sex>>
<<set $upgrade_room.rate += $upgrade_choice.rate>>
<<set $upgrade_room.targets to $upgrade_choice.targets>>
<<set $upgrade_room.attack_type to $upgrade_choice.attack_type>>
OTHER STATS
<<set $upgrade_room.upgraded to true>>
<<set $upgrade_room.base_upkeep to Math.round($upgrade_room.base_upkeep * setup.creature_upkeep_mod)>>
<<set $upgrade_room.upkeep to Math.trunc($upgrade_room.base_upkeep + ($upgrade_room.base_upkeep * (setup.creature_upkeep_float * ($upgrade_room.level - 1))))>>
<<set $upgrade_room.growth_rate += setup.creature_growthrate_mod>>
<<set $upgrade_room.next_level_exp to Math.round((($upgrade_room.level * $upgrade_room.level) + setup.creature_nextlevel_constant) * $upgrade_room.growth_rate)>>
<<set $upgrade_room.fetishes to $upgrade_choice.fetishes>>
<<set $upgrade_room.creature_types to $upgrade_choice.creature_types>>
<<set $upgrade_room.trap_types to $upgrade_choice.creature_types>>
* Display *
<<CreatureStats $upgrade_room>>
<<set _max_hp to Math.trunc($upgrade_room.max_hp)>>
<<set _atk to Math.trunc($upgrade_room.atk)>>
<<set _pres to Math.trunc($upgrade_room.pres)>>
<<set _mres to Math.trunc($upgrade_room.mres)>>
<<set _sex to Math.trunc($upgrade_room.sex)>>
<<CreatureDescription $upgrade_room>>
<</silently>>\
<div class="section">\
<div class="cardholder-picside">\
<div class="picbox-inforoom-green">\
<div class="titlebox-abovepic">\
Preview
</div>\
<div class="textboxlarge-abovepic">\
<strong>$upgrade_room.name</strong>
</div>\
<div class="textbox-abovepic">\
<<hovertip "$upgrade_room.exp / $upgrade_room.next_level_exp">>Lvl. $upgrade_room.level<</hovertip>>
</div>\
<div class="textbox-abovepic">\
Upkeep: <span style="color:gold">$upgrade_room.upkeep Gold</span>
</div>\
<div class="picbox-inforoom">\
$upgrade_room.pic
</div>\
<div class="statusbox-belowpic">\
</div>\
</div>\
</div>\
<div class="cardholder-infoside">\
<div class="textbox-inforoom-green">\
<div class="description-stats">\
<div align='center'><span style="font-size: 115%;"><strong>$upgrade_room.name</strong></span></div>\
$upgrade_room.description
</div>\
<div class="table-stats">\
<div class="cell-stats">\
<u>Creature Type</u>
$upgrade_room.creature_types
</div>\
<div class="cell-stats">\
<<set _num to $upgrade_choice.hp + $upgrade_room.cur_max_hp - Math.trunc($upgrade_room.max_hp)>>\
<span class="health"><u>Health</u>
$upgrade_room.cur_hp / $upgrade_room.cur_max_hp</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
</div>\
<div class="cell-stats">\
<<set _num to $upgrade_choice.atk + $upgrade_room.cur_atk - Math.trunc($upgrade_room.atk)>>\
<<if $upgrade_room.attack_type === "Physical">>\
<span style="color:orange"><u>Physical Attack</u>
$upgrade_room.cur_atk</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
<<elseif $upgrade_room.attack_type === "Magical">>\
<span style="color:deepskyblue"><u>Magical Attack</u>
$upgrade_room.cur_atk</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
<</if>>\
</div>\
<div class="cell-stats">\
<<set _num to $upgrade_choice.sex + $upgrade_room.cur_sex - Math.trunc($upgrade_room.sex)>>\
<span style="color:fuchsia"><u>Sexual Attack</u>
$upgrade_room.cur_sex</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
</div>\
<div class="cell-stats">\
<<set _num to $upgrade_choice.pres + $upgrade_room.cur_pres - Math.trunc($upgrade_room.pres)>>\
<span style="color:yellow"><u>Physical Resistance</u>
$upgrade_room.cur_pres</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
</div>\
<div class="cell-stats">\
<<set _num to $upgrade_choice.mres + $upgrade_room.cur_mres - Math.trunc($upgrade_room.mres)>>\
<span style="color:rebeccapurple"><u>Magical Resistance</u>
$upgrade_room.cur_mres</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
</div>\
<div class="longcell-stats">\
<u><strong>Fetishes</strong></u>
<<if $upgrade_room.fetishes.length === 0>>\
None
<<else>>\
$upgrade_room.fetishes
<</if>>\
</div>\
<div class="shortcell-stats">\
<u>Raiders Fought</u>
$upgrade_room.total_raiders
</div>\
<div class="shortcell-stats">\
<u>Raiders Captured</u>
$upgrade_room.total_captures
</div>\
<div class="shortcell-stats">\
<u>Times Defeated</u>
$upgrade_room.total_deaths
</div>\
<div class="shortcell-stats">\
<u>Damage Dealt</u>
$upgrade_room.total_dmgdealt
</div>\
<div class="shortcell-stats">\
<u>Lust Dealt</u>
$upgrade_room.total_sexdealt
</div>\
<div class="shortcell-stats">\
<u>Damage Taken</u>
$upgrade_room.total_dmgtaken
</div>\
</div>\
</div>\
<div class="linkbox-inforoom">\
<div class="linkbox-text">\
<<if $upgrade_room.level >= $upgrade_room.upgrade_level && $sent_from !== "Creature Preview">><span id="forward"><<button [[Upgrade|Dungeon Floor Manager]]>><<set $dungeon_floor_list[$display_room_num] to $upgrade_room>><<unset $upgrade_room, $upgrade_choice, $sent_from>><</button>></span><<else>><span class="offbutton"><<button "Upgrade">><</button>></span><</if>> <span id="back"><<button [[Back|Creature Upgrades]]>><<if $sent_from === "Creature Preview">><<set $upgrade_room to clone($preview)>><<else>><<set $upgrade_room to clone($display_creature)>><</if>><</button>></span>
</div>\
</div>\
</div>\
</div>\<<silently>>\
* NEXT LINK *
<<if $sent_from === "Trap Preview">>
<<set _link to "Trap Preview">>
<<set _cur_trap to clone($preview)>>
<<else>>
<<set _link to "Trap Room">>
<<set _cur_trap to clone($display_trap)>>
<</if>>
<</silently>>\
<div class="section">\
<div class="titlebox">\
_cur_trap.name Modes
</div>\
<div class="upgrade-textbox">\
Current Mode: _cur_trap.mode
</div>\
<<for _i = 0; _i < _cur_trap.mode_list.length; _i++>>\
<<set _hotKey to _i + 1>>\
<div class="upgrade-cardholder">\
<div class="upgrade-card-blue">\
<div class="upgrade-titlebox">\
_cur_trap.mode_list[_i].name
</div>\
<div class="upgrade-picbox-trap">\
_cur_trap.mode_list[_i].pic
</div>\
<div class="upgrade-infobox-trap">\
_cur_trap.mode_list[_i].info
</div>\
<div class="upgrade-buttonbox">\
<<if _cur_trap.mode === _cur_trap.mode_list[_i].name>>\
<div class="offbutton">\
<<button "Change Mode">><</button>>
</div>\
<<else>>\
<<capture _i, _hotKey>>\
<span @id="_hotKey"><<button "Change Mode ^^_hotKey^^" _link>>\
<<silently>>\
* INFORMATION *
<<set _cur_trap.mode to _cur_trap.mode_list[_i].name>>
<<set _cur_trap.pic to _cur_trap.mode_list[_i].pic>>
<<set _cur_trap.raider_pics to _cur_trap.mode_list[_i].raider_pics>>
<<set _cur_trap.description to _cur_trap.mode_list[_i].description>>
<<set _cur_trap.capture_entry to _cur_trap.mode_list[_i].capture_entry>>
<<set _cur_trap.defeat_entry to _cur_trap.mode_list[_i].defeat_entry>>
* STATS *
<<set _cur_trap.fetishes to _cur_trap.mode_list[_i].fetishes>>
<<if $sent_from === "Trap Preview">>
<<set $preview to clone(_cur_trap)>>
<<else>>
<<set $display_trap to clone(_cur_trap)>>
<</if>>
<</silently>>\
<</button>></span>
<</capture>>
<</if>>\
</div>\
</div>\
</div>\
<</for>>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|$sent_from]]>><<unset $sent_from>><</button>></span>
</div>\
</div>\<<silently>>\
*Variables*
<<set _floor_names to ["Room One", "Room Two", "Room Three", "Room Four", "Room Five", "Room Six", "Room Seven", "Room Eight", "Room Nine", "Room Ten"]>>
*Display*
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<<if $moving_index == null>>\
<span id="back"><<button [[Finish|Slave Room Manager]]>><</button>></span>
<<else>>\
<span id="back"><<button [[Back|Move Slave Rooms]]>><<unset $moving_room, $moving_index>><</button>></span>
<</if>>\
</div>\
<div class="tableholder-manager">\
<div class="titlebox">\
<<if $moving_index == null>>\
Select a Slave to move
<<else>>\
Select a different Slave
<</if>>\
</div>\
<<for _i = 0; _i < $slave_room_list.length; _i++>>\
<<set _hotKey to _i + 1>>\
<<if _hotKey === 10>>\
<<set _hotKey to 0>>\
<</if>>\
<div class="cell-slave-manager">\
<div class="cell-picholder-slave-manager">\
$slave_room_list[_i].pic
</div>\
<div class="cell-textholder-slave-manager">\
<div class="cell-namebox-slave-manager">\
<<- _floor_names[_i]>>
</div>\
<div class="cell-textbox-slave-manager">\
<<if _i == $moving_index>>\
<div class="offbutton">\
<<button "Selected">><</button>>
</div>\
<<elseif $moving_index == null>>\
<<if $slave_room_list[_i].built === true || $slave_room_list[_i].room_type === "Slave">>\
<<capture _i, _hotKey>>\
<span @id="_hotKey"><<button "Move ^^_hotKey^^" "Move Slave Rooms">><<set $moving_index to clone(_i)>><<set $moving_room to clone($slave_room_list[_i])>><</button>></span>
<</capture>>\
<<else>>\
<div class="offbutton">\
<<button "Move">><</button>>
</div>\
<</if>>\
<<else>>\
<<if $slave_room_list[_i].built === true || $slave_room_list[_i].room_type === "Slave">>\
<<capture _i, _hotKey>>\
<span @id="_hotKey"><<button "Move ^^_hotKey^^" "Move Slave Rooms">><<set $slave_room_list[$moving_index] to clone($slave_room_list[_i])>><<set $slave_room_list[_i] to clone($moving_room)>><<unset $moving_room, $moving_index>><</button>></span>
<</capture>>\
<<else>>\
<div class="offbutton">\
<<button "Move">><</button>>
</div>\
<</if>>\
<</if>>\
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\
<<silently>>\
* Variables *
<<if $treasure_page == null>>
<<set $treasure_page to 0>>
<</if>>
<<if $player_treasure_list == null>>
<<set $player_treasure_list to setup.common_treasure_list.concat(setup.uncommon_treasure_list, setup.rare_treasure_list)>>
<</if>>
<<for _i = 0; _i < $player_treasure_list.length; _i++>>
SEARCHING FOR $player_treasure_list[_i].name
<<set $player_treasure_list[_i].count to $treasureroom_inventory.count($player_treasure_list[_i].name)>>
<<if $player_treasure_list[_i].count <= 0>>
FOUND NONE
<<set _delete to $player_treasure_list.deleteAt(_i)>>
<<set _i-->>
<</if>>
<</for>>
<<set _treasure_per_page to 8>> the number of treasures that can be on each page, starting count from 0
<<set _start_pos to _treasure_per_page * $treasure_page>> Set where to start the list based on what the page is
<<if _start_pos + _treasure_per_page < $player_treasure_list.length>>
<<set _end_pos to _start_pos + _treasure_per_page>> Set where to end the list based on what the page is
<<else>>
<<set _end_pos to $player_treasure_list.length>>
<</if>>
* Sorting Bools *
<<if $count_sorted == null>>
<<set $count_sorted to false>>
<</if>>
<<if $name_sorted == null>>
<<set $name_sorted to false>>
<</if>>
<<if $value_sorted == null>>
<<set $value_sorted to false>>
<<set $player_treasure_list.sort(function (a, b) { return b.gold - a.gold; });>>
<</if>>
* Display *
<</silently>>\
<div class="titlebox">\
Treasure Vault
</div>\
<div class="subtitle-treasure-vault">\
<<if $treasureroom_inventory.length <= 0>>\
@@.bad;$treasureroom_inventory.length@@ / $treasureroom_size Treasure
<<else>>\
$treasureroom_inventory.length / $treasureroom_size Treasure
<</if>>\
</div>\
<div class="button-treasure-list">\
<<if $treasure_page > 0>>\
<div class="tallbutton">\
<span id="left"><<button [[<|Treasure Vault Manager]]>><<set $treasure_page-->><</button>></span>
</div>\
<</if>>\
</div>\
<div class="cardholder-treasure-vault">\
<div class="headerholder-treasure-vault">\
<div class="header-count-treasure-vault">\
<span id="c"><<button "<u>C</u>ount" "Treasure Vault Manager">>\
<<silently>>\
<<if $count_sorted === false>>
<<set $player_treasure_list.sort(function (a, b) { return b.count - a.count; });>>
<<set $count_sorted to true>>
<<set $name_sorted to false>>
<<set $value_sorted to false>>
<<else>>
<<set $player_treasure_list.sort(function (a, b) { return a.count - b.count; });>>
<<set $count_sorted to false>>
<<set $name_sorted to false>>
<<set $value_sorted to false>>
<</if>>
<</silently>>\
<</button>></span>\
</div>\
<div class="header-name-treasure-vault">\
<span id="n"><<button "<u>N</u>ame" "Treasure Vault Manager">>\
<<silently>>\
<<if $name_sorted === false>>
<<set $count_sorted to false>>
<<set $name_sorted to true>>
<<set $value_sorted to false>>
<<set $player_treasure_list.sort(function (a, b) {
var
nameA = a.name.toUpperCase(),
nameB = b.name.toUpperCase();
if (nameA < nameB) {
return -1;
}
else if (nameA > nameB) {
return 1;
}
return 0;
});>>
<<else>>
<<set $count_sorted to false>>
<<set $name_sorted to false>>
<<set $value_sorted to false>>
<<set $player_treasure_list.sort(function (a, b) {
var
nameA = a.name.toUpperCase(),
nameB = b.name.toUpperCase();
if (nameA > nameB) {
return -1;
}
else if (nameA < nameB) {
return 1;
}
return 0;
});>>
<</if>>
<</silently>>\
<</button>></span>
</div>\
<div class="header-description-treasure-vault">\
<strong>Description</strong>
</div>\
<div class="header-value-treasure-vault">\
<span id="v"><<button "<u>V</u>alue" "Treasure Vault Manager">>\
<<silently>>\
<<if $value_sorted === false>>
<<set $player_treasure_list.sort(function (a, b) { return b.gold - a.gold; });>>
<<set $count_sorted to false>>
<<set $name_sorted to false>>
<<set $value_sorted to true>>
<<else>>
<<set $player_treasure_list.sort(function (a, b) { return a.gold - b.gold; });>>
<<set $count_sorted to false>>
<<set $name_sorted to false>>
<<set $value_sorted to false>>
<</if>>
<</silently>>\
<</button>></span>\
</div>\
<div class="header-button-treasure-vault">\
<<set _cur_page to $treasure_page + 1>>\
<<if $player_treasure_list.length === 0>>\
<<set _cur_page to 0>>\
<</if>>\
<<set _tot_pages to Math.trunc(($player_treasure_list.length / _treasure_per_page) + 0.99)>>\
Page
_cur_page / _tot_pages
</div>\
</div>\
<div class="cellholder-treasure-vault">\
<<for _i = _start_pos; _i < _end_pos; _i++>>\
<<silently>>\
* Set Base Cost *
<<set _cost to clone(setup.treasure_cost[$player_treasure_list[_i].rarity])>>
* Set Cost *
<<set $player_treasure_list[_i].gold to clone(_cost)>>
<</silently>>\
<div class="cell-count-treasure-vault">\
$player_treasure_list[_i].count
</div>\
<div class="cell-name-treasure-vault">\
<span @style="$player_treasure_list[_i].rarity">$player_treasure_list[_i].name</span>
</div>\
<div class="cell-description-treasure-vault">\
$player_treasure_list[_i].tooltip
</div>\
<div class="cell-value-treasure-vault">\
@@.gold;$player_treasure_list[_i].gold Gold@@
</div>\
<div class="cell-button-treasure-vault">\
<<if $player_treasure_list[_i].active.includes("raid")>>\
<<capture _i>>\
<<button "Use" "Treasure Vault Manager">>
<<silently>>\
<<UseTreasure $player_treasure_list[_i]>>
<<for _z = 0; _z < $treasureroom_inventory.length; _z++>>
<<if $treasureroom_inventory[_z] === $player_treasure_list[_i].name>>
<<set _destoryed to $treasureroom_inventory.deleteAt(_z)>>
<<break>>
<</if>>
<</for>>
<</silently>>\
<</button>>\
<</capture>>\
<<else>>\
<div class="offbutton">\
<<button "Use">><</button>>
</div>\
<</if>>\
</div>\
<</for>>\
</div>\
</div>\
<div class="button-treasure-list">\
<<if $player_treasure_list.length > _end_pos>>\
<div class="tallbutton">\
<span id="right"><<button [[>|Treasure Vault Manager]]>><<set $treasure_page++>><</button>></span>
</div>\
<</if>>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Between Rooms]]>><<unset $player_treasure_list, $treasure_page>><</button>></span>
</div>\<<widget "GeneralCaptureImgs">>
IMAGES THAT ARE USED IF CREATURE ATTACKS DOESNT DEAL SEXUAL DAMAGE AND CAN CAPTURE
<<set _raiderCaptureImgs to {
slender: ["[img[images/misc/defeated/slender/0.jpg]]", "[img[images/misc/defeated/slender/1.jpg]]", "[img[images/misc/defeated/slender/2.jpg]]", "[img[images/misc/defeated/slender/3.jpg]]", "[img[images/misc/defeated/slender/4.jpg]]"],
average: ["[img[images/misc/defeated/average/0.jpg]]", "[img[images/misc/defeated/average/1.jpg]]", "[img[images/misc/defeated/average/2.jpg]]", "[img[images/misc/defeated/average/3.jpg]]", "[img[images/misc/defeated/average/4.jpg]]"],
busty: ["[img[images/misc/defeated/busty/0.jpg]]", "[img[images/misc/defeated/busty/1.jpg]]", "[img[images/misc/defeated/busty/2.jpg]]", "[img[images/misc/defeated/busty/3.jpg]]", "[img[images/misc/defeated/busty/4.jpg]]"]
}>>
<</widget>><<silently>>
*Variables*
<</silently>>\
<div class="section">\
<div class="cardholder-picside">\
<div class="picbox-inforoom-violet">\
<div class="buttonbox-slaveroom">\
</div>\
<div class="titlebox-abovepic-slaveroom">\
Selling Slave
</div>\
<div class="buttonbox-slaveroom">\
</div>\
<div class="textbox-abovepic-slaveroom">\
<strong>$cur_slave.name</strong>
</div>\
<div class="textbox-abovepic-slaveroom">\
Upkeep: <span class="gold">$cur_slave.upkeep Gold</span>
</div>\
<div class="picbox-slaveroom">\
$cur_slave.body_pic
</div>\
<div class="statusbox-belowpic-slaveroom">\
<<if $cur_slave.injured === true>>\
<<hovertip "<<-setup.slave_statuses.injured.tooltip>>">><<-setup.slave_statuses.injured.icon>><</hovertip>>
<</if>>\
<<if $cur_slave.disobedient === true>>\
<<hovertip "<<-setup.slave_statuses.disobedient.tooltip>>">><<-setup.slave_statuses.disobedient.icon>><</hovertip>>
<</if>>\
<<if $cur_slave.scolded_bool === true>>\
<<hovertip "<<-setup.slave_statuses.scolded.tooltip>>">><<-setup.slave_statuses.scolded.icon>><</hovertip>>
<</if>>\
<<if $cur_slave.dayoff_bool === true>>\
<<hovertip "<<-setup.slave_statuses.dayoff.tooltip>>">><<-setup.slave_statuses.dayoff.icon>><</hovertip>>
<</if>>\
</div>\
</div>\
</div>\
<div class="cardholder-infoside">\
<div class="textbox-inforoom-violet">\
<div class="status-textbox-slave">\
WORDS WORDS WORDS
</div>\
<div class="stats-container-slave">\
<div class="stats-titlebox-slave">\
Stats
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.love.tooltip>>">><<-setup.slave_stats.love.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.love_tracker / $cur_slave.love_tracker_limit<br>Max: $cur_slave.love_limit">>@@.love;$cur_slave.love@@<</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.obedience.tooltip>>">><<-setup.slave_stats.obedience.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.obedience_tracker / $cur_slave.obedience_tracker_limit<br>Max: $cur_slave.obedience_limit">>@@.obedience;$cur_slave.obedience@@<</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.libido.tooltip>>">><<-setup.slave_stats.libido.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.libido_tracker / $cur_slave.libido_tracker_limit<br>Max: $cur_slave.libido_limit">>@@.libido;$cur_slave.libido@@<</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.strength.tooltip>>">><<-setup.slave_stats.strength.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.strength_tracker / $cur_slave.strength_tracker_limit<br>Max: $cur_slave.strength_limit">>@@.strength;$cur_slave.strength@@<</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.intelligence.tooltip>>">><<-setup.slave_stats.intelligence.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.intelligence_tracker / $cur_slave.intelligence_tracker_limit<br>Max: $cur_slave.intelligence_limit">>@@.intelligence;$cur_slave.intelligence@@<</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.stress.tooltip>>">><<-setup.slave_stats.stress.icon>><</hovertip>>
<strong>@@.stress;$cur_slave.cur_stress@@</strong>
</div>\
<div class="stats-titlebox-slave">\
Traits
</div>\
<div class="stats-bigcell-slave">\
<<for _t = 0; _t < $cur_slave.traits.length; _t++>>\
<<print '<span style="color:'+$cur_slave.traits[_t].color+'"><<hovertip "$cur_slave.traits[_t].tooltip">>$cur_slave.traits[_t].name<</hovertip>></span>'>><<if _t + 1 < $cur_slave.traits.length>>, <</if>>\
<</for>>\
</div>\
</div>\
<div class="rec-skill-container-slave">\
<div class="rec-titlebox-slave">\
Sex Skills
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.handjob_tracker / $cur_slave.handjob_tracker_limit<br>Max: $cur_slave.handjob_limit">>Handjobs
$cur_slave.handjob<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.blowjob_tracker / $cur_slave.blowjob_tracker_limit<br>Max: $cur_slave.blowjob_limit">>Blowjobs
$cur_slave.blowjob<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.titjob_tracker / $cur_slave.titjob_tracker_limit<br>Max: $cur_slave.titjob_limit">>Titjobs
$cur_slave.titjob<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.footjob_tracker / $cur_slave.footjob_tracker_limit<br>Max: $cur_slave.footjob_limit">>Footjobs
$cur_slave.footjob<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.missionary_tracker / $cur_slave.missionary_tracker_limit<br>Max: $cur_slave.missionary_limit">>Missionary
$cur_slave.missionary<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.cowgirl_tracker / $cur_slave.cowgirl_tracker_limit<br>Max: $cur_slave.cowgirl_limit">>Cowgirl
$cur_slave.cowgirl<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.doggy_tracker / $cur_slave.doggy_tracker_limit<br>Max: $cur_slave.doggy_limit">>Doggy
$cur_slave.doggy<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.anal_tracker / $cur_slave.anal_tracker_limit<br>Max: $cur_slave.anal_limit">>Anal
$cur_slave.anal<</hovertip>>
</div>\
</div>\
</div>\
<div class="linkbox-enslave">\
<div class="linkbox-text">\
Are you sure you want to Sell $cur_slave.name for @@.gold;$cur_slave.value Gold@@?
<span id="forward"><<button [[Yes|Slave Market]]>>\
<<silently>>\
SPEND GOLD
<<set $pc_gold += $cur_slave.value>>
ADD SLAVE BACK TO MARKET
<<set $slave_market_list.push($cur_slave)>>
REMOVE SLAVE FROM ROOM
<<set $slave_room_list[$index] to setup.empty_cell>>
STATS
<<set $pc_slaves_sold++>>
<<set $pc_gold_earned_other += $cur_slave.value>>
<<if $cur_slave.value > $pc_highest_slave_sold>>
<<set $pc_highest_slave_sold to $cur_slave.value>>
<</if>>
BOUGHT BOOl
<<set $sold_slave_bool to true>>
UNSET
<<unset $cur_slave, $index, $slave_info>>
SET PAGE TO 0
<<set $slave_market_page to 0>>
<</silently>>\
<</button>></span> <span id="back"><<button [[No|Sell Slave]]>><</button>></span>
</div>\
</div>\
</div>\
</div>\<<silently>>\
* Variables *
* Reset Trigger *
<<set $reputation_nextrank_trigger to false>>
* Increase Rank *
<<set $dungeon_rank++>>
* Increase Max Reputation *
<<set $dungeon_reputation to 0>>
<<switch $dungeon_rank>>
<<case 2>>
RANK 2
<<set $reputation_rankup_amount to setup.reputation_rank3>>
<<case 3>>
RANK 3
<<set $reputation_rankup_amount to setup.reputation_rank4>>
<<case 4>>
RANK 4
<<set $reputation_rankup_amount to setup.reputation_rank5>>
<<case 5>>
RANK 5
<<set $reputation_rankup_amount to setup.reputation_reward>>
<</switch>>
* Half Threat *
<<set $dungeon_threat to Math.round($dungeon_threat / 2)>>
* Increase Player Level Cap *
<<set $pc_levelcap += setup.pc_levelcap>>
* Increase Creature Level Cap *
<<set $creature_levelcap += setup.creature_levelcap>>
* Increase Trap Room Level *
<<for _i = 0; _i < $dungeon_floor_list.length; _i++>>
<<if $dungeon_floor_list[_i].room_type === "Trap">>
<<if $dungeon_floor_list[_i].level < $dungeon_rank>>
INCREASE LEVEL
<<set $dungeon_floor_list[_i].level++>>
INCREASE STATS
<<set $dungeon_floor_list[_i].atk += $dungeon_floor_list[_i].atk_per_level>>
<<set $dungeon_floor_list[_i].sex += $dungeon_floor_list[_i].sex_per_level>>
<<set $dungeon_floor_list[_i].check += $dungeon_floor_list[_i].check_per_level>>
<</if>>
<</if>>
<</for>>
* Add New Blessings *
* Add New Quests *
* Add New Classes *
* Add New Spells *
* Add New Jobs *
* Increase Number of Slaves in Market *
<<set $slave_market_count_min += setup.slave_market_count>>
<<set $slave_market_count_max += setup.slave_market_count>>
* Increase Chance for rarer Slaves in Market *
<<set $slave_market_percent.master += 1>>
<<set $slave_market_percent.veteran += 2>>
<<set $slave_market_percent.expert += 4>>
<<set $slave_market_percent.adept += 8>>
<<set $slave_market_percent.novice += 16>>
* Increase Number of Classes Posted *
<<set $min_classes_posted += setup.classes_posted>>
<<set $max_classes_posted += setup.classes_posted>>
* Increase Number of Raiders Hired in Guild *
<<set $max_hire_count += $guild_hire_count>>
<<set $cur_hire_count += $guild_hire_count>>
* Increase Number of Quests Posted in Guild *
<<set $min_quests_posted += setup.quests_posted>>
<<set $max_quests_posted += setup.quests_posted>>
* Add New Hints *
<<switch $dungeon_rank>>
<<case 2>>
RANK 2
<<case 3>>
RANK 3
<<case 4>>
RANK 4
<<case 5>>
RANK 5
<</switch>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Rank Up!
</div>\
<div class="imagebox">\
[img[images/mistress/body_12.jpg]]
</div>\
<div class="textbox">\
Your max Level has increased to $pc_levelcap
Your Creature's max Level has increased to $creature_levelcap
Your Trap's Rank has increased by 1
New Creatures, Traps, and Blessings are available from the Goddess
New Jobs are available for your Slaves
Town Shops have improved
</div>\
<div class="exit-link-right">\
<<button [[Next|Rank Up Reward]]>><</button>>
</div>\
</div>\<<silently>>\
* Variables *
<<if $treasure_page == null>>
<<set $treasure_page to 0>>
<</if>>
<<if $player_treasure_list == null>>
<<set $player_treasure_list to setup.common_treasure_list.concat(setup.uncommon_treasure_list, setup.rare_treasure_list)>>
<</if>>
<<for _i = 0; _i < $player_treasure_list.length; _i++>>
SEARCHING FOR $player_treasure_list[_i].name
<<set $player_treasure_list[_i].count to $treasureroom_inventory.count($player_treasure_list[_i].name)>>
<<if $player_treasure_list[_i].count <= 0>>
FOUND NONE
<<set _delete to $player_treasure_list.deleteAt(_i)>>
<<set _i-->>
<</if>>
<</for>>
<<set _treasure_per_page to 8>> the number of treasures that can be on each page, starting count from 0
<<set _start_pos to _treasure_per_page * $treasure_page>> Set where to start the list based on what the page is
<<if _start_pos + _treasure_per_page < $player_treasure_list.length>>
<<set _end_pos to _start_pos + _treasure_per_page>> Set where to end the list based on what the page is
<<else>>
<<set _end_pos to $player_treasure_list.length>>
<</if>>
* Sorting Bools *
<<if $count_sorted == null>>
<<set $count_sorted to false>>
<</if>>
<<if $name_sorted == null>>
<<set $name_sorted to false>>
<</if>>
<<if $value_sorted == null>>
<<set $value_sorted to false>>
<<set $player_treasure_list.sort(function (a, b) { return b.gold - a.gold; });>>
<</if>>
* Display *
<</silently>>\
<div class="titlebox">\
Vault
</div>\
<div class="subtitle-treasure-vault">\
<<if $treasureroom_inventory.length > $treasureroom_size>>\
@@.bad;$treasureroom_inventory.length@@ / $treasureroom_size Treasure
<<else>>\
$treasureroom_inventory.length / $treasureroom_size Treasure
<</if>>\
<<if $treasureroom_count >= setup.max_vault_expand>>\
<div class="offbutton">\
<<button "Max Size">><</button>>
</div>\
<<elseif $treasureroom_count >= $dungeon_rank>>\
<<set _num to $dungeon_rank + 1>>\
<div class="offbutton">\
<<hovertip "Requires Dungeon Rank _num">><<button "Expand Vault">><</button>><</hovertip>>
</div>\
<<else>>\
<span id="e"><<button "<u>E</u>xpand Vault" "Expand Vault">><</button>></span>
<</if>>\
</div>\
<div class="button-treasure-list">\
<<if $treasure_page > 0>>\
<div class="tallbutton">\
<span id="left"><<button [[<|View Treasure Inventory]]>><<set $treasure_page-->><</button>></span>
</div>\
<</if>>\
</div>\
<div class="cardholder-treasure-vault">\
<div class="headerholder-treasure-vault">\
<div class="header-count-treasure-vault">\
<span id="c"><<button "<u>C</u>ount" "View Treasure Inventory">>\
<<silently>>\
<<if $count_sorted === false>>
<<set $player_treasure_list.sort(function (a, b) { return b.count - a.count; });>>
<<set $count_sorted to true>>
<<set $name_sorted to false>>
<<set $value_sorted to false>>
<<else>>
<<set $player_treasure_list.sort(function (a, b) { return a.count - b.count; });>>
<<set $count_sorted to false>>
<<set $name_sorted to false>>
<<set $value_sorted to false>>
<</if>>
<</silently>>\
<</button>></span>\
</div>\
<div class="header-name-treasure-vault">\
<span id="n"><<button "<u>N</u>ame" "View Treasure Inventory">>\
<<silently>>\
<<if $name_sorted === false>>
<<set $count_sorted to false>>
<<set $name_sorted to true>>
<<set $value_sorted to false>>
<<set $player_treasure_list.sort(function (a, b) {
var
nameA = a.name.toUpperCase(),
nameB = b.name.toUpperCase();
if (nameA < nameB) {
return -1;
}
else if (nameA > nameB) {
return 1;
}
return 0;
});>>
<<else>>
<<set $count_sorted to false>>
<<set $name_sorted to false>>
<<set $value_sorted to false>>
<<set $player_treasure_list.sort(function (a, b) {
var
nameA = a.name.toUpperCase(),
nameB = b.name.toUpperCase();
if (nameA > nameB) {
return -1;
}
else if (nameA < nameB) {
return 1;
}
return 0;
});>>
<</if>>
<</silently>>\
<</button>></span>
</div>\
<div class="header-description-treasure-vault">\
<strong>Description</strong>
</div>\
<div class="header-value-treasure-vault">\
<span id="v"><<button "<u>V</u>alue" "View Treasure Inventory">>\
<<silently>>\
<<if $value_sorted === false>>
<<set $player_treasure_list.sort(function (a, b) { return b.gold - a.gold; });>>
<<set $count_sorted to false>>
<<set $name_sorted to false>>
<<set $value_sorted to true>>
<<else>>
<<set $player_treasure_list.sort(function (a, b) { return a.gold - b.gold; });>>
<<set $count_sorted to false>>
<<set $name_sorted to false>>
<<set $value_sorted to false>>
<</if>>
<</silently>>\
<</button>></span>\
</div>\
<div class="header-button-treasure-vault">\
<<set _cur_page to $treasure_page + 1>>\
<<if $player_treasure_list.length === 0>>\
<<set _cur_page to 0>>\
<</if>>\
<<set _tot_pages to Math.trunc(($player_treasure_list.length / _treasure_per_page) + 0.99)>>\
Page
_cur_page / _tot_pages
</div>\
</div>\
<div class="cellholder-treasure-vault">\
<<for _i = _start_pos; _i < _end_pos; _i++>>\
<<silently>>\
* Set Base Cost *
<<set _cost to clone(setup.treasure_cost[$player_treasure_list[_i].rarity])>>
* Set Cost *
<<set $player_treasure_list[_i].gold to clone(_cost)>>
<</silently>>\
<div class="cell-count-treasure-vault">\
$player_treasure_list[_i].count
</div>\
<div class="cell-name-treasure-vault">\
<span @class="$player_treasure_list[_i].rarity">$player_treasure_list[_i].name</span>
</div>\
<div class="cell-description-treasure-vault">\
$player_treasure_list[_i].tooltip
</div>\
<div class="cell-value-treasure-vault">\
@@.gold;$player_treasure_list[_i].gold Gold@@
</div>\
<div class="cell-button-treasure-vault">\
</div>\
<</for>>\
</div>\
</div>\
<div class="button-treasure-list">\
<<if $player_treasure_list.length > _end_pos>>\
<div class="tallbutton">\
<span id="right"><<button [[>|View Treasure Inventory]]>><<set $treasure_page++>><</button>></span>
</div>\
<</if>>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Player's Stats]]>><<unset $player_treasure_list, $treasure_page>><</button>></span> <span id="s"><<button "<u>S</u>ell Treasure" "Treasure Shop">><<set $treasureshop_mode to "Sell">><<unset $player_treasure_list, $treasure_page>><</button>></span>
</div>\ <<if $missionLog.goddess.completed === true && $missionLog.goddess.num === 0>>\
<<set $reward_page to 1>>\
<<goto "Goddess Reward">>\
<<else>>\
<<silently>>\
* Variables *
<<set $onsen.construction_bool to false>>
<<set _hotKey to 0>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Onsen
</div>\
<div class="cardholder-building">\
<div class="imagebox-building">\
[img[images/rooms/onsen.jpg]]
</div>\
</div>\
<div class="cardholder-building">\
<div class="textbox-building">\
<<if $onsen.users.length === 0 && $onsen.goddess_bool === false>>\
There is nobody using the Onsen right now.
<<elseif $onsen.goddess_bool === true && $onsen.users.length > 0>>\
Ahri and $onsen.users.length of your Slaves are using the Onsen.
<<elseif $onsen.users.length > 0 >>\
$onsen.users.length of your Slaves are using the Onsen.
<</if>>\
$onsen.description
Joining someone in the Onsen costs @@.energy;1 Energy@@.
</div>\
<div class="buttoncontainer-building">\
<<if $onsen.goddess_bool === true>>\
<<set _hotKey++>>\
<div class="buttonbox-building">\
<<if $pc_cur_energy > 0>>\
<<capture _hotKey>>\
<span @id="_hotKey"><<button "Join Ahri ^^_hotKey^^" "Ahri Onsen">><</button>></span>
<</capture>>\
<<else>>\
<div class="offbutton">\
<<button "Join Ahri">><</button>>
</div>\
<</if>>\
</div>\
<</if>>\
<<if $onsen.users.length > 0>>\
<<for _z = 0; _z < $slave_room_list.length; _z++>>\
<<if $slave_room_list[_z].room_type === "Slave">>\
<<if $onsen.users.includes($slave_room_list[_z].index)>>\
<<set _hotKey++>>\
<div class="buttonbox-building">\
<<if $pc_cur_energy > 0>>\
<<capture _z. _hotKey>>\
<span @id="_hotKey"><<button "Join $slave_room_list[_z].name ^^_hotKey^^" "Slave Onsen">><<set $slave_pos to _z>><<set $sex_type to "">><</button>></span>
<</capture>>\
<<else>>\
<div class="offbutton">\
<<button "Join $slave_room_list[_z].name">><</button>>
</div>\
<</if>>\
</div>\
<</if>>\
<</if>>\
<</for>>\
<</if>>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Amenities]]>><</button>></span> <span id="q"><<button "<u>Q</u>uick Menu" "Quick Menu">><</button>></span>\
</div>\
</div>\
<</if>>\<<silently>>\
* Variables *
* Display*
<</silently>>\
<div class="section">\
<div class="titlebox">\
Building an Onsen
</div>\
<div class="cardholder-building">\
<div class="imagebox-building">\
[img[images/rooms/onsen.jpg]]
</div>\
</div>\
<div class="cardholder-building">\
<div class="textbox-building">\
Cost: <span style="color:gold">$onsen.cost Gold</span>
Takes $onsen.construction_time days to build.
$onsen.description
<<if $pc_gold >= $onsen.cost>>\
<span id="forward"><<button [[Build Onsen|Amenities]]>><<set $pc_gold -= $onsen.cost>><<set $pc_rooms_gold_spent += $onsen.cost>><<set $onsen.construction to true>><</button>></span>
<<else>>\
<div class="offbutton">\
<<button "Build Onsen">><</button>>
</div>\
<</if>>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Amenities]]>><</button>></span>
</div>\
</div>\<<if $missionLog.goddess.num === 0>>\
<<set $missionName to setup.goddessMisLine[$missionLog.goddess.num].name>>\
<<switch $reward_page>>\
<<case 1>>\
<div class="section">\
<div class="titlebox">\
$missionName
</div>\
<div class="picbox-intro">\
[img[images/mistress/onsen_1.jpg]]
</div>\
<div class="textbox-intro">\
You walk into the newly built onsen to find Ahri already making good use of it. As you approach, she sits on the edge of the onsen and faces you, fully exposing her body to you.
<span class="npc-dialogue">Isn't this great, $pc_name? Now you can finally clean yourself after a hard day of work. Honestly, I wasn't sure how much longer I could stand your stench.</span>
<span class="pc-dialogue">Yes, yes, great idea. I'm so glad your top priority was my personal hygiene.</span>
<span class="npc-dialogue">As the chosen Dungeon Lord of my dungeon, it is important to properly represent me. First impressions are the most important you know. Now come, let me make sure you clean yourself properly.</span>
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[Next|Goddess Reward]]>><<set $reward_page++>><</button>></span>
</div>\
</div>\
<<case 2>>\
<div class="section">\
<div class="titlebox">\
$missionName
</div>\
<div class="picbox-intro">\
[img[images/mistress/onsen_0.jpg]]
</div>\
<div class="textbox-intro">\
You undress and slide into the onsen with your back against the wall under Ahri. She begins pouring water over you and scrubbing your body with a cloth, making sure you feel her body press against you as she works. She moves in front of you as she continues to clean your body, tracing her finger across your chest and down to your thigh before landing on your cock. She slides lower as her breasts caress your cock between them as she begins to lick the tip of your cock.
Ahri begins to move her breasts up and down, slowly, while continuing to lick your cock, nibbing on the side as she looked up at you, moving her hair behind her. She grabbed your leg and took your whole dick in her mouth as she began to move faster and faster. Being a goddess of lust, she could feel your libido and increased the pace she moved to match your energy. Once you were about to reach your limit, she moved her head back, allowing you to shower your cum over her face and tits. She remained over your cock and continued to lick around it as your cum crawled down her body. After awhile, she cleaned herself off and left you in a state of bliss.
<div class="text-center-bold">You have a new Onsen and gained <span class="le"><<- setup.goddessMisLine[$missionLog.goddess.num].lust_reward>> Lust Essence</span>.</div>
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Goddess Reward]]>><<set $reward_page-->><</button>></span> <span id="forward"><<button [[Next|Onsen]]>><<set $pc_lust += setup.goddessMisLine[$missionLog.goddess.num].lust_reward>><<set $missionLog.goddess.num++>><<set $missionLog.goddess.unlocked to false>><<set $missionLog.goddess.started to false>><<set $missionLog.goddess.completed to false>><<set $missionLog.goddess.int to 0>><<unset $reward_page, $missionName>><</button>></span>
</div>\
</div>\
<</switch>>\
<<elseif $missionLog.goddess.num === 1>>\
<</if>>\<<if $spell_targeting === true>>\
<<silently>>\
*Variables*
<<set _spell_percent_list to []>> Holds all the spell percent for each raider
*Calc Percent for each Raider*
<<for _i = 0; _i < $raiders.length; _i++>>
SET RAIDERS SPELL PERCENT
<<set _spell_percent_list.push($pc_spellbook[$spell_index].cur_check)>>
<</for>>
* Setup Raiders *
<<RaiderSetup $raiders>>
* Display Info *
<<set _cardholderID to "cardholder-"+$raiders.length+"girls">>
<<set _cardinfoID to "cardinfo-"+$raiders.length+"girls">>
<<set _picboxID to "picbox-"+$raiders.length+"girls">>
<<set _textboxID to "textbox-"+$raiders.length+"girls">>
<<set _linkboxID to "linkbox-targeting-"+$raiders.length+"girls">>
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<span id="back"><<button [[Back|View Spells]]>><<unset $mana_cost>><</button>></span>
</div>\
<div class="titlebox">\
Choose a Target
</div>\
<<for _r = 0; _r < $raiders.length; _r++>>\
<<set _hotKey to _r + 1>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
<div @class="_textboxID">\
Name: $raiders[_r].name
Class: $raiders[_r].subclass.name $raiders[_r].class
Role: $raiders[_r].role
Traits: <<for _i = 0; _i < $raiders[_r].traits.length; _i++>>\
<<if $raiders[_r].traits[_i].type === "Special">>\
<span style="color:gold"><<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>></span><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<<else>>\
<<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<</if>>\
<</for>>
Kinks: <<if $raiders[_r].kinks.length === 0>>None<<else>>$raiders[_r].kinks<</if>>
Turn-Offs: <<if $raiders[_r].turnoffs.length === 0>>None<<else>>$raiders[_r].turnoffs<</if>>
Statuses: <<if $raiders[_r].statuses.length == 0>>\
None
<<else>>\
<<for _i = 0; _i < $raiders[_r].statuses.length; _i++>>\
<<hovertip "$raiders[_r].statuses[_i].tooltip">>$raiders[_r].statuses[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].statuses.length>>, <</if>><</for>><</if>>
</div>\
</div>\
<div @class="_linkboxID">\
<<if _spell_percent_list[_r] <= 39>>\
<<set _color to "bad">>\
<<elseif _spell_percent_list[_r] >= 70>>\
<<set _color to "good">>\
<<else>>\
<<set _color to "neutral">>\
<</if>>\
$pc_spellbook[$spell_index].name Success Rate: <span @class="_color">_spell_percent_list[_r]%</span> \
<<if _spell_percent_list[_r] === 0>>\
<div class="offbutton">\
<<hovertip "Will have no effect">><<button "Target Raider">><</button>><</hovertip>>
</div>\
<<else>>\
<<capture _r, _hotKey>>\
<span @id="_hotKey"><<button "Target Raider ^^_hotKey^^" $pc_spellbook[$spell_index].passage>><<unset $spell_targeting>><<set $target to _r>><</button>></span>
<</capture>>\
<</if>>\
</div>\
</div>\
<</for>>\
</div>\
<<else>>\
<<silently>>\
* Setup Raiders *
<<RaiderSetup $raiders>>
CASTING SPELL WIDGET
<<CastingSpell $pc_spellbook[$spell_index] $mana_cost>>
SPELL RESULTS
<<if $raiders[$target].status_names.includes("Edging")>>
SET DISPLAY INFORMATION
<<set _display_bool to "Complete">>
QUEST COMPLETE
<<set $missionLog.patricia.completed to true>>
<<set $newMission_bool to true>>
REMOVE SPELL
<<for _i = 0; _i < $pc_spellbook.length; _i++>>
<<if $pc_spellbook[_i].id === setup.patricias_spell.id>>
<<set _remove to $pc_spellbook.deleteAt(_i)>>
<<break>>
<</if>>
<</for>>
SET PIC
<<set _gif to "[img[images/succubus/body_1.jpg]]">>
SET TEXT
<<set _text1 to "After casting the Spell on the Raider, she fell to the ground and started touching herself. Unsure if your spell caused this, you wait and observe as a magic circle starts to form on the ground around her. Once the magic circle has been fully etched out, it begins to pulse in brightness. The Raider reaches her limit and climaxes, causing the room to explode in light, filling the room with a purple hue. Once the room has returned to normal, you see the Raider passed out on the ground and a small girl with purple hair, green snake-like eyes, and a tail standing next to her. It would appear the Spell uses lust from its target to summon a succubus. Although succubi are not unusual to see, this one has a strange and powerful aura surrounding her. As you are wrapping your head around the situation, the succubus snaps her fingers and disappears through a magic portal, bringing along the Raider, who is still out cold. Better not cast that Spell until you have reported this to Patricia.">>
UPDATE GIRL INFO
<<set $raiders[$target].abandoned_by to "Patricia's Spell">>
<<AddStatus $raiders[$target] setup.abandoned true>>
UPDATE REPORT
<<set _entry to "She was taken away by a Succubus you summoned using her.">>
<<set _lastLog to $raiders[$target].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[$target].report.log.push(_lastLog)>>
SET RAIDER REPORT RESULT
<<set _result to "She fainted after being used to summon a powerful Succubus, who disappeared with her.">>
<<set $raiders[$target].report.result to _result>>
<<set $raiders[$target].report.result_pic to "[img[images/succubus/body_1.jpg]]">>
PUSH REPORT TO LIST
<<set $raider_report_list.push($raiders[$target].report)>>
<<elseif ($raiders[$target].cur_lust / $raiders[$target].max_lust).toFixed(2) >= 0.5>>
SET DISPLAY INFORMATION
<<set _display_bool to "Clue 2">>
UPDATE SPELL TOOLTIP
<<if $pc_spellbook[$spell_index].clue_num < 2>>
<<set $pc_spellbook[$spell_index].clue_num to 2>>
<<set $pc_spellbook[$spell_index].tooltip to "It seems like the Spell has a stronger reaction the more Lust a Raider has. Lets try using it on someone who is really close to reaching their @@.lust;maximum Lust@@.">>
<</if>>
SET GIF
<<set _gif to "[img[gifs/spells/patricia_spell_1.gif]]">>
<<elseif ($raiders[$target].cur_lust / $raiders[$target].max_lust).toFixed(2) >= 0.25>>
SET DISPLAY INFORMATION
<<set _display_bool to "Clue 1">>
UPDATE SPELL TOOLTIP
<<if $pc_spellbook[$spell_index].clue_num < 1>>
<<set $pc_spellbook[$spell_index].clue_num to 1>>
<<set $pc_spellbook[$spell_index].tooltip to "The Spell had a reaction when used against a Raider who had some amount of @@.lust;Lust@@. More testing is required before I can report back to Patricia.">>
<</if>>
SET GIF
<<set _gif to "[img[gifs/spells/patricia_spell_0.gif]]">>
<<else>>
FAIL
SET GIF
<<set _gif to setup.spell_failed_gif_list.random()>>
<</if>>
* Set Link *
<<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[$target].index) || _text_triggers.check.spellcheck_failed.includes($raiders[$target].index)>>
<<set _abandoned_bool to true>>
<<else>>
<<set _abandoned_bool to false>>
<</if>>
<<if _abandoned_bool === true>>
<<if $raiders.length > 1>>
<<if $raiders.length > 2>>
<<set _text to "After the Raider ran away, the remaining group pressed forward.">>
<<else>>
<<set _text to "After the Raider ran away, the remaining Raider went on alone.">>
<</if>>
<<set _link to "Continue">>
<<set _passage to "View Spells">>
<<elseif $raiding_girls_list.length > 0>>
<<set _text to "She was the last Raider in the group, let us see who will be starting their Raid next.">>
<<set _link to "Next Group">>
<<set _passage to "Raiding Party">>
<<elseif $captured_girl_list.length > 0>>
<<set _text to "She was the last Raider in the last group tonight, lets check in on the Captured Raiders.">>
<<set _link to "End Raid">>
<<set _passage to "Captured Raiders">>
<<else>>
<<set _text to "She was the last Raider in the last group tonight, lets see how we did tonight.">>
<<set _link to "End Raid">>
<<set _passage to "Daily Summary">>
<</if>>
<<else>>
<<if $raiders.length > 1>>
<<set _text to "The group of Raiders remained together as they pressed forward.">>
<<else>>
<<set _text to "The Raider continued her Raid after resisting your Spell.">>
<</if>>
<<set _link to "Continue">>
<<set _passage to "View Spells">>
<</if>>
*Display*
<</silently>>\
<div class="section">\
<<NextSpellButton>>\
<div class="titlebox">\
Patricia's Spell
</div>\
<div class="imagebox">\
_gif
</div>\
<div class="textbox">\
<<switch _display_bool>>\
<<case "Complete">>\
After casting the Spell on the Raider, she fell to the ground and started touching herself. Unsure if your spell caused this, you wait and observe as a magic circle starts to form on the ground around her. Once the magic circle has been fully etched out, it begins to pulse in brightness. The Raider reaches her limit and climaxes, causing the room to explode in light, filling the room with a purple hue. Once the room has returned to normal, you see the Raider passed out on the ground and a small girl with purple hair, green snake-like eyes, and a tail standing next to her. It would appear that this Spell uses the libido from its target to summon a succubus. Although succubi are not unusual to see, this one has a strange and powerful aura surrounding her. As you are wrapping your head around the situation, the succubus snaps her fingers and disappears through a magic portal, bringing along the Raider, who is still out cold. Better not cast that Spell until you have reported this to Patricia.
<<case "Clue 2">>\
It seems like the Spell has a stronger reaction the more @@.lust;Lust@@ a Raider has. Lets try using it on someone who is really close to reaching their @@.lust;Max Lust@@.
<<case "Clue 1">>\
The Spell had a reaction when used against a Raider who had some amount of @@.lust;Lust@@. More testing is required before I can report back to Patricia.
<<default>>\
The Spell seemed to have no effect on this Raider. Better experiment and try it on another Raider.
<</switch>>\
</div>\
</div>\
<</if>>\<<silently>>\
* Variables *
<<set _baseStressInt to 19>> base amount of stress reduced
<<set _randomStress to 6>> add a random amount up to this var to stress reduced
<<set _stress_countMod to 0.5>> reduces amount of stress lost by this var per number of time disciplined today
<<set _obedience_countMod to 15>> reduces obedience check by this var per number of times disciplined today
<<set _baseObedienceCheck to 45>> base obedience check for disciplining slaves, can be increased
<<set _obedience_mod to 2.5>> Mult obedience by this and add to stress reduced, no cap
<<set _loveEXP to 6>>
<<set _obedienceEXP to 12>>
<<set _skillEXP to 6>>
* Setup Slave *
<<SlaveSetup $cur_slave>>
* Reduce Energy *
<<set $pc_cur_energy-->>
* Set Last Sex Type *
<<set $cur_slave.last_sex_type to $discipline_sex>>
<<set $last_sex_type to $discipline_sex>>
* Obedience Check *
<<set _countMod2 to Math.round(_obedience_countMod * $cur_slave.discipline_count)>>
<<set _base_check to _baseObedienceCheck - _countMod2>>
<<SlaveObedienceCheck $cur_slave _base_check>>
* Reduce Stress *
BASE STRESS
<<set _stress_reduced to _baseStressInt + random(_randomStress)>>
OBEDIENCE STAT
<<set _stress_reduced += Math.round($cur_slave.obedience * _obedience_mod * setup.obedienceCheckOutcome[_obedience_result])>>
REDUCE FOR DISCIPLINE COUNT
<<set _countMod to (_stress_countMod * $cur_slave.discipline_count) + 1>>
<<set _stress_reduced to Math.round(_stress_reduced / _countMod)>>
_stress_reduced BASE STRESS
RIGOROUS REGIMENT
<<set _blessing to $pc_blessing_list.delete("Rigorous Regiment I", "Rigorous Regiment II")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.technique.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.technique[_z].name)>>
<<set _info to clone(setup.allBlessingList.technique[_z])>>
INCREASE STRESS RECOVERED
<<set _stress_reduced += (Math.round(_stress_reduced * _info.float)).clamp(1, 1000000)>>
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
<<SlaveStressCalc $cur_slave _stress_reduced "Reduced">>
* Love Stat Gained *
<<set _love to clone(_loveEXP)>>
SUBORDINATE TRAIT
<<if $cur_slave.trait_names.includes("Subordinate")>>
<<set _love += (Math.round(setup.subordinate.float * _love)).clamp(1, 1000000)>>
<</if>>
GODDESS'S TECHNIQUE
<<set _blessing to $pc_blessing_list.delete("Goddess's Technique I", "Goddess's Technique II", "Goddess's Technique III", "Goddess's Technique IV", "Goddess's Technique V")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.technique.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.technique[_z].name)>>
<<set _info to clone(setup.allBlessingList.technique[_z])>>
INCREASE EXP
<<set _love += (Math.round(_love * _info.float)).clamp(1, 1000000)>>
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
OBEDIENCE CHECK
<<set _love to (Math.round(_love * setup.obedienceCheckOutcome[_obedience_result])).clamp(1, 1000000)>>
ADD EXP
<<SlaveLoveGrowth $cur_slave _love>>
* Obedience Stat Gained *
<<set _obedience to clone(_obedienceEXP)>>
SUBORDINATE TRAIT
<<if $cur_slave.trait_names.includes("Subordinate")>>
<<set _obedience += (Math.round(setup.subordinate.float * _obedience)).clamp(1, 1000000)>>
<</if>>
GODDESS'S TECHNIQUE
<<set _blessing to $pc_blessing_list.delete("Goddess's Technique I", "Goddess's Technique II", "Goddess's Technique III", "Goddess's Technique IV", "Goddess's Technique V")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.technique.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.technique[_z].name)>>
<<set _info to clone(setup.allBlessingList.technique[_z])>>
INCREASE EXP
<<set _obedience += (Math.round(_obedience * _info.float)).clamp(1, 1000000)>>
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
OBEDIENCE CHECK
<<set _obedience to (Math.round(_obedience * setup.obedienceCheckOutcome[_obedience_result])).clamp(1, 1000000)>>
ADD EXP
<<SlaveObedienceGrowth $cur_slave _obedience>>
* Sex Skill Growth *
<<set _skill to clone(_skillEXP)>>
GODDESS'S TECHNIQUE
<<set _blessing to $pc_blessing_list.delete("Goddess's Technique I", "Goddess's Technique II", "Goddess's Technique III", "Goddess's Technique IV", "Goddess's Technique V")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.technique.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.technique[_z].name)>>
<<set _info to clone(setup.allBlessingList.technique[_z])>>
INCREASE EXP
<<set _skill += (Math.round(_skill * _info.float)).clamp(1, 1000000)>>
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
OBEDIENCE CHECK
<<set _skill to (Math.round(_skill * setup.obedienceCheckOutcome[_obedience_result])).clamp(1, 1000000)>>
ADD EXP
<<SexSkillGrowth $cur_slave _skill $discipline_sex.toLowerCase()>>
* Virginity Check *
<<SlaveVirginCheck $cur_slave $discipline_sex.toLowerCase() "Discipline">>
* Increase Discipline Count for the day *
<<set $cur_slave.discipline_count++>>
* Increase Slave Stats *
<<set $cur_slave.total_disciplinings++>>
* Choose Pic *
<<set _pic to $cur_slave.slave_pack[$discipline_sex.toLowerCase()].random()>>
* Set Text *
<<if _obedience_result === 1>>
<<set _outcome to "PASSED PLACEHOLDER.">>
<<else>>
<<set _outcome to "FAILED PLACEHOLDER.">>
<</if>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Discipline $cur_slave.name
</div>\
<div class="imagebox">\
_pic
</div>\
<div class="textbox">\
_outcome
<<SlaveText $cur_slave>>
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[Continue|Slave Room]]>><<unset $discipline_sex>><</button>></span>
</div>\
</div>\<<silently>>\
* Variables *
<<set $cur_slave to $slave_room_list[$cur_quest.slave_index]>>
<<set _obedience_trigger to false>>
<<set _libido_trigger to false>>
<<set _strength_trigger to false>>
<<set _intelligence_trigger to false>> checks for stat increases for slave
<<set _disobedient_bool to false>> set to true if slave becomes disobedient
<<set _found_treasure_bool to false>> set to true if slave found a treasure
<<set _obedience_mod_list to [0.5, 1, 1.2]>> Modifiers based on obedience check
* Obedience Check *
<<SlaveObedienceCheck $cur_slave $cur_quest>>
* Stress Modifier *
* Gold Earned *
<<set _gold_earned to $cur_quest.gold>>
POSITIVE TRAITS
DILIGENT
<<if $cur_slave.trait_names.includes("Diligent")>>
<<set _gold_earned += Math.trunc(_gold_earned * setup.diligent.float) + 1>>
<</if>>
BEAUTIFUL
<<if $cur_slave.trait_names.includes("Beautiful")>>
<<set _gold_earned += Math.trunc(_gold_earned * setup.beautiful.float) + 1>>
<</if>>
NEGATIVE TRAITS
INDECENT
<<if $cur_slave.trait_names.includes("Indecent")>>
<<set _gold_earned -= Math.trunc(_gold_earned * setup.indecent.float) + 1>>
<</if>>
OBEDIENCE MOD
<<set _gold_earned to Math.round(_gold_earned * _obedience_mod_list[_obedience_check])>>
* Reputation Gained *
<<set _rep_gained to $cur_quest.reputation>>
POSITIVE TRAITS
RESPECTED
<<if $cur_slave.trait_names.includes("Respected")>>
<<set _rep_gained += Math.trunc(_re-_gained * setup.respected.float) + 1>>
<</if>>
BEAUTIFUL
<<if $cur_slave.trait_names.includes("Beautiful")>>
<<set _rep_gained += Math.trunc(_rep_gained * setup.beautiful.float) + 1>>
<</if>>
NEGATIVE TRAITS
INDECENT
<<if $cur_slave.trait_names.includes("Indecent")>>
<<set _rep_gained -= Math.trunc(_rep_gained * setup.indecent.float) + 1>>
<</if>>
OBEDIENCE MOD
* Treasure Check *
<<set _treasure_rng to $cur_quest.treasure_chance>>
LUCKY
<<if $cur_slave.trait_names.includes("Lucky")>>
<<set _treasure_rng *= setup.lucky.mult>>
<</if>>
<<set _rng to random(1, 100)>>
<<if _treasure_rng >= _rng>>
FOUND TREASURE
<<set _found_treasure_bool to true>>
<<set _item to $cur_job.treasure_list.random()>>
ADD ITEM TO TREASURE ROOM IF ALREADY OWNED
<<set _has_treasure to false>>
<<for _n = 0; _n < $pc_treasure_list.length; _n++>>
<<if _item.name === $pc_treasure_list[_n].name>>
<<set $pc_treasure_list[_n].count++>>
<<set _has_treasure to true>>
<<break>>
<</if>>
<</for>>
ADD ITEM TO TREASURE ROOM IF NOT ALREADY OWNED
<<if _has_treasure === false>>
<<set $pc_treasure_list.push(_item)>>
<</if>>
UPDATE STATS
<<set $cur_slave.total_treasures++>>
<<set $slaves_treasure_earned++>>
<<set $slave_quest_treasure++>>
<</if>>
* Stress Increase *
SET BASE AMOUNT
<<set _stress_amount to random($cur_quest.min_stress, $cur_quest.max_stress)>>
<<set _stress_amount += $cur_quest.duration * $cur_quest.stress_per_duration>>
<<SlaveStressCalc $cur_slave _stress_amount>>
* Bonus Slave Stat EXP Gained *
<<set _duration_bonus to $cur_quest.exp_per_duration * $cur_quest.duration>>
<<set _total_stats to 0>>
<<for _z = 0; _z < $cur_quest.req_stats.length; _z++>>
<<set _total_stats += $cur_quest.req_stats[_z]>>
<</for>>
<<set _stat_bonus to $cur_quest.exp_per_stat * _total_stats>>
* Obedience Stat Gained *
<<if $cur_quest.obedience_exp > 0>>
<<set _exp_gained to $cur_quest.obedience_exp + _duration_bonus + _stat_bonus>>
<<SlaveObedienceGrowth $cur_slave _exp_gained>>
<</if>>
* Libido Stat Gained *
<<if $cur_quest.libido_exp > 0>>
<<set _exp_gained to $cur_quest.libido_exp + _duration_bonus + _stat_bonus>>
<<SlaveLibidoGrowth $cur_slave _exp_gained>>
<</if>>
* Strength Stat Gained *
<<if $cur_quest.strength_exp > 0>>
<<set _exp_gained to $cur_quest.strength_exp + _duration_bonus + _stat_bonus>>
<<SlaveStrengthGrowth $cur_slave _exp_gained>>
<</if>>
* Intelligence Stat Gained *
<<if $cur_quest.intelligence_exp > 0>>
<<set _exp_gained to $cur_quest.intelligence_exp + _duration_bonus + _stat_bonus>>
<<SlaveIntelligenceGrowth $cur_slave _exp_gained>>
<</if>>
* Add Rewards *
<<set $slave_quest_gold += _gold_earned>>
<<set $pc_gold += _gold_earned>>
<<set $slave_quest_rep += _rep_gained>> Rep is added to dungeon later
* Update Stats *
CURRENT SLAVE STATS
<<set $cur_slave.total_quests++>>
<<set $cur_slave.total_gold += _gold_earned>>
<<set $cur_slave.total_rep += _rep_gained>>
ALL SLAVE STATS
<<set $slaves_task_stats.quest++>>
<<set $slaves_gold_earned += _gold_earned>>
<<set $slaves_reputation_earned += _rep_gained>>
* Assign Picture *
<<set _pic to $cur_slave.body_pic>>
* Update Slave *
<<set $slave_room_list[$cur_quest.slave_index] to $cur_slave>>
* Set Text *
<<switch _obedience_check>>
<<case 0>>
<<set _text to $cur_quest.worst_text>>
<<case 1>>
<<set _text to $cur_quest.average_text>>
<<case 2>>
<<set _text to $cur_quest.best_text>>
<</switch>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
$cur_quest.name
</div>\
<div class="imagebox">\
_pic
</div>\
<div class="textbox">\
_text
After completing the Quest, she earned <span style="color:gold">_gold_earned Gold</span> and <span style="color:purple">_rep_gained Reputation</span>.
<<if _found_treasure_bool === true>>\
She found a _item.name during her Quest.
<</if>>\
Her Stress has increased by <span style="color:slategray">_stress_amount</span>.
<<if _disobedient_bool === true>>\
$cur_slave.name has become Disobedient.
<</if>>\
<<if _love_trigger === true>>\
$cur_slave.name's <span style="color:darkred">Love</span> stat has increased.
<</if>>\
<<if _obedience_trigger === true>>\
$cur_slave.name's <span style="color:cyan">Obedience</span> stat has increased.
<</if>>\
<<if _libido_trigger === true>>\
$cur_slave.name's <span style="color:fuchsia">Libido</span> stat has increased.
<</if>>\
<<if _strength_trigger === true>>\
$cur_slave.name's <span style="color:orange">Strength</span> stat has increased.
<</if>>\
<<if _intelligence_trigger === true>>\
$cur_slave.name's <span style="color:darkorchid">Intelligence</span> stat has increased.
<</if>>\
</div>\
<div class="exit-link-right">\
<<if $completed_quests.length > 0>>\
<<set _next_quest to $completed_quests.pluck()>>\
<<set $link to _next_quest.passage>>\
<<button [[Continue|$link]]>><<set $cur_quest to _next_quest>><<unset $link, $cur_slave>><</button>>
<<elseif $current_event.event === true>>\
<<button [[Continue|New Event]]>><<unset $cur_quest, $cur_slave>><</button>>
<<else>>\
<<button [[Continue|Main Menu]]>><<unset $cur_quest, $cur_slave>><</button>>
<</if>>\
</div>\
</div>\
<<silently>>\
* Variables *
<<set _floor_names to ["Floor One", "Floor Two", "Floor Three", "Floor Four", "Floor Five", "Floor Six", "Floor Seven", "Floor Eight", "Floor Nine", "Floor Ten", "Floor Eleven", "Floor Twelve"]>> Display name for each room
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Dungeon Report
</div>\
<<for _i = 0; _i < $dungeon_room_report.length; _i++>>\
<<if $dungeon_room_report[_i].room_type === "Creature">>\
<<set _box to "detailreport-dungeon-creaturebox">>\
<<elseif $dungeon_room_report[_i].room_type === "Trap">>\
<<set _box to "detailreport-dungeon-trapbox">>\
<</if>>\
<<if $dungeon_room_report[_i].room_type === "Creature" || $dungeon_room_report[_i].room_type === "Trap">>\
<div class="detailreport-dungeon-holder">\
<div @class="_box">\
<div class="detailreport-dungeon-picbox">\
$dungeon_room_report[_i].pic
</div>\
<div class="detailreport-dungeon-textbox">\
<div class="detailreport-dungeon-name">\
_floor_names[_i]
</div>\
<div class="detailreport-dungeon-body">\
<<set _report to $dungeon_room_report[_i].report>>\
<<if _report.raiders === 1>>\
<li>Encountered a single Raider tonight</li>\
<<else>>\
<li>Encountered _report.raiders Raiders tonight</li>\
<</if>>\
<<if _report.captures > 0 && _report.abandons > 0>>\
<li>Captured _report.captures of them and made _report.abandons Abandon their Raid</li>\
<<elseif _report.captures > 0>>\
<<if _report.captures === _report.raiders && _report.raiders === 1>>\
<li>Captured her</li>\
<<elseif _report.captures === _report.raiders && _report.raiders > 1>>\
<li>Captured all of them</li>\
<<else>>\
<li>Captured _report.captures of them</li>\
<</if>>\
<<elseif _report.abandons > 0>>\
<<if _report.abandons === _report.raiders && _report.raiders === 1>>\
<li>Made her Abandon her Raid</li>\
<<elseif _report.abandons === _report.raiders && _report.raiders > 1>>\
<li>Made all of them Abandon their Raid</li>\
<<else>>\
<li>Made _report.abandons of them Abandon their Raid</li>\
<</if>>\
<</if>>\
<<if _report.trap_attempts > 0>>\
<<set _percent to Math.trunc((_report.trap_successes / _report.trap_attempts) * 100)>>\
<li>Trapcheck success rate: _percent%</li>\
<</if>>\
<<if _report.spell_attempts > 0>>\
<<set _percent to Math.trunc((_report.spell_successes / _report.spell_attempts) * 100)>>\
<li>Spellcheck success rate: _percent%</li>\
<</if>>\
<<if _report.exp_gained > 0>>\
<li>Gained _report.exp_gained EXP</li>\
<</if>>\
<<if _report.levels_gained > 0>>\
<li>Level has increased by _report.levels_gained</li>\
<</if>>\
<<if $dungeon_room_report[_i].level >= $creature_levelcap>>\
<li>Reached max level in current Dungeon Rank</li>\
<</if>>\
</div>\
</div>\
</div>\
</div>\
<</if>>\
<</for>>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|$sent_from]]>><<unset $sent_from>><</button>></span>
</div>\
</div>\<<silently>>\
* Variables *
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Raider Report
</div>\
<div class="detailreport-raider-scrollbox">\
<<for _i = 0; _i < $raider_report_list.length; _i++>>\
<<set _hotKey to _i + 1>>\
<div class="detailreport-raider-holder">\
<div class="detailreport-raider-box">\
<div class="detailreport-raider-picbox">\
$raider_report_list[_i].pic
</div>\
<div class="detailreport-raider-textbox">\
<div class="detailreport-raider-name">\
$raider_report_list[_i].name
</div>\
<div class="detailreport-raider-class">\
$raider_report_list[_i].subclass $raider_report_list[_i].class
</div>\
<div class="detailreport-raider-body">\
$raider_report_list[_i].result
</div>\
<div class="detailreport-raider-button">\
<<capture _i, _hotKey>>\
<span @id="_hotKey"><<button "View Full Report ^^_hotKey^^" "Raider Report">><<set $cur_report to $raider_report_list[_i]>><<set $cur_report_num to _i>><</button>></span>
<</capture>>\
</div>\
</div>\
</div>\
</div>\
<</for>>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|$sent_from]]>><<unset $cur_report, $cur_report_num, $sent_from>><</button>></span>
</div>\
</div>\<<silently>>\
* Variables *
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Slave Report
</div>\
<<for _i = 0; _i < $slave_room_report.length; _i++>>\
<<if $slave_room_report[_i].room_type === "Slave">>\
<div class="detailreport-slave-holder">\
<div class="detailreport-slave-box">\
<div class="detailreport-slave-picbox">\
$slave_room_report[_i].pic
</div>\
<div class="detailreport-slave-textbox">\
<div class="detailreport-slave-name">\
$slave_room_report[_i].name
</div>\
<div class="detailreport-slave-text">\
<<SlaveReportText $slave_room_report[_i]>>
</div>\
</div>\
</div>\
</div>\
<</if>>\
<</for>>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|$sent_from]]>><<unset $sent_from>><</button>></span>
</div>\
</div>\<<widget "BasicQuest">>
_args[0].name is slave and _args[1].name is quest
* Variables *
<<set _completedBase to 0.5>> base percent if slave stats are equal to quest stats to complete quest, earning bonus gold, rep, and the treasure
<<set _passedBase to 0.9>> base percent if slave stats are equal to quest stats to pass quest
<<set _mod to 3>> used in rating calc, modifies slave and quest stats
<<set _completedBool to false>>
<<set _failedBool to false>>
<<set _failCheck to 60>> earning a rating less than this amount results in failing the quest
<<set _completeCheck to 90>> earning a rating equal or greater than this amount results in completing the quest
<<set _failPenalty to 0.5>> reduce gold earned by this amount if failed, earn 0 rep
<<set _completeBonus to 0.2>> increase gold and rep by this amount if completed
* Setup Slave *
<<SlaveSetup _args[0]>>
* Obedience Check *
<<SlaveObedienceCheck _args[0] _args[1].base_obedience_check>>
* Quest Rating *
<<set _slave_rating to 0>>
<<if _args[1].libido_req > 0>>
<<set _slave_rating += _args[0].libido>>
<</if>>
<<if _args[1].str_req > 0>>
<<set _slave_rating += _args[0].strength>>
<</if>>
<<if _args[1].intel_req > 0>>
<<set _slave_rating += _args[0].intelligence>>
<</if>>
<<set _slave_rating *= setup.obedienceCheckOutcome[_obedience_result]>>
<<set _completedRating to Math.round(_completedBase * ((_slave_rating * _mod) - (_args[1].total_stats * _mod) + 100))>>
<<set _passedRating to Math.round(_passedBase * ((_slave_rating * _mod) - (_args[1].total_stats * _mod) + 100))>>
<<set _rng to random(1, 100)>>
<<if _completedRating >= _rng>>
COMPLETED QUEST
<<set _completedBool to true>>
<<else>>
<<set _rng to random(1, 100)>>
<</if>>
<<if _completedBool === false && _passedRating < _rng>>
FAILED QUEST
<<set _failedBool to true>>
<</if>>
* Gold Earned *
<<set _gold_earned to clone(_args[1].gold)>>
INSPIRED VIRTUE
<<set _blessing to $pc_blessing_list.delete("Inspired Virtue I", "Inspired Virtue II")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.devotion.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.devotion[_z].name)>>
<<set _gold_earned += (Math.round(_gold_earned * setup.allBlessingList.devotion[_z].float)).clamp(1, 1000000)>>
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
POSITIVE TRAITS
DILIGENT
<<if _args[0].trait_names.includes("Diligent")>>
<<set _gold_earned += Math.trunc(_gold_earned * setup.diligent.float) + 1>>
<</if>>
BEAUTIFUL
<<if _args[0].trait_names.includes("Beautiful")>>
<<set _gold_earned += Math.trunc(_gold_earned * setup.beautiful.float) + 1>>
<</if>>
NEGATIVE TRAITS
INDECENT
<<if _args[0].trait_names.includes("Indecent")>>
<<set _gold_earned -= Math.trunc(_gold_earned * setup.indecent.float) + 1>>
<</if>>
RATING MOD
<<if _failedBool>>
<<set _gold_earned -= Math.round(_gold_earned * _failPenalty)>>
<<elseif _completedBool>>
<<set _gold_earned += Math.round(_gold_earned * _completeBonus)>>
<</if>>
* Reputation Gained *
<<set _rep_gained to clone(_args[1].reputation)>>
INSPIRED VIRTUE
<<set _blessing to $pc_blessing_list.delete("Inspired Virtue I", "Inspired Virtue II")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.devotion.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.devotion[_z].name)>>
<<set _rep_gained += (Math.round(_rep_gained * setup.allBlessingList.devotion[_z].float)).clamp(1, 1000000)>>
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
POSITIVE TRAITS
RESPECTED
<<if _args[0].trait_names.includes("Respected")>>
<<set _rep_gained += Math.trunc(_rep_gained * setup.respected.float) + 1>>
<</if>>
BEAUTIFUL
<<if _args[0].trait_names.includes("Beautiful")>>
<<set _rep_gained += Math.trunc(_rep_gained * setup.beautiful.float) + 1>>
<</if>>
NEGATIVE TRAITS
INDECENT
<<if _args[0].trait_names.includes("Indecent")>>
<<set _rep_gained -= Math.trunc(_rep_gained * setup.indecent.float) + 1>>
<</if>>
RATING MOD
<<if _failedBool>>
<<set _rep_gained to 0>>
<<elseif _completedBool>>
<<set _rep_gained += Math.round(_rep_gained * _completeBonus)>>
<</if>>
* Treasure Check *
<<if _completedBool>>
UPDATE STATS
<<set _args[0].total_treasures++>>
<<set $slaves_treasure_earned++>>
<<set _slave_triggers.earned.treasure to clone(_args[1].treasure)>>
<<set $slave_quest_treasures.push(_args[1].treasure.name)>>
<</if>>
* Obedience Stat Gained *
<<if _args[1].obedience_exp > 0>>
OBEDIENCE CHECK
<<set _obedience_exp to clone(_args[1].obedience_exp)>>
<<SlaveObedienceGrowth _args[0] _obedience_exp>>
<</if>>
* Libido Stat Gained *
<<if _args[1].libido_exp > 0>>
OBEDIENCE CHECK
<<set _libido_exp to clone(_args[1].libido_exp)>>
<<SlaveLibidoGrowth _args[0] _libido_exp>>
<</if>>
* Strength Stat Gained *
<<if _args[1].strength_exp > 0>>
OBEDIENCE CHECK
<<set _strength_exp to clone(_args[1].strength_exp)>>
<<SlaveStrengthGrowth _args[0] _strength_exp>>
<</if>>
* Intelligence Stat Gained *
<<if _args[1].intelligence_exp > 0>>
OBEDIENCE CHECK
<<set _intelligence_exp to clone(_args[1].intelligence_exp)>>
<<SlaveIntelligenceGrowth _args[0] _intelligence_exp>>
<</if>>
* Stress Increase *
SET BASE AMOUNT
<<set _stress_amount to clone(_args[1].stress)>>
NERVOUS TRAIT
<<if _args[0].trait_names.includes("Anxious")>>
<<set _stress_amount *= setup.anxious.mult>>
<</if>>
<<SlaveStressCalc _args[0] _stress_amount "Gained">>
* Add Rewards *
<<set $slave_quest_gold += _gold_earned>>
<<set $slave_quest_rep += _rep_gained>> Gold & Rep are added later to player
* Update Stats *
CURRENT SLAVE STATS
<<if !_failedBool>>
<<set _args[0].total_quests++>>
<</if>>
<<set _args[0].total_gold += _gold_earned>>
<<set _args[0].total_reputation += _rep_gained>>
ALL SLAVE STATS
<<if _failedBool>>
<<set $slaves_task_stats.quest_fail++>>
<<set $slave_quest_failed++>>
<<else>>
<<set $slaves_task_stats.quest++>>
<<set $slave_quest_count++>>
<</if>>
<<set $slaves_gold_earned += _gold_earned>>
<<set $slaves_reputation_earned += _rep_gained>>
* Set Text *
<<set _text to "She returned from her "+_args[1].name+" Quest.">>
<<switch _obedience_result>>
<<case 0>>
<<if _failedBool>>
<<set _text += " Her performance was poor and she failed the Quest.">>
<<elseif _completedBool>>
<<set _text += " Her performance was poor, but she managed to complete the Quest and surpass expectations.">>
<<else>>
<<set _text += " Her performance was poor, but she was able to complete the Quest.">>
<</if>>
<<case 1>>
<<if _failedBool>>
<<set _text += " Her performance was excellent, but she still failed the Quest.">>
<<elseif _completedBool>>
<<set _text += " Her performance was excellent and exceeded the requirements to complete this Quest.">>
<<else>>
<<set _text += " Her performance was excellent and completed the Quest.">>
<</if>>
<</switch>>
<<if _completedBool>>
<<if _slave_triggers.earned.treasure.rarity === "rare">>
<<set _text += " Her hard work was rewarded, earning @@.gold;"+_gold_earned+" Gold@@, @@.rep;"+_rep_gained+" Reputation@@, and the @@.rare;"+_slave_triggers.earned.treasure.name+"@@ Treasure.">>
<<elseif _slave_triggers.earned.treasure.rarity === "uncommon">>
<<set _text += " Her hard work was rewarded, earning @@.gold;"+_gold_earned+" Gold@@, @@.rep;"+_rep_gained+" Reputation@@, and the @@.uncommon;"+_slave_triggers.earned.treasure.name+"@@ Treasure.">>
<<else>>
<<set _text += " Her hard work was rewarded, earning @@.gold;"+_gold_earned+" Gold@@, @@.rep;"+_rep_gained+" Reputation@@, and the "+_slave_triggers.earned.treasure.name+" Treasure.">>
<</if>>
<<elseif _failedBool>>
<<set _text += " She only earned @@.gold;"+_gold_earned+" Gold@@ for her time.">>
<<else>>
<<set _text += " She earned @@.gold;"+_gold_earned+" Gold@@ and @@.rep;"+_rep_gained+" Reputation@@ for completing the Quest.">>
<</if>>
* Special Quest *
<<if _args[1].type === "Special" && _failedBool>>
READD QUEST TO BOARD
<<set $quest_board_list.push(clone(_args[1]))>>
<</if>>
* Missions *
<<if $missionLog.sara.num === 0 && _args[1].name === "Open Trade Route" && !_failedBool>>
<<set $missionLog.sara.completed to true>>
<<set $newMission_bool to true>>
<</if>>
* Update Report *
<<set _args[0].report.type to "Quest">>
<<set _args[0].report.complete to true>>
<<set _args[0].report.name to _args[1].name>>
<<set _args[0].report.stress_gained to _slave_triggers.general.stress_gained>>
<<set _args[0].report.outcome to _text>>
<<UpdateSlaveReport _args[0]>>
* Remove Quest Info From Slave *
<<set _args[0].quest to "">>
<<set _args[0].quest_cd to 0>>
* Update Slave *
<<for _s = 0; _s < $slave_room_list.length; _s++>>
<<if $slave_room_list[_s].index === _args[1].slave_index>>
<<set $slave_room_list[_s] to clone(_args[0])>>
<<break>>
<</if>>
<</for>>
<</widget>><<silently>>\
* Variables *
* Quest Pages *
<<set _classes_per_page to 4>> the number of slaves that can be on each page, starting count from 0
<<if $class_page == null>>
<<set $class_page to 0>>
<</if>>
<<set _start_pos to _classes_per_page * $class_page>> Set where to start the list based on what the page is
<<if _start_pos + _classes_per_page < $slave_class_list.length>>
<<set _end_pos to _start_pos + _classes_per_page>> Set where to end the list based on what the page is
<<else>>
<<set _end_pos to $slave_class_list.length>>
<</if>>
* Set Cur Slave *
<<if $cur_slave == null>>
<<for _z = 0; _z < $slave_room_list.length; _z++>>
<<if $slave_room_list[_z].room_type === "Slave">>
<<set $cur_slave to $slave_room_list[_z]>>
<<set $cur_pos to _z>>
<<break>>
<</if>>
<</for>>
<</if>>
* Set Prev Slave *
<<set _disable_prev to true>>
<<for _z = $cur_pos - 1; _z >= 0; _z-->>
<<if $slave_room_list[_z].room_type === "Slave">>
<<set _prev_pos to _z>>
<<set _disable_prev to false>>
<<break>>
<</if>>
<</for>>
* Set Next Slave *
<<set _disable_next to true>>
<<for _z = $cur_pos + 1; _z < $slave_room_list.length; _z++>>
<<if $slave_room_list[_z].room_type === "Slave">>
<<set _next_pos to _z>>
<<set _disable_next to false>>
<<break>>
<</if>>
<</for>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Slave Market Classes
</div>\
<div class="slaveholder-assignjob">\
<div class="sidebutton-assignjob">\
<<if _disable_prev === true>>\
<div class="tallbutton-off">\
<<button "<">><</button>>\
</div>\
<<else>>\
<div class="tallbutton">\
<span id="left"><<button [[<|Assign Slave Class]]>><<set $cur_slave to $slave_room_list[_prev_pos]>><<set $cur_pos to _prev_pos>><</button>></span>
</div>\
<</if>>\
</div>\
<div class="slaveinfo-assignjob">\
<div class="picbox-slaveinfo-assignjob">\
$cur_slave.pic
</div>\
<div class="textholder-slaveinfo-assignjob">\
<div class="namebox-slaveinfo-assignjob">\
$cur_slave.name
</div>\
<div class="statholder-slaveinfo-assignjob">\
<div class="statbox-slaveinfo-assignjob">\
<<hovertip "<<- setup.slave_stats.love.tooltip>>">><<-setup.slave_stats.love.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.love_tracker / $cur_slave.love_tracker_limit<br>Max: $cur_slave.love_limit">>@@.love;$cur_slave.love@@<</hovertip>>\
</div>\
<div class="statbox-slaveinfo-assignjob">\
<<hovertip "<<- setup.slave_stats.obedience.tooltip>>">><<-setup.slave_stats.obedience.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.obedience_tracker / $cur_slave.obedience_tracker_limit<br>Max: $cur_slave.obedience_limit">>@@.obedience;$cur_slave.obedience@@<</hovertip>>\
</div>\
<div class="statbox-slaveinfo-assignjob">\
<<hovertip "<<- setup.slave_stats.libido.tooltip>>">><<-setup.slave_stats.libido.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.libido_tracker / $cur_slave.libido_tracker_limit<br>Max: $cur_slave.libido_limit">>@@.libido;$cur_slave.libido@@<</hovertip>>\
</div>\
<div class="statbox-slaveinfo-assignjob">\
<<hovertip "<<- setup.slave_stats.strength.tooltip>>">><<-setup.slave_stats.strength.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.strength_tracker / $cur_slave.strength_tracker_limit<br>Max: $cur_slave.strength_limit">>@@.strength;$cur_slave.strength@@<</hovertip>>\
</div>\
<div class="statbox-slaveinfo-assignjob">\
<<hovertip "<<- setup.slave_stats.intelligence.tooltip>>">><<-setup.slave_stats.intelligence.icon>><</hovertip>>
<<hovertip "EXP: $cur_slave.intelligence_tracker / $cur_slave.intelligence_tracker_limit<br>Max: $cur_slave.intelligence_limit">>@@.intelligence;$cur_slave.intelligence@@<</hovertip>>\
</div>\
<div class="statbox-slaveinfo-assignjob">\
<<hovertip "<<- setup.slave_stats.stress.tooltip>>">><<-setup.slave_stats.stress.icon>><</hovertip>>
<strong><span style="color:slategray">$cur_slave.cur_stress</span></strong>\
</div>\
</div>\
<div class="traitbox-slaveinfo-assignjob">\
<u>Traits</u>
<<for _t = 0; _t < $cur_slave.traits.length; _t++>>\
<<print '<span style="color:'+$cur_slave.traits[_t].color+'"><<hovertip "$cur_slave.traits[_t].tooltip">>$cur_slave.traits[_t].name<</hovertip>></span>'>><<if _t + 1 < $cur_slave.traits.length>>, <</if>>\
<</for>>\
</div>\
</div>\
</div>\
<div class="sidebutton-assignjob">\
<<if _disable_next === true>>\
<div class="tallbutton-off">\
<<button ">">><</button>>\
</div>\
<<else>>\
<div class="tallbutton">\
<span id="right"><<button [[>|Assign Slave Class]]>><<set $cur_slave to $slave_room_list[_next_pos]>><<set $cur_pos to _next_pos>><</button>></span>
</div>\
<</if>>\
</div>\
</div>\
<div class="jobinfo-assignjob">\
<<for _i = _start_pos; _i < _end_pos; _i++>>\
<<silently>>\
* Set Hotkey *
<<set _hotKey to (_i % 4) + 1>>
<<set _shiftKey to "shift"+_hotKey>>
* Class Gold Cost *
<<set _class_cost to $slave_class_list[_i].gold>>
* Class Cost Mods *
<</silently>>\
<div class="cardholder-jobinfo-assignquest">\
<div class="card-jobinfo-assignquest">\
<div class="title-jobinfo-assignquest">\
<<capture _i, _shiftKey>>\
$slave_class_list[_i].name <span @id="_shiftKey"><<button "[img[images/icons/desc_icon.png]]" "Class Description">><<set $cur_class to $slave_class_list[_i]>><</button>></span>
<</capture>>\
</div>\
<div class="bigtext-jobinfo-assignquest">\
Cost: <span style="color:gold">_class_cost Gold</span>
</div>\
<div class="text-jobinfo-assignquest">\
Level: $slave_class_list[_i].level
</div>\
<div class="text-jobinfo-assignquest">\
Duration: $slave_class_list[_i].duration <<if $slave_class_list[_i].duration === 1>>day<<else>>days<</if>>
</div>\
<div class="icon-jobinfo-assignquest">\
<<if $slave_class_list[_i].obedience_req > 0>>\
<<hovertip "Recommended: @@.obedience;$slave_class_list[_i].min_obedience@@ - @@.obedience;$slave_class_list[_i].max_obedience@@">><<- setup.slave_stats.obedience.icon>><</hovertip>>\
<</if>>\
<<if $slave_class_list[_i].libido_req > 0>>\
<<hovertip "Recommended: @@.libido;$slave_class_list[_i].min_libido@@ - @@.libido;$slave_class_list[_i].max_libido@@">><<- setup.slave_stats.libido.icon>><</hovertip>>\
<</if>>\
<<if $slave_class_list[_i].str_req > 0>>\
<<hovertip "Recommended: @@.str;$slave_class_list[_i].min_str@@ - @@.str;$slave_class_list[_i].max_str@@">><<- setup.slave_stats.strength.icon>><</hovertip>>\
<</if>>\
<<if $slave_class_list[_i].intel_req > 0>>\
<<hovertip "Recommended: @@.intel;$slave_class_list[_i].min_intel@@ - @@.intel;$slave_class_list[_i].max_intel@@">><<- setup.slave_stats.intelligence.icon>><</hovertip>>\
<</if>>\
</div>\
<div class="icon-jobinfo-assignquest">\
</div>\
<div class="button-jobinfo-assignquest">\
<<if $cur_slave.injured === true>>\
<div class="offbutton">\
<<hovertip "She is Injured">><<button "Enroll">><</button>><</hovertip>>
</div>\
<<elseif $cur_slave.disobedient === true>>\
<div class="offbutton">\
<<hovertip "She is Disobedient">><<button "Enroll">><</button>><</hovertip>>
</div>\
<<elseif $cur_slave.dayoff_bool === true>>\
<div class="offbutton">\
<<hovertip "She has the Day Off">><<button "Enroll">><</button>><</hovertip>>
</div>\
<<elseif $cur_slave.class_cd > 0>>\
<div class="offbutton">\
<<hovertip "In a Class">><<button "Enroll">><</button>><</hovertip>>
</div>\
<<elseif $cur_slave.quest_cd > 0>>\
<div class="offbutton">\
<<hovertip "On a Quest">><<button "Enroll">><</button>><</hovertip>>
</div>\
<<elseif $pc_gold < _class_cost>>\
<div class="offbutton">\
<<hovertip "Not enough Gold">><<button "Enroll">><</button>><</hovertip>>
</div>\
<<else>>\
<<capture _i, _class_cost, _hotKey>>\
<span @id="_hotKey"><<button "Enroll ^^_hotKey^^" "Slave Market">>\
<<silently>>\
TRIGGER TEXT
<<set $market_class_bool to true>>
ASSIGN CLASS TO SLAVE
<<set _newClass to $slave_class_list[_i]>>
UPDATE CLASS INFO
<<set _newClass.slave_index to clone($cur_slave.index)>>
SET SLAVE CLASS CD
<<set $cur_slave.class_cd to _newClass.duration>>
ADD CLASS TO SLAVE
<<set $cur_slave.class to _newClass>>
REMOVE SLAVE FROM ONSEN
<<set _remove to $onsen.users.delete($cur_slave.index)>>
UPDATE CUR SLAVE
<<set $slave_room_list[$cur_pos] to clone($cur_slave)>>
UNSET VARIABLES
<<unset $cur_pos, $cur_slave, $slave_class_page>>
SUBTRACT GOLD
<<set $pc_gold -= _class_cost>>
<<set $pc_town_gold_spent += _class_cost>>
<</silently>>
<</button>></span>\
<</capture>>\
<</if>>\
</div>\
</div>\
</div>\
<</for>>\
</div>\
<div class="buttons-assignjob">\
<div class="box-buttons-assignjob">\
<<if $class_page > 0>>\
<span id="shiftleft"><<button [[Previous Page|Assign Slave Class]]>><<set $class_page-->><</button>></span>
<<else>>\
<div class="offbutton">\
<<button "Previous Page">><</button>>
</div>\
<</if>>\
</div>\
<div class="box-buttons-assignjob">\
</div>\
<div class="box-buttons-assignjob">\
<<if $slave_class_list.length > _end_pos>>\
<span id="shiftright"><<button [[Next Page|Assign Slave Class]]>><<set $class_page++>><</button>></span>
<<else>>\
<div class="offbutton">\
<<button "Next Page">><</button>>
</div>\
<</if>>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Slave Market]]>><<unset $cur_pos, $cur_slave, $class_page>><</button>></span> <span id="q"><<button "<u>Q</u>uick Menu" "Quick Menu">><<unset $cur_pos, $cur_slave, $class_page>><</button>></span>\
</div>\
</div>\<div class="section">\
<div class="description-assignjob">\
<div class="title-description-assignjob">\
$cur_class.name
</div>\
<div class="subtitle-description-assignjob">\
Level: $cur_class.level
</div>\
<div class="body-description-assignjob">\
$cur_class.description
</div>\
<div class="link-description-assignjob">\
<span id="back"><<button "Back" `previous()`>><</button>></span>
</div>\
</div>\
</div>\<div class="section">\
<div class="description-assignjob">\
<div class="title-description-assignjob">\
$cur_quest.name
</div>\
<div class="subtitle-description-assignjob">\
Job Type: $cur_quest.type
</div>\
<div class="body-description-assignjob">\
$cur_quest.description
</div>\
<div class="link-description-assignjob">\
<span id="back"><<button "Back" `previous()`>><<unset $cur_quest>><</button>></span>
</div>\
</div>\
</div>\<<widget "BasicClass">>
_args[0].name is slave, _args[1].name is class
* Variables *
<<set _acedBase to 0.5>> base percent if slave stats are equal to quest stats to ace class, earning bonus EXP
<<set _passedBase to 0.9>> base percent if slave stats are equal to quest stats to pass class
<<set _mod to 3>> used in rating calc, modifies slave and quest stats
<<set _acedBool to false>>
<<set _failedBool to false>>
<<set _exp_penalty to 0.75>> reduces the amount of EXP gained if Slave failed class
<<set _exp_bonus to 0.5>> increases the amount of EXP gained if slave aced class
<<set _class_level_cap = {
Introduction: 5,
Beginner: 10,
Intermediate: 15,
Advance: 20,
Master: 1000,
mod: 0.25
}>>
* Setup Slave *
<<SlaveSetup _args[0]>>
* Obedience Check *
<<SlaveObedienceCheck _args[0] _args[1].base_obedience_check>>
* Class Grade *
<<set _slave_grade to 0>>
<<if _args[1].obedience_req > 0>>
<<set _slave_grade += _args[0].obedience>>
<</if>>
<<if _args[1].libido_req > 0>>
<<set _slave_grade += _args[0].libido>>
<</if>>
<<if _args[1].str_req > 0>>
<<set _slave_grade += _args[0].strength>>
<</if>>
<<if _args[1].intel_req > 0>>
<<set _slave_grade += _args[0].intelligence>>
<</if>>
<<set _slave_rating *= setup.obedienceCheckOutcome[_obedience_result]>>
<<set _acedRating to Math.round(_acedBase * ((_slave_grade * _mod) - (_args[1].total_stats * _mod) + 100))>>
<<set _passedRating to Math.round(_passedBase * ((_slave_grade * _mod) - (_args[1].total_stats * _mod) + 100))>>
<<set _rng to random(1, 100)>>
<<if _acedRating >= _rng>>
ACED CLASS
<<set _acedBool to true>>
<<set _finalGrade to random(90, 100)>>
<<else>>
<<set _rng to random(1, 100)>>
<</if>>
<<if _acedBool === false && _passedRating < _rng && !_args[0].trait_names.includes("Eloquent")>>
FAILED CLASS
<<set _failedBool to true>>
<<set _finalGrade to random(30, 69)>>
<<else>>
<<set _finalGrade to random(70, 89)>>
<</if>>
FINAL RESULT: _finalGrade
* Obedience Stat Gained *
<<if _args[1].obedience_exp > 0>>
<<set _exp_gained to clone(_args[1].obedience_exp)>> BASE OBEDIENCE EXP _exp_gained
<<if _acedBool>>
ACED CLASS
<<set _exp_gained += Math.round(_exp_gained * _exp_bonus)>>
<<elseif _failedBool>>
FAILED CLASS
<<set _exp_gained -= Math.round(_exp_gained * _exp_penalty)>>
<</if>>
ELOQUENT
<<if _args[0].trait_names.includes("Eloquent")>>
<<set _exp_gained += Math.round(setup.eloquent.exp_float * _exp_gained)>>
<</if>>
INSPIRED ENLIGHTENMENT
<<set _blessing to $pc_blessing_list.delete("Inspired Enlightenment I", "Inspired Enlightenment II")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.devotion.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.devotion[_z].name)>>
<<set _exp_gained += (Math.round(_exp_gained * setup.allBlessingList.devotion[_z].float)).clamp(1, 1000000)>>
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
MOTIVATED
<<if _args[0].trait_names.includes("Motivated")>>
TRIGGERED
<<set _exp_gained += Math.round(_exp_gained * setup.motivated.float)>>
<</if>>
LAZY
<<if _args[0].trait_names.includes("Lazy")>>
TRIGGERED
<<set _exp_gained -= Math.round(_exp_gained * setup.lazy.float)>>
<</if>>
CLASS LEVEL
<<if _args[0].obedience > _class_level_cap[_args[1].level]>>
<<ser _exp_gained -= Math.round(_exp_gained * _class_level_cap.mod)>>
<<set _slave_triggers.class.obedience to true>>
<</if>>
<<SlaveObedienceGrowth _args[0] _exp_gained>>
<</if>>
* Libido Stat Gained *
<<if _args[1].libido_exp > 0>>
<<set _exp_gained to clone(_args[1].libido_exp)>> BASE LIBIDO EXP _exp_gained
<<if _acedBool>>
ACED CLASS
<<set _exp_gained += Math.round(_exp_gained * _exp_bonus)>>
<<elseif _failedBool>>
FAILED CLASS
<<set _exp_gained -= Math.round(_exp_gained * _exp_penalty)>>
<</if>>
ELOQUENT
<<if _args[0].trait_names.includes("Eloquent")>>
<<set _exp_gained += Math.round(setup.eloquent.exp_float * _exp_gained)>>
<</if>>
INSPIRED ENLIGHTENMENT
<<set _blessing to $pc_blessing_list.delete("Inspired Enlightenment I", "Inspired Enlightenment II")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.devotion.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.devotion[_z].name)>>
<<set _exp_gained += (Math.round(_exp_gained * setup.allBlessingList.devotion[_z].float)).clamp(1, 1000000)>>
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
MOTIVATED
<<if _args[0].trait_names.includes("Motivated")>>
TRIGGERED
<<set _exp_gained += Math.round(_exp_gained * setup.motivated.float)>>
<</if>>
LAZY
<<if _args[0].trait_names.includes("Lazy")>>
TRIGGERED
<<set _exp_gained -= Math.round(_exp_gained * setup.lazy.float)>>
<</if>>
CLASS LEVEL
<<if _args[0].libido > _class_level_cap[_args[1].level]>>
<<ser _exp_gained -= Math.round(_exp_gained * _class_level_cap.mod)>>
<<set _slave_triggers.class.libido to true>>
<</if>>
<<SlaveLibidoGrowth _args[0] _exp_gained>>
<</if>>
* Strength Stat Gained *
<<if _args[1].strength_exp > 0>>
<<set _exp_gained to clone(_args[1].strength_exp)>> BASE STRENGTH EXP _exp_gained
<<if _acedBool>>
ACED CLASS
<<set _exp_gained += Math.round(_exp_gained * _exp_bonus)>>
<<elseif _failedBool>>
FAILED CLASS
<<set _exp_gained -= Math.round(_exp_gained * _exp_penalty)>>
<</if>>
ELOQUENT
<<if _args[0].trait_names.includes("Eloquent")>>
<<set _exp_gained += Math.round(setup.eloquent.exp_float * _exp_gained)>>
<</if>>
INSPIRED ENLIGHTENMENT
<<set _blessing to $pc_blessing_list.delete("Inspired Enlightenment I", "Inspired Enlightenment II")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.devotion.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.devotion[_z].name)>>
<<set _exp_gained += (Math.round(_exp_gained * setup.allBlessingList.devotion[_z].float)).clamp(1, 1000000)>>
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
MOTIVATED
<<if _args[0].trait_names.includes("Motivated")>>
TRIGGERED
<<set _exp_gained += Math.round(_exp_gained * setup.motivated.float)>>
<</if>>
LAZY
<<if _args[0].trait_names.includes("Lazy")>>
TRIGGERED
<<set _exp_gained -= Math.round(_exp_gained * setup.lazy.float)>>
<</if>>
CLASS LEVEL
<<if _args[0].strength > _class_level_cap[_args[1].level]>>
<<ser _exp_gained -= Math.round(_exp_gained * _class_level_cap.mod)>>
<<set _slave_triggers.class.strength to true>>
<</if>>
<<SlaveStrengthGrowth _args[0] _exp_gained>>
<</if>>
* Intelligence Stat Gained *
<<if _args[1].intelligence_exp > 0>>
<<set _exp_gained to clone(_args[1].intelligence_exp)>> BASE INTELLIGENCE EXP _exp_gained
<<if _acedBool>>
ACED CLASS
<<set _exp_gained += Math.round(_exp_gained * _exp_bonus)>>
<<elseif _failedBool>>
FAILED CLASS
<<set _exp_gained -= Math.round(_exp_gained * _exp_penalty)>>
<</if>>
ELOQUENT
<<if _args[0].trait_names.includes("Eloquent")>>
<<set _exp_gained += Math.round(setup.eloquent.exp_float * _exp_gained)>>
<</if>>
INSPIRED ENLIGHTENMENT
<<set _blessing to $pc_blessing_list.delete("Inspired Enlightenment I", "Inspired Enlightenment II")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.devotion.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.devotion[_z].name)>>
<<set _exp_gained += (Math.round(_exp_gained * setup.allBlessingList.devotion[_z].float)).clamp(1, 1000000)>>
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
MOTIVATED
<<if _args[0].trait_names.includes("Motivated")>>
TRIGGERED
<<set _exp_gained += Math.round(_exp_gained * setup.motivated.float)>>
<</if>>
LAZY
<<if _args[0].trait_names.includes("Lazy")>>
TRIGGERED
<<set _exp_gained -= Math.round(_exp_gained * setup.lazy.float)>>
<</if>>
CLASS LEVEL
<<if _args[0].intelligence > _class_level_cap[_args[1].level]>>
<<ser _exp_gained -= Math.round(_exp_gained * _class_level_cap.mod)>>
<<set _slave_triggers.class.intelligence to true>>
<</if>>
<<SlaveIntelligenceGrowth _args[0] _exp_gained>>
<</if>>
* Stress Increase *
SET BASE AMOUNT
<<set _stress_amount to clone(_args[1].stress)>>
ANTSY TRAIT
<<if _args[0].trait_names.includes("Antsy")>>
<<set _stress_amount *= setup.antsy.mult>>
<</if>>
<<SlaveStressCalc _args[0] _stress_amount "Gained">>
* Update Stats *
CURRENT SLAVE STATS
<<if !_failedBool>>
<<set _args[0].total_classes++>>
<</if>>
* Set Text *
<<set _text to "She returned from her " + _args[1].name + " Class.">>
<<switch _obedience_result>>
<<case 0>>
<<if _acedBool>>
<<set _text += " She lacked focus, but still scored @@.good;"+_finalGrade+"%@@ for her grade in the Class, earning more EXP.">>
<<elseif _failedBool>>
<<set _text += " She lacked focus and scored @@.bad;"+_finalGrade+"%@@ for her grade in the Class, earning less EXP.">>
<<else>>
<<set _text += " She lacked focus, but still scored "+_finalGrade+"% for her grade in the Class.">>
<</if>>
<<case 1>>
<<if _acedBool>>
<<set _text += " She showed great focus and scored @@.good;"+_finalGrade+"%@@ for her grade in the Class, earning more EXP.">>
<<elseif _failedBool>>
<<set _text += " She showed great focus, but scored @@.bad;"+_finalGrade+"%@@ for her grade in the Class, earning less EXP.">>
<<else>>
<<set _text += " She showed great focus and scored "+_finalGrade+"% for her grade in the Class.">>
<</if>>
<</switch>>
<<if _slave_triggers.class.obedience === true && _slave_triggers.class.libido === true && _slave_triggers.class.strength === true && _slave_triggers.class.intelligence === true>>
<<set _text += " Her @@.obedience;Obedience@@, @@.libido;Libido@@, @@.str;Strength@@, and @@.intel;Intelligence@@ were above this Class's Level and gained less EXP for those stats.">>
<<elseif _slave_triggers.class.obedience === true && _slave_triggers.class.libido === true && _slave_triggers.class.strength === true>>
<<set _text += " Her @@.obedience;Obedience@@, @@.libido;Libido@@, and @@.str;Strength@@ were above this Class's Level and gained less EXP for those stats.">>
<<elseif _slave_triggers.class.obedience === true && _slave_triggers.class.libido === true && _slave_triggers.class.intelligence === true>>
<<set _text += " Her @@.obedience;Obedience@@, @@.libido;Libido@@, and @.intel;Intelligence@@ were above this Class's Level and gained less EXP for those stats.">>
<<elseif _slave_triggers.class.obedience === true && _slave_triggers.class.strength === true && _slave_triggers.class.intelligence === true>>
<<set _text += " Her @@.obedience;Obedience@@, @@.str;Strength@@, and @.intel;Intelligence@@ were above this Class's Level and gained less EXP for those stats.">>
<<elseif _slave_triggers.class.libido === true && _slave_triggers.class.strength === true && _slave_triggers.class.intelligence === true>>
<<set _text += " Her @@.libido;Libido@@, @@.str;Strength@@, and @.intel;Intelligence@@ were above this Class's Level and gained less EXP for those stats.">>
<<elseif _slave_triggers.class.obedience === true && _slave_triggers.class.libido === true>>
<<set _text += " Her @@.obedience;Obedience@@ and @@.libido;Libido@@ were above this Class's Level and gained less EXP for those stats.">>
<<elseif _slave_triggers.class.obedience === true && _slave_triggers.class.strength === true>>
<<set _text += " Her @@.obedience;Obedience@@ and @@.str;Strength@@ were above this Class's Level and gained less EXP for those stats.">>
<<elseif _slave_triggers.class.obedience === true && _slave_triggers.class.intelligence === true>>
<<set _text += " Her @@.obedience;Obedience@@ and @.intel;Intelligence@@ were above this Class's Level and gained less EXP for those stats.">>
<<elseif _slave_triggers.class.libido === true && _slave_triggers.class.strength === true>>
<<set _text += " Her @@.libido;Libido@@ and @@.str;Strength@@ were above this Class's Level and gained less EXP for those stats.">>
<<elseif _slave_triggers.class.libido === true && _slave_triggers.class.intelligence === true>>
<<set _text += " Her @@.libido;Libido@@ and @@.int;Intelligence@@ were above this Class's Level and gained less EXP for those stats.">>
<<elseif _slave_triggers.class.strength === true && _slave_triggers.class.intelligence === true>>
<<set _text += " Her @@.str;Strength@@ and @@.intel;Intelligence@@ were above this Class's Level and gained less EXP for those stats.">>
<<elseif _slave_triggers.class.obedience === true>>
<<set _text += " Her @@.obedience;Obedience@@ was above this Class's Level and gained less EXP for that stat.">>
<<elseif _slave_triggers.class.libido === true>>
<<set _text += " Her @@.libido;Libido@@ was above this Class's Level and gained less EXP for that stat.">>
<<elseif _slave_triggers.class.strength === true>>
<<set _text += " Her @@.str;Strength@@ was above this Class's Level and gained less EXP for that stat.">>
<<elseif _slave_triggers.class.intelligence === true>>
<<set _text += " Her @@.intel;Intelligence@@ was above this Class's Level and gained less EXP for that stat.">>
<</if>>
* Update Report *
UPDATE REPORT
<<set _args[0].report.type to "Class">>
<<set _args[0].report.complete to true>>
<<set _args[0].report.name to _args[1].name>>
<<set _args[0].report.stress_gained to _slave_triggers.general.stress_gained>>
<<set _args[0].report.outcome to _text>>
<<if _failedBool>>
<<set $slaves_task_stats.class_fail++>>
<<set $slave_class_failed++>>
<<else>>
<<set $slaves_task_stats.class++>>
<<set $slave_class_count++>>
<</if>>
<<UpdateSlaveReport _args[0]>>
* Anna Mission *
<<if $missionLog.anna.num === 0 && $missionLog.anna.unlocked === false && !_failedBool>>
<<set $missionLog.anna.int++>>
<<if $missionLog.anna.int >= setup.annaMisLine[$missionLog.anna.num].class_goal>>
<<set $missionLog.anna.unlocked to true>>
<<set $newMission_bool to true>>
<</if>>
<</if>>
* Remove Class Info From Slave *
<<set _args[0].class to "">>
<<set _args[0].class_cd to 0>>
* Update Slave *
<<for _s = 0; _s < $slave_room_list.length; _s++>>
<<if $slave_room_list[_s].index === _args[1].slave_index>>
<<set $slave_room_list[_s] to clone(_args[0])>>
<<break>>
<</if>>
<</for>>
<</widget>><<silently>>\
* Slave Variables *
<<set $slave_job_gold to 0>> amount of gold earned from slave's jobs tonight
<<set $slave_job_treasures to []>> list of treasures earned from slave's jobs tonight
<<set $slave_quest_gold to 0>> amount of gold earned from slave's quests tonight
<<set $slave_quest_rep to 0>> amount of reputation earned from slave's quests tonight
<<set $slave_quest_treasures to []>> list of treasures earned from slave's quests tonight
<<set $slave_quest_count to 0>> number of quests completed tonight
<<set $slave_quest_failed to 0>> number of quests failed tonight
<<set $slave_job_count to 0>> number of jobs done tonight
<<set $slave_side_job_count to 0>> number of side jobs done tonight
<<set $slave_class_count to 0>> number of classes completed tonight
<<set $slave_class_failed to 0>> number of classes failed tonight
<<set $slave_out_count to 0>> number of slaves out on a quest or in a class
<<set $slave_working_count to 0>> total number of slaves doing any jobs, quests, classes, or training tonight
<<set $slave_nowork_count to 0>> total number of slaves not working any jobs, quests, classes or training tonight
<<set $flirtatious_rep_amount to 0>> total amount of rep gained from Flirtatious Slaves
<<set $sneaky_treasures to []>> treasures stolen by slaves with the sneaky trait
* Raid Variables *
<<set $remove_drowsy_bool to true>> set to false if group is stuck in the puzzle room, prevents raiders from losing drowsy status between rooms
<<set $sIndex to 0>> starting index
<<set _no_gold_trigger to false>> set to true if player has no gold or treasure. Triggers a text that appears.
<<set _no_gold_penalty to 4>> divides the number of raiders by this amount if the player has no gold or treasure
<<set $number_of_raiders to 1>> total number of raiders that will be entering the dungeon, starts at 1
<<set $raiding_girls_list to []>> list of all the raiders class
<<set $min_party_size to 0>> smallest party size that can enter the dungeon
<<set $max_party_size to 0>> largest party size that can enter the dungeon
<<set $captured_girl_list to []>> holds raider info that were captured
<<set $slave_girl_list to []>> holds slave info
<<set $impInvasionCount to 0>> number of Raiders captured by Imps using Summoning Portal
<<set $used_girl_list to []>> holds raider info that were captured and fucked, gaining rep and threat
<<set $released_girl_list to []>> holds raider info that were captured and not fucked, gaining rep and threat but halved
<<set $satisfied_girl_list to []>> holds raider info if cleared and were satisfied at the end
<<set $unsatisfied_girl_list to []>> holds raider info if cleared and were not satisfied at the end, losing rep
<<set $raiders_cleared_list to []>> holds raiders who cleared the dungeon
<<set $abandoned_girl_list to []>> holds raiders info that abandoned the dungeon
<<set $enslaved_bool to false>> set to true if raider was enslaved
<<set $enslaved_index to "">> set to index of slave room where enslaved raider was sent to
<<set $enslaved_girl to "">> holds info on girl that was enslaved
<<set $captured_raiders_count to 0>> holds the number of raiders captured each night
<<set $marketConnectionAmount to 0>> gold value of Raiders who were sold to the Slave Market
<<set $dungeon_known_rep_gain to 0>> holds the amount of rep gained from well known creatures and traps
<<set $dungeon_known_rep_lost to 0>> holds the amount of rep lost from well known creatures and traps
<<set $treasure_value_rep_gain to 0>> holds the amount of rep gained based on your treasure value and gold amount
<<set $threat_net_gained to 0>> total amount of threat gained tonight
<<set $threat_net_lost to 0>> total amount of threat lost tonight
<<set $rep_net_gained to 0>> total amount of threat gained tonight
<<set $rep_net_lost to 0>> total amount of threat lost tonight
<<set $gold_stolen to 0>> amount of gold stolen tonight
<<set $treasures_stolen to 0>> amount of treasures stolen tonight
<<set $gold_earned to 0>> the amount gained from the Raiders tonight
<<set $treasure_earned to []>> holds treasure gained from the raiders tonight
<<set $treasure_value to 0>> holds treasure value gained from the raiders tonight
<<set $treasure_names to []>> holds names of treasures gained for displaying info tonight
<<set $raidtreasure_list to []>> list of treasures to be added to next treasure shop inv from being sold
<<set $shinyRingGold to 0>> amount of gold earned from shiny ring treasure
<<set $first_time_check_report to false>> resets the nightly report trigger
<<set $prev_room_num to "">>
<<set $cur_room_num to "">>
<<set $pc_energy_extra to 0>>
<<set $pc_mana_extra to 0>> gains extra energy/mana at the start of the next day
<<set $completed_quests to []>> holds list of completed quests at the end of the day
<<set $raider_report_list to []>>
<<set _class_count = {
Hunter: 0,
Sorcerer: 0,
Knight: 0,
Warrior: 0,
Priestess: 0,
Thief: 0,
Alchemist: 0,
Witch: 0,
Dancer: 0,
Brawler: 0
}>>
* SLAVE PACK LIST *
<<set _available_class_list to ["Hunter","Sorcerer","Knight","Warrior","Priestess","Thief","Alchemist","Witch","Dancer","Brawler"]>>
<<set _class_list to []>>
<<for _i = 0; _i < _available_class_list.length; _i++>>
<<set _class_list[_available_class_list[_i]] to []>>
<</for>>
<<for _i = 0; _i < $slave_pack_array.length; _i++>>
<<for _c = 0; _c < $slave_pack_array[_i].classes.length; _c++>>
<<set _class_name to $slave_pack_array[_i].classes[_c]>>
<<if $slave_pack_array[_i][_class_name.toLowerCase()] == true>>
<<set _class_list[_class_name].push(clone($slave_pack_array[_i]))>>
<</if>>
<</for>>
<</for>>
<<for _i = 0; _i < _available_class_list.length; _i++>>
<<set _class_list[_available_class_list[_i]].shuffle()>>
<</for>>
* Blessings *
ANNA MARKET CONNECTIONS
<<if $pc_blessing_list.includes("Market Connections")>>
<<set $marketConnectionBool to true>>
<<else>>
<<set $marketConnectionBool to false>>
<</if>>
<<for _s = 0; _s < $slave_market_list.length; _s++>>
<<if $slave_market_list[_s].connection_bool === true>>
<<set _remove to $slave_market_list.deleteAt(_s)>>
<<set _s-->>
<</if>>
<</for>>
* Slave Activities for the day *
<<set $cur_slave_jobs to []>> List of Jobs today
<<set _slavesOwned to 0>>
<<set _slavesQuesting to 0>>
<<set _slavesLearning to 0>>
<<for _i = 0; _i < $slave_room_list.length; _i++>>
<<if $slave_room_list[_i].room_type === "Slave">>
<<set _slavesOwned++>>
CREATE REPORT
<<SlaveReport>>
ADD REPORT
<<set $slave_room_list[_i].report to clone(_report)>>
<<if $slave_room_list[_i].job != "" && $slave_room_list[_i].dayoff_bool === false && $slave_room_list[_i].injured === false && $slave_room_list[_i].disobedient === false && $slave_room_list[_i].quest === "" && $slave_room_list[_i].class === "">>
<<set $slave_working_count++>>
<<set $slave_job_count++>>
<<set $slave_room_list[_i].job.slave_index to clone($slave_room_list[_i].index)>>
PUSH JOB TO JOB LIST
<<set $cur_slave_jobs.push($slave_room_list[_i].job)>>
<<if $slave_room_list[_i].side_job != "">>
<<set $slave_side_job_count++>>
<<set $slave_room_list[_i].side_job.slave_index to clone($slave_room_list[_i].index)>>
<<set $slave_room_list[_i].side_job.job_type to "Side Job">>
PUSH JOB TO JOB LIST
<<set $cur_slave_jobs.push($slave_room_list[_i].side_job)>>
<</if>>
<<elseif $slave_room_list[_i].quest_cd > 0>>
<<set $slave_working_count++>>
<<set _slavesQuesting++>>
<<set $slave_room_list[_i].quest_cd-->>
<<if $slave_room_list[_i].quest_cd <= 0>>
UPDATE REPORT
<<set $slave_room_list[_i].report.type to "Quest">>
<<else>>
UPDATE REPORT
<<set $slave_room_list[_i].report.type to "Quest">>
<<set $slave_room_list[_i].report.complete to false>>
<<set $slave_out_count++>>
<</if>>
<<elseif $slave_room_list[_i].class_cd > 0>>
<<set $slave_working_count++>>
<<set _slavesLearning++>>
<<set $slave_room_list[_i].class_cd-->>
<<if $slave_room_list[_i].class_cd <= 0>>
UPDATE REPORT
<<set $slave_room_list[_i].report.type to "Class">>
<<else>>
UPDATE REPORT
<<set $slave_room_list[_i].report.type to "Class">>
<<set $slave_room_list[_i].report.complete to false>>
<<set $slave_out_count++>>
<</if>>
<<elseif $slave_room_list[_i].injured === true>>
REDUCE INJURED DAY
<<set $slave_room_list[_i].injured_cd-->>
INCREASE INJURED DAY COUNT
<<set $slave_room_list[_i].total_injured++>>
ADD SLAVE TO NO WORK COUNT
<<set $slave_nowork_count++>>
UPDATE REPORT
<<set $slave_room_list[_i].report.type to "Injured">>
<<if $slave_room_list[_i].injured_cd > 0>>
<<set _injuredStrings to ["INJURED REPORT PLACEHOLDER."]>>
<<else>>
<<set _injuredStrings to ["RECOVERED REPORT PLACEHOLDER."]>>
<</if>>
<<set $slave_room_list[_i].report.outcome to _injuredStrings.random()>>
<<elseif $slave_room_list[_i].disobedient === true>>
<<set $slave_nowork_count++>>
UPDATE REPORT
<<set $slave_room_list[_i].report.type to "Disobedient">>
<<set _disobedientStrings to ["DISOBEDIENT REPORT PLACEHOLDER."]>>
<<set $slave_room_list[_i].report.outcome to _disobedientStrings.random()>>
<<elseif $slave_room_list[_i].dayoff_bool === true || $slave_room_list[_i].job === "">>
<<set $slave_nowork_count++>>
UPDATE REPORT
<<set $slave_room_list[_i].report.type to "Day Off">>
<<if $slave_room_list[_i].trait_names.includes("Sneaky")>>
<<SneakySlave $slave_room_list[_i]>>
<<set _dayOffStrings to ["She spent the day walking through town, looking for trouble.", "She wandered around the town, being mischievous.", "She went to town and did some shopping, through other people's pockets."]>>
<<else>>
<<set _dayOffStrings to ["You gave her the day off, so she spent all day catching up on her favorite manga.", "Having the day off, she decided to take a walk around your dungeon before retreating to her room.", "She used her day off to relax, but grew bored quickly.", "She didn't have anything to do after having the day off, so she wandered around outside for a bit.", "She spent her whole day off in her room."]>>
<</if>>
<<if $slave_room_list[_i].report.end_of_day.sneaky_treasure === "">>
<<set _dayOffStrings to ["You gave her the day off, so she spent all day catching up on her favorite manga.", "Having the day off, she decided to take a walk around your dungeon before retreating to her room.", "She used her day off to relax, but grew bored quickly.", "She didn't have anything to do after having the day off, so she wandered around outside for a bit.", "She spent her whole day off in her room."]>>
<<set $slave_room_list[_i].report.outcome to _dayOffStrings.random()>>
<<else>>
<<set _dayOffStrings to ["While strolling through town, ", "During her time in town, ", "Unable to resist her mischievous nature, "]>>
<<set $slave_room_list[_i].report.outcome to _dayOffStrings.random() + " she pickpocketed someone's <span @class='$slave_room_list[_i].report.end_of_day.sneaky_treasure.rarity'>"+$slave_room_list[_i].report.end_of_day.sneaky_treasure.name+"</span>.">>
<</if>>
<</if>>
<</if>>
<</for>>
* Buddy System Check *
<<if $pc_blessing_list.includes("Buddy System")>>
<<for _i = 0; _i < $cur_slave_jobs.length; _i++>>
<<if $cur_slave_jobs[_i].type === "Prostitution">>
<<for _z = 0; _z < $cur_slave_jobs.length; _z++>>
<<if $cur_slave_jobs[_z].name === $cur_slave_jobs[_i].name && _i !== _z>>
TRIGGER BUDDY SYSTEM FOR BOTH
<<set $cur_slave_jobs[_z].buddy_system_bool to true>>
<<set $cur_slave_jobs[_i].buddy_system_bool to true>>
<</if>>
<</for>>
<</if>>
<</for>>
<</if>>
* Reset Dungeon Room Report, Push to Raid Room List *
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if $dungeon_floor_list[_z].room_type === "Creature" || $dungeon_floor_list[_z].room_type === "Trap">>
<<set $dungeon_floor_list[_z].report.raiders to 0>>
<<set $dungeon_floor_list[_z].report.captures to 0>>
<<set $dungeon_floor_list[_z].report.abandons to 0>>
<<set $dungeon_floor_list[_z].report.exp_gained to 0>>
<<set $dungeon_floor_list[_z].report.levels_gained to 0>>
<<set $dungeon_floor_list[_z].report.trap_attempts to 0>>
<<set $dungeon_floor_list[_z].report.trap_successes to 0>>
<<set $dungeon_floor_list[_z].report.spell_attempts to 0>>
<<set $dungeon_floor_list[_z].report.spell_successes to 0>>
<</if>>
<</for>>
* Number of Raiders *
Determines how many girls to add based on current reputation
REPUTATION
<<if $dungeon_reputation <= 60>>
<<set $number_of_raiders += random(0, 1)>>
<<elseif $dungeon_reputation <= 125>>
<<set $number_of_raiders += random(1, 2)>>
<<elseif $dungeon_reputation <= 250>>
<<set $number_of_raiders += random(2, 3)>>
<<elseif $dungeon_reputation <= 500>>
<<set $number_of_raiders += random(3, 4)>>
<<elseif $dungeon_reputation <= 1000>>
<<set $number_of_raiders += random(4, 5)>>
<<elseif $dungeon_reputation <= 2000>>
<<set $number_of_raiders += random(6, 7)>>
<<else>>
<<set $number_of_raiders += random(8, 9)>>
<</if>>
DUNGEON RANK
<<set $number_of_raiders += $dungeon_rank>>
<<if $dungeon_rank >= 3>>
<<set $number_of_raiders++>>
<</if>>
<<if $dungeon_rank >= 5>>
<<set $number_of_raiders++>>
<</if>>
* Raider Difficulty *
Determines a range of how difficult the Raiders will be based on the Threat level and the dungeon rank. Add multiple of the same subclass to raise chance of a certain subclass appearing. Picks threat string to print as well.
SUBCLASS_PERCENT: Assign a percent value to each subclass, start from the end, master subclass, and check down to rookie subclass, stopping when a percent is met. If failed, the next percent is added to the running total
THREAT
<<if $dungeon_threat <= 10>>
<<set _threat_string to setup.veryeasy_threat_strings.random()>>
<<switch $dungeon_rank>>
<<case 1>>
<<set $subclass_percent to [100, 0, 0, 0, 0, 0]>>
<<case 2>>
<<set $subclass_percent to [100, 10, 0, 0, 0, 0]>>
<<case 3>>
<<set $subclass_percent to [50, 100, 10, 0, 0, 0]>>
<<case 4>>
<<set $subclass_percent to [0, 50, 100, 10, 0, 0]>>
<<default>>
<<set $subclass_percent to [0, 0, 50, 100, 10, 0]>>
<</switch>>
<<elseif $dungeon_threat <= 35>>
<<set _threat_string to setup.easy_threat_strings.random()>>
<<switch $dungeon_rank>>
<<case 1>>
<<set $subclass_percent to [100, 10, 0, 0, 0, 0]>>
<<case 2>>
<<set $subclass_percent to [50, 100, 10, 0, 0, 0]>>
<<case 3>>
<<set $subclass_percent to [0, 50, 100, 10, 0, 0]>>
<<case 4>>
<<set $subclass_percent to [0, 0, 50, 100, 10, 0]>>
<<default>>
<<set $subclass_percent to [0, 0, 0, 50, 100, 10]>>
<</switch>>
<<elseif $dungeon_threat <= 65>>
<<set _threat_string to setup.average_threat_strings.random()>>
<<switch $dungeon_rank>>
<<case 1>>
<<set $subclass_percent to [25, 100, 10, 0, 0, 0]>>
<<case 2>>
<<set $subclass_percent to [0, 25, 100, 10, 0, 0]>>
<<case 3>>
<<set $subclass_percent to [0, 0, 25, 100, 10, 0]>>
<<case 4>>
<<set $subclass_percent to [0, 0, 0, 25, 100, 10]>>
<<default>>
<<set $subclass_percent to [0, 0, 0, 0, 25, 100]>>
<</switch>>
<<elseif $dungeon_threat <= 90>>
<<set _threat_string to setup.hard_threat_strings.random()>>
<<switch $dungeon_rank>>
<<case 1>>
<<set $subclass_percent to [10, 100, 50, 0, 0, 0]>>
<<case 2>>
<<set $subclass_percent to [0, 10, 100, 50, 0, 0]>>
<<case 3>>
<<set $subclass_percent to [0, 0, 10, 100, 50, 0]>>
<<case 4>>
<<set $subclass_percent to [0, 0, 0, 10, 100, 50]>>
<<default>>
<<set $subclass_percent to [0, 0, 0, 0, 10, 100]>>
<</switch>>
<<else>>
<<set _threat_string to setup.veryhard_threat_strings.random()>>
<<switch $dungeon_rank>>
<<case 1>>
<<set $subclass_percent to [0, 0, 100, 25, 0, 0]>>
<<case 2>>
<<set $subclass_percent to [0, 0, 0, 100, 25, 0]>>
<<case 3>>
<<set $subclass_percent to [0, 0, 0, 0, 100, 25]>>
<<case 4>>
<<set $subclass_percent to [0, 0, 0, 0, 0, 100]>>
<<default>>
<<set $subclass_percent to [0, 0, 0, 0, 0, 100]>>
<</switch>>
<</if>>
* Party Size *
Set party size limit
DUNGEON RANK
<<switch $dungeon_rank>>
<<case 1>>
<<set $min_party_size += 1>>
<<set $max_party_size += 2>>
<<case 2>>
<<set $min_party_size += 1>>
<<set $max_party_size += 2>>
<<case 3>>
<<set $min_party_size += 1>>
<<set $max_party_size += 3>>
<<case 4>>
<<set $min_party_size += 1>>
<<set $max_party_size += 3>>
<<default>>
<<set $min_party_size += 2>>
<<set $max_party_size += 3>>
<</switch>>
LOCKING SIZE TO 1 EARLY GAME
<<switch $difficulty>>
<<case "brutal">>
<<if $days < 3>>
<<set $min_party_size to 1>>
<<set $max_party_size to 1>>
<</if>>
<<case "normal">>
<<if $days < 5>>
<<set $min_party_size to 1>>
<<set $max_party_size to 1>>
<</if>>
<<case "casual">>
<<if $days < 10>>
<<set $min_party_size to 1>>
<<set $max_party_size to 1>>
<</if>>
<</switch>>
* Events *
RAID NIGHT
<<if $current_event.event === true && $current_event.name === setup.raid_night.name>>
<<set _amount to Math.round($number_of_raiders * setup.raid_night.float)>>
<<set _amount to Math.clamp(_amount, setup.raid_night.min_amount, setup.raid_night.max_amount)>>
<<set $number_of_raiders += _amount>>
RAID NIGHT ADDED _amount RAIDERS
<</if>>
* Empty Treasure Room Penalty *
NO GOLD & TREASURE PLENALTY
<<if $pc_gold === 0>>
<<set _no_gold_trigger to true>>
<<set $number_of_raiders to (Math.round($number_of_raiders / _no_gold_penalty)).clamp(1, 1000000)>>
<</if>>
* Set List of Raiders *
<<for _i = 0; _i < $number_of_raiders; _i++>>
<<set _class to clone(setup.class_list.random())>>
<<set $raiding_girls_list.push(clone(_class))>>
<<set _class_count[_class.class]++>>
<</for>>
* Add Any Raiders From Other Sources *
<<if $missionLog.anna.num === 0 && $missionLog.anna.started === true && $missionLog.anna.completed === false>>
ANNA MISSION 1
<<set _rng to random(1, 100)>>
<<if setup.annaMisLine[$missionLog.anna.num].percent + (setup.annaMisLine[$missionLog.anna.num].percent_per_rank * $dungeon_rank) >= _rng>>
<<set _pos to random($raiding_girls_list.length - 1)>>
<<set $raiding_girls_list[_pos] to $descendantSlave>>
<</if>>
<</if>>
<<for _i = 0; _i < $hired_raiders.length; _i++>>
<<set $number_of_raiders++>>
<<set $raiding_girls_list.push($hired_raiders[_i])>>
<<set _class_count[$hired_raiders[_i].class]++>>
<</for>>
MIRROR TREASURES
STUDDED MIRROR
<<set _studded_trig to false>>
<<set _rng to random(1, 100)>>
<<set _studded_percent to setup.common_treasure_01.percent * $treasureroom_inventory.count(setup.common_treasure_01.name)>>
<<if _studded_percent >= _rng>>
<<set _class to clone(setup.class_list.random())>>
<<switch $dungeon_rank>>
<<case 1 2 3>>
<<set _class.subclass to clone(setup.rookie)>>
<<case 4>>
<<set _class.subclass to clone(setup.novice)>>
<<default>>
<<set _class.subclass to clone(setup.adept)>>
<</switch>>
<<set $number_of_raiders++>>
<<set $raiding_girls_list.push(_class)>>
<<set _class_count[_class.class]++>>
<<set _studded_trig to true>>
<</if>>
GARNISHED MIRROR
<<set _garnished_trig to false>>
<<set _rng to random(1, 100)>>
<<set _garnished_percent to setup.common_treasure_02.percent * $treasureroom_inventory.count(setup.common_treasure_02.name)>>
<<if _garnished_percent >= _rng>>
<<set _class to clone(setup.class_list.random())>>
<<switch $dungeon_rank>>
<<case 1>>
<<set _class.subclass to clone(setup.adept)>>
<<case 2>>
<<set _class.subclass to clone(setup.expert)>>
<<case 3>>
<<set _class.subclass to clone(setup.veteran)>>
<<default>>
<<set _class.subclass to clone(setup.master)>>
<</switch>>
<<set $number_of_raiders++>>
<<set $raiding_girls_list.push(_class)>>
<<set _class_count[_class.class]++>>
<<set _garnished_trig to true>>
<</if>>
GOLDEN MIRROR
<<set _golden_trig to false>>
<<set _rng to random(1, 100)>>
<<set _golden_percent to setup.uncommon_treasure_08.percent * $treasureroom_inventory.count(setup.uncommon_treasure_08.name)>>
<<if _golden_percent >= _rng>>
<<set _class to clone(setup.class_list.random())>>
<<set _class.special_trait to clone(setup.wealthy)>>
<<set $number_of_raiders++>>
<<set $raiding_girls_list.push(_class)>>
<<set _class_count[_class.class]++>>
<<set _golden_trig to true>>
<</if>>
FLAWLESS MIRROR
<<set _flawless_trig to false>>
<<set _rng to random(1, 100)>>
<<set _flawless_percent to setup.uncommon_treasure_09.percent * $treasureroom_inventory.count(setup.uncommon_treasure_09.name)>>
<<if _flawless_percent >= _rng>>
<<set _class to clone(setup.class_list.random())>>
<<set _class.special_trait to clone(setup.famous)>>
<<set $number_of_raiders++>>
<<set $raiding_girls_list.push(_class)>>
<<set _class_count[_class.class]++>>
<<set _flawless_trig to true>>
<</if>>
PURITY MIRROR
<<set _purity_trig to false>>
<<set _rng to random(1, 100)>>
<<set _purity_percent to setup.rare_treasure_01.percent * $treasureroom_inventory.count(setup.rare_treasure_01.name)>>
<<if _purity_percent >= _rng>>
<<set _class to clone(setup.class_list.random())>>
<<set _class.special_trait to clone(setup.virgin)>>
<<set $number_of_raiders++>>
<<set $raiding_girls_list.push(_class)>>
<<set _class_count[_class.class]++>>
<<set _purity_trig to true>>
<</if>>
* Raider Grinder *
* Set Special Trait List & Percent they Appear*
<<switch $dungeon_rank>>
<<case 1>>
<<set _special_trait_rng to 25>>
<<set _special_traits to [setup.virgin, setup.wealthy, setup.wealthy, setup.famous, setup.famous]>>
<<case 2>>
<<set _special_trait_rng to 20>>
<<set _special_traits to [setup.virgin, setup.slut, setup.slut, setup.wealthy, setup.wealthy, setup.famous, setup.famous]>>
<<case 3>>
<<set _special_trait_rng to 15>>
<<set _special_traits to [setup.virgin, setup.slut, setup.slut, setup.wealthy, setup.wealthy, setup.famous, setup.famous]>>
<<case 4>>
<<set _special_trait_rng to 10>>
<<set _special_traits to [setup.virgin, setup.slut, setup.slut, setup.wealthy, setup.wealthy, setup.famous, setup.famous]>>
<<default>>
<<set _special_trait_rng to 5>>
<<set _special_traits to [setup.virgin, setup.slut, setup.slut, setup.wealthy, setup.wealthy, setup.famous, setup.famous]>>
<</switch>>
SPECIALIST GROUP EVENT
<<if $current_event.event === true && $current_event.name === setup.specialist_group.name>>
<<set _special_trait_rng to Math.trunc(_special_trait_rng * setup.specialist_group.float)>>
<</if>>
<<for _i = 0; _i < $raiding_girls_list.length; _i++>>
<<if $raiding_girls_list[_i].grinded === false>>
<<RaiderGrinder $raiding_girls_list[_i]>>
<</if>>
SET RAIDER INDEX
<<set $raiding_girls_list[_i].index to clone($sIndex)>>
<<set $sIndex++>>
<</for>>
* Events *
DARK MOON
<<if $current_event.event === true && $current_event.name === setup.dark_moon.name>>
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if $dungeon_floor_list[_z].room_type === "Creature">>
CREATE NEW EFFECT
<<set _newEffect to clone(setup.creature_effect)>>
<<set _newEffect.name to setup.dark_moon.name>>
<<set _newEffect.id to setup.dark_moon.name>>
<<set _newEffect.effect_types to ["Raid"]>>
<<set _newEffect.tooltip to setup.dark_moon.effect_tooltip>>
<<set _newEffect.icon to setup.effect_icons.event>>
<<set _newEffect.hp_float to setup.dark_moon.float>>
<<set _newEffect.atk_float to setup.dark_moon.float>>
<<set _newEffect.sex_float to setup.dark_moon.float>>
<<set _newEffect.pres_float to setup.dark_moon.float>>
<<set _newEffect.mres_float to setup.dark_moon.float>>
ADD Effect
<<set $dungeon_floor_list[_z].effects.push(_newEffect)>>
<<set $dungeon_floor_list[_z].effect_names.push(_newEffect.id)>>
<</if>>
<</for>>
<</if>>
* Player Mission *
MALLORY MISSION 1
<<if $missionLog.mallory.num === 0 && $missionLog.mallory.unlocked === false && $dungeon_rank >= setup.malloryMisLine[$missionLog.mallory.num].rank>>
<<if $number_of_raiders >= setup.malloryMisLine[$missionLog.mallory.num].raider_goal>>
<<set $missionLog.mallory.unlocked to true>>
<<set $newMission_bool to true>>
<</if>>
<</if>>
* Blessings *
ENERGY CONVERSION
<<set _blessing to clone($pc_blessing_list.delete("Energy Conversion I", "Energy Conversion II"))>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.gift.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.gift[_z].name)>>
CONVERY ENERGY
<<set $pc_cur_mana += Math.trunc($pc_cur_energy * setup.allBlessingList.gift[_z].float)>>
<<set $pc_cur_energy to 0>>
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
END LOOP
<<break>>
<</if>>
<</for>>
<</if>>
CLOAK OF DARKNESS
<<if $pc_blessing_list.includes("Cloak of Darkness")>>
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if $dungeon_floor_list[_z].room_type === "Creature">>
UPDATE STATS
<<CreatureStats $dungeon_floor_list[_z]>>
COPY INFO
<<set _info to clone(setup.blessing_05_12)>>
<<set _shield_amount to Math.round($dungeon_floor_list[_z].cur_max_hp * _info.float)>>
SHIELD STRENGTH: _shield_amount
CREATE BUFF
<<set _newBuff to clone(setup.creature_effect)>>
<<set _newBuff.id to _info.id>>
<<set _newBuff.effect_type to _info.effect_types>>
<<set _newBuff.shield to _shield_amount>>
<<set _newBuff.icon to setup.effect_icons.blessing>>
UPDATE NAME AND TOOLTIP
<<set _newBuff.name to setup.blessing_06_5.id + " ("+_newBuff.shield+")">>
<<set _newBuff.tooltip to _info.effect_tooltip>>
PUSH BUFF IN ROOM
<<set $dungeon_floor_list[_z].effects.push(clone(_newBuff))>>
<<set $dungeon_floor_list[_z].effect_names.push(clone(_newBuff.id))>>
<</if>>
<</for>>
<</if>>
KINDRED MONSTROSITY
<<set _blessing to $pc_blessing_list.delete("Kindred Monstrosity I", "Kindred Monstrosity II")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.power.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.power[_z].name)>>
<<set _info to clone(setup.allBlessingList.power[_z])>>
<<for _t = 0; _t < $dungeon_floor_list.length; _t++>>
<<if $dungeon_floor_list[_t].room_type === "Creature">>
CREATE EFFECT
<<set _newBuff to clone(setup.creature_effect)>>
<<set _newBuff.id to _info.id>>
<<set _newBuff.name to _info.name>>
<<set _newBuff.effect_types to ["Raid"]>>
<<set _newBuff.icon to setup.effect_icons.blessing>>
<<set _newBuff.cur_float to _info.float>>
CREATE TOOLTIP
<<set _num to _newBuff.cur_float * 100>>
<<if $dungeon_floor_list[_t].attack_type === "Physical">>
<<set _newBuff.tooltip to "Increases @@.phy;Physical@@ and @@.sex;Sexual@@ Attacks by " + _num + "% for each other Creature in your Dungeon that shares a Creature type with it until the end of the night.">>
<<else>>
<<set _newBuff.tooltip to "Increases @@.mag;Magical@@ and @@.sex;Sexual@@ Attacks by " + _num + "% for each other Creature in your Dungeon that shares a Creature type with it until the end of the night.">>
<</if>>
ADD EFFECT
<<set $dungeon_floor_list[_t].effects.push(_newBuff)>>
<<set $dungeon_floor_list[_t].effect_names.push(_newBuff.id)>>
<<else>>
<<continue>>
<</if>>
<</for>>
ADD BLESSING BACK
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
KINDRED PROTECTION
<<set _blessing to $pc_blessing_list.delete("Kindred Protection I", "Kindred Protection II")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.endurance.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.endurance[_z].name)>>
<<set _info to clone(setup.allBlessingList.endurance[_z])>>
<<for _t = 0; _t < $dungeon_floor_list.length; _t++>>
<<if $dungeon_floor_list[_t].room_type === "Creature">>
CREATE EFFECT
<<set _newBuff to clone(setup.creature_effect)>>
<<set _newBuff.id to _info.id>>
<<set _newBuff.name to _info.name>>
<<set _newBuff.effect_types to ["Raid"]>>
<<set _newBuff.icon to setup.effect_icons.blessing>>
<<set _newBuff.cur_float to _info.float>>
CREATE TOOLTIP
<<set _num to _newBuff.cur_float * 100>>
<<set _newBuff.tooltip to "Increases @@.pres;Physical@@ and @@.mres;Magical@@ Resistances by " + _num + "% for each other Creature in your Dungeon that shares a Creature type with it until the end of the night.">>
ADD EFFECT
<<set $dungeon_floor_list[_t].effects.push(_newBuff)>>
<<set $dungeon_floor_list[_t].effect_names.push(_newBuff.id)>>
<<else>>
<<continue>>
<</if>>
<</for>>
ADD BLESSING BACK
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
VIOLENT ANTICIPATION
<<if $pc_blessing_list.includes("Violent Anticipation")>>
<<set _info to clone(setup.blessing_04_5)>>
<<for _c = 0; _c < $dungeon_floor_list.length; _c++>>
<<if $dungeon_floor_list[_c].room_type === "Creature">>
CREATE EFFECT
<<set _newBuff to clone(setup.creature_effect)>>
<<set _newBuff.id to _info.id>>
<<set _newBuff.effect_types to ["Raid"]>>
<<set _newBuff.icon to setup.effect_icons.blessing>>
<<set _newBuff.atk_int to _info.int * $number_of_raiders>>
<<set _newBuff.sex_int to _info.int * $number_of_raiders>>
CREATE TOOLTIP
<<if $dungeon_floor_list[_c].attack_type === "Physical">>
<<set _newBuff.tooltip to "Increases @@.phy;Physical@@ and @@.sex;Sexual@@ Attack stats by "+_info.int+" for each Raider entering your Dungeon tonight.">>
<<else>>
<<set _newBuff.tooltip to "Increases @@.mag;Magical@@ and @@.sex;Sexual@@ Attack stats by "+_info.int+" for each Raider entering your Dungeon tonight.">>
<</if>>
UPDATE NAME
<<set _newBuff.name to _info.name +" x"+$number_of_raiders>>
ADD BUFF
<<set $dungeon_floor_list[_c].effects.push(_newBuff)>>
<<set $dungeon_floor_list[_c].effect_names.push(_newBuff.id)>>
<</if>>
<</for>>
<</if>>
PROTECTIVE INSTINCT
<<if $pc_blessing_list.includes("Protective Instinct")>>
<<set _info to clone(setup.blessing_05_7)>>
<<for _c = 0; _c < $dungeon_floor_list.length; _c++>>
<<if $dungeon_floor_list[_c].room_type === "Creature">>
CREATE EFFECT
<<set _newBuff to clone(setup.creature_effect)>>
<<set _newBuff.id to _info.id>>
<<set _newBuff.effect_types to ["Raid"]>>
<<set _newBuff.icon to setup.effect_icons.blessing>>
<<set _newBuff.pres_int to _info.int * $number_of_raiders>>
<<set _newBuff.mres_int to _info.int * $number_of_raiders>>
CREATE TOOLTIP
<<set _newBuff.tooltip to "Increases @@.pres;Physical@@ and @@.mres;Magical@@ Resistance stats by "+_info.int+" for each Raider entering your Dungeon tonight.">>
UPDATE NAME
<<set _newBuff.name to _info.name +" x"+$number_of_raiders>>
ADD BUFF
<<set $dungeon_floor_list[_c].effects.push(_newBuff)>>
<<set $dungeon_floor_list[_c].effect_names.push(_newBuff.id)>>
<</if>>
<</for>>
<</if>>
* Treasures *
* Set Creatures Current Health *
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if $dungeon_floor_list[_z].room_type === "Creature">>
<<CreatureStats $dungeon_floor_list[_z]>>
<</if>>
<</for>>
* Start Raid *
<<set $is_raiding to true>> set trigger for some links that take it to a raiding passage instead of out of the raid (E.I. checking rooms, spell book, ect)
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Pre Raid Report
</div>\
<div class="container-preraid">\
<div class="cardholder-preraid">\
<div class="titlebox-preraid">\
Slaves
</div>\
<div class="textbox-preraid">\
<<if _slavesOwned === 0>>\
<li>You don't own any Slaves.</li>\
<</if>>\
<<if $cur_slave_jobs.length === 1>>\
<li>1 Slave is working their assigned Job.</li>\
<<elseif $cur_slave_jobs.length > 1>>\
<li>$cur_slave_jobs.length Slaves are working their assigned Jobs.</li>\
<</if>>\
<<if _slavesQuesting === 1>>\
<li>1 Slave is on a Quest.</li>\
<<elseif _slavesQuesting > 1>>\
<li>_slavesQuesting Slaves are on a Quest.</li>\
<</if>>\
<<if _slavesLearning === 1>>\
<li>1 Slave is in a Class.</li>\
<<elseif _slavesLearning > 1>>\
<li>_slavesLearning Slaves are in a Class.</li>\
<</if>>\
<<if $slave_nowork_count === 1>>\
<li>1 Slave isn't working.</li>\
<<elseif $slave_nowork_count > 1>>\
<li>$slave_nowork_count Slaves aren't working.</li>\
<</if>>\
</div>\
<div class="tablebox-preraid">\
</div>\
</div>\
</div>\
<div class="container-preraid">\
<div class="cardholder-preraid">\
<div class="titlebox-preraid">\
Raiders
</div>\
<div class="textbox-preraid">\
<<if $number_of_raiders === 1>>\
<li>The scouting report indicates you have one Raider coming to your Dungeon tonight.</li>\
<<else>>\
<li>The scouting report indicates you have $number_of_raiders Raiders coming to your Dungeon tonight.</li>\
<</if>>\
<<if _no_gold_trigger === true>>\
<li>Because your Vault has no <span style="color:gold">Gold</span>, far fewer Raiders showed up than expected.</li>\
<</if>>\
<<if _studded_trig === true>>\
<li>A low Rank Raider was Lured to your Dungeon.</li>\
<</if>>\
<<if _garnished_trig === true>>\
<li>A high Rank Raider was Lured to your Dungeon.</li>\
<</if>>\
<<if _golden_trig === true>>\
<li>A Wealthy Raider was Lured to your Dungeon.</li>\
<</if>>\
<<if _flawless_trig === true>>\
<li>A Famous Raider was Lured to your Dungeon.</li>\
<</if>>\
<<if _purity_trig === true>>\
<li>A Virgin Raider was Lured to your Dungeon.</li>\
<</if>>\
</div>\
<div class="tablebox-preraid">\
</div>\
</div>\
</div>\
</div>\
<<silently>>\
* SET LINK *
<<if $cur_slave_jobs.length > 0>>
<<set $cur_job to $cur_slave_jobs.pluck()>>
<<set $link to $cur_job.passage>>
<<else>>
<<set $link to "Raiding Party">>
<<unset $cur_job>>
<</if>>
<</silently>>\
<div class="exit-link-right">\
<span id="forward"><<button [[Continue|$link]]>><<unset $link>><</button>></span>
</div>\<<silently>>\
* Variables *
* Find Next Report *
<<if $cur_report_num === $raider_report_list.length - 1>>
<<set _next_report to "">>
<<else>>
<<set _next_report_num to $cur_report_num + 1>>
<<set _next_report to $raider_report_list[_next_report_num]>>
<</if>>
*Find Previous Report *
<<if $cur_report_num === 0>>
<<set _prev_report to "">>
<<else>>
<<set _prev_report_num to $cur_report_num - 1>>
<<set _prev_report to $raider_report_list[_prev_report_num]>>
<</if>>
* Display *
<</silently>>\
<div class="titlebox">\
$cur_report.name's Log
</div>\
<div class="detailreport-raider-single-container">\
<div class="detailreport-raider-single-picbox">\
$cur_report.result_pic
</div>\
</div>\
<div class="detailreport-raider-single-container">\
<div class="detailreport-raider-single-holder">\
<div class="detailreport-raider-single-textbox">\
<<for _i = 0; _i < $cur_report.log.length; _i++>>\
<<if $cur_report.log[_i].type === "Entrance">>\
<<- _i + 1>>. $cur_report.log[_i].title
<<if $cur_report.log[_i].entry.length > 0>>\
<<for _e = 0; _e < $cur_report.log[_i].entry.length; _e++>>\
<li>$cur_report.log[_i].entry[_e]</li>\
<</for>>\
<</if>>\
<<elseif $cur_report.log[_i].type === "Between">>\
<<- _i + 1>>. $cur_report.log[_i].title
<<for _e = 0; _e < $cur_report.log[_i].entry.length; _e++>>\
<li>$cur_report.log[_i].entry[_e]</li>\
<</for>>\
<<elseif $cur_report.log[_i].type === "Room">>\
<<- _i + 1>>. $cur_report.log[_i].title
<<for _e = 0; _e < $cur_report.log[_i].entry.length; _e++>>\
<li>$cur_report.log[_i].entry[_e]</li>\
<</for>>\
<<elseif $cur_report.log[_i].type === "Cleared">>\
<<- _i + 1>>. $cur_report.log[_i].title
<<if $cur_report.log[_i].gold === 0>>\
<li>There was no <span style="color:gold">Gold</span> for her to steal.</li>\
<<elseif $cur_report.log[_i].gold < $cur_report.log[_i].desired_gold>>\
<li>She only stole <span style="color:gold">$cur_report.log[_i].gold Gold</span> before your Vault ran out of loot to steal.</li>\
<<else>>\
<li>She looted <span style="color:gold">$cur_report.log[_i].gold Gold</span> from your Vault.</li>\
<</if>>\
<<if $cur_report.log[_i].treasure != "">>\
<li>She stole your <span @class='$cur_report.log[_i].treasure.rarity'>$cur_report.log[_i].treasure.name</span>.</li>\
<</if>>\
<<if $cur_report.log[_i].gold === 0 || $cur_report.log[_i].gold < $cur_report.log[_i].desired_gold>>\
<li>She was not satisfied and your @@.rep;Reputation@@ was heavily damaged.</li>\
<</if>>\
<<else>>\
<<- _i + 1>>. $cur_report.log[_i].title
<</if>>\
<</for>>\
</div>\
<div class="detailreport-raider-single-buttonholder">\
<div class="detailreport-raider-single-buttonbox">\
<<if _prev_report === "">>\
<div class="offbutton">\
<<button "Previous Report">><</button>>
</div>\
<<else>>\
<span id="left"><<button [[Previous Report|Raider Report]]>><<set $cur_report to _prev_report>><<set $cur_report_num-->><</button>></span>
<</if>>\
</div>\
<div class="detailreport-raider-single-buttonbox">\
<<if _next_report === "">>\
<div class="offbutton">\
<<button "Next Report">><</button>>
</div>\
<<else>>\
<span id="right"><<button [[Next Report|Raider Report]]>><<set $cur_report to _next_report>><<set $cur_report_num++>><</button>></span>
<</if>>\
</div>\
</div>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Daily Raider Report]]>><</button>></span>
</div>\
<<switch $dungeon_rank>>\
<<case 2>>\
<<if !$page>>\
<<set $page to 1>>\
<</if>>\
<<switch $page>>\
<<case 1>>\
<div class="section">\
<div class="titlebox">\
Rank Up!
</div>\
<div class="picbox-intro">\
[img[images/mistress/body_4.jpg]]
</div>\
<div class="textbox-intro">\
You return to your Dungeon from the Adventurer's Guild after finishing up the ranking process and are greeted by Ahri.
@@.npc-dialogue;Welcome back, $pc_name! I'm so proud of you, already ranking up this run-down dungeon of mine into something adventurers are talking about. I truly did find the right man for the job.@@
While the praise feels nice, you still have your doubts about the situation you are in.
@@.pc-dialogue;Thank you, I will continue doing the best I can.@@
@@.npc-dialogue;Don't you want a little something extra for doing such a good job?@@
@@.pc-dialogue;As long as it doesn't kill me.@@
@@.npc-dialogue;Hmph, you still don't fully trust me yet, do you?@@
@@.pc-dialogue;Hell no.@@
@@.npc-dialogue;That's probably for the best. But I do value your hard work and commitment as the Dungeon Lord, so I'm gonna give you a reward!@@
</div>\
<div class="exit-link-right">\
<<button [[Next|Rank Up Reward]]>><<set $page++>><</button>>
</div>\
</div>\
<<case 2>>
<div class="section">\
<div class="titlebox">\
Rank Up!
</div>\
<div class="picbox-intro">\
[img[images/mistress/bj_1.jpg]]
</div>\
<div class="textbox-intro">\
She kneels down in front of you and pulls out your dick and starts stroking it, making it stiff.
@@.pc-dialogue;Aren't you going to drain my energy if we do this?@@
@@.npc-dialogue;I can also give energy through sexual pleasure too. I am the goddess of lust after all.@@
@@.pc-dialogue;But can I trust you?@@
@@.npc-dialogue;Feel free to stop me whenever you'd like.@@
You decided to let her do what she wanted for now, as it was starting to feel good. She alternated between stroking your cock, licking the head, and taking it in her mouth. She slid her kimono down to expose her breasts and started to suck your cock hard, rolling her tongue around the shaft. Instead of the normal feeling of being drained, you feel energized. Maybe she was being honest about giving you a reward. She stops and sits up in front of you, waiting for you to finish on her. You grab your shaft and stroke while looking down at her. She is fixated on your dick, waiting for your cum to shoot out on her. You quicken your pace as she starts getting excited, whispering your name and touching herself until you explode onto her face and tits. She licks around her lips and swallows.
@@.npc-dialogue;Hopefully you trust me a little more now. Keep up the good work, my Dungeon Lord.@@
<div class="text-center-bold">You gained <span class="le">3 Lust Essence</span>. Your next Creature or Trap unlocked is free.</div>
</div>\
<div class="exit-link-right">\
<<button [[Back|Rank Up Reward]]>><<set $page-->><</button>> <<button [[Next|Player's Stats]]>><<set $pc_lust += 3>><<set $free_room_count++>><</button>>
</div>\
</div>\
<</switch>>
<<case 3>>
<<set $page to 1>>\
<<switch $page>>\
<<case 1>>\
<div class="section">\
<div class="titlebox">\
Rank Up!
</div>\
<div class="picbox">\
</div>\
<div class="textbox">\
WORDS!
</div>\
<div class="exit-link-right">\
<<button [[Next|Rank Up Reward]]>><<set $page++>><</button>> <<button [[Exit|Main Menu]]>><<set $pc_lust += 5>><</button>>
</div>\
</div>\
<<case 2>>
<div class="section">\
<div class="titlebox">\
Rank Up!
</div>\
<div class="picbox">\
</div>\
<div class="textbox">\
WORDS!
</div>\
<div class="exit-link-right">\
<<button [[Back|Rank Up Reward]]>><<set $page-->><</button>> <<button [[Exit|Main Menu]]>><<set $pc_lust += 5>><</button>>
</div>\
</div>\
<</switch>>
<<case 4>>
<<set $page to 1>>\
<<switch $page>>\
<<case 1>>\
<div class="section">\
<div class="titlebox">\
Rank Up!
</div>\
<div class="picbox">\
</div>\
<div class="textbox">\
WORDS!
</div>\
<div class="exit-link-right">\
<<button [[Next|Rank Up Reward]]>><<set $page++>><</button>> <<button [[Exit|Main Menu]]>><<set $pc_lust += 5>><</button>>
</div>\
</div>\
<<case 2>>
<div class="section">\
<div class="titlebox">\
Rank Up!
</div>\
<div class="picbox">\
</div>\
<div class="textbox">\
WORDS!
</div>\
<div class="exit-link-right">\
<<button [[Back|Rank Up Reward]]>><<set $page-->><</button>> <<button [[Exit|Main Menu]]>><<set $pc_lust += 5>><</button>>
</div>\
</div>\
<</switch>>
<<case 5>>
<<set $page to 1>>\
<<switch $page>>\
<<case 1>>\
<div class="section">\
<div class="titlebox">\
Rank Up!
</div>\
<div class="picbox">\
</div>\
<div class="textbox">\
WORDS!
</div>\
<div class="exit-link-right">\
<<button [[Next|Rank Up Reward]]>><<set $page++>><</button>> <<button [[Exit|Main Menu]]>><<set $pc_lust += 5>><</button>>
</div>\
</div>\
<<case 2>>
<div class="section">\
<div class="titlebox">\
Rank Up!
</div>\
<div class="picbox">\
</div>\
<div class="textbox">\
WORDS!
</div>\
<div class="exit-link-right">\
<<button [[Back|Rank Up Reward]]>><<set $page-->><</button>> <<button [[Exit|Main Menu]]>><<set $pc_lust += 5>><</button>>
</div>\
</div>\
<</switch>>
<<case 6>>
<<set $page to 1>>\
<<switch $page>>\
<<case 1>>\
<div class="section">\
<div class="titlebox">\
Rank Up!
</div>\
<div class="picbox">\
</div>\
<div class="textbox">\
WORDS!
</div>\
<div class="exit-link-right">\
<<button [[Next|Rank Up Reward]]>><<set $page++>><</button>> <<button [[Exit|Main Menu]]>><<set $pc_lust += 5>><</button>>
</div>\
</div>\
<<case 2>>
<div class="section">\
<div class="titlebox">\
Rank Up!
</div>\
<div class="picbox">\
</div>\
<div class="textbox">\
WORDS!
</div>\
<div class="exit-link-right">\
<<button [[Back|Rank Up Reward]]>><<set $page-->><</button>> <<button [[Exit|Main Menu]]>><<set $pc_lust += 5>><</button>>
</div>\
</div>\
<</switch>>
<</switch>>
<<widget "SlaveGrinder">>
args[0] is slave
args[1] is virgin trait rate
args[2] is rare trait rate
args[3] is slave market trait rate
args[4] is raider trait rate
* Name *
<<if _args[0].name === "">>
<<set _args[0].name to setup.girl_names_list.random()>>
<</if>>
* Choose Slave Pack *
<<if _args[0].slave_pack != "">>
CAPTURED RAIDER WITH SLAVE PACK
<<elseif _args[0].body_type != "">>
CAPTURED RAIDER WITH NO SLAVE PACK
CHOOSE RANDOM PACK FROM UNUSED LIST
<<if _unused_slave_packs[_args[0].body_type].length > 0>>
<<set _pack to _unused_slave_packs[_args[0].body_type].pluck()>>
MOVE PACK INTO USED LIST
<<set _used_slave_packs[_args[0].body_type].push(_pack)>>
ASSIGN PACK TO SLAVE
<<set _args[0].slave_pack to _pack>>
DOUBLE CHECK TO MAKE SURE A SLAVE PACK WAS FOUND
<<else>>
CHOOSE RANDOM PACK FROM USED LIST
<<set _args[0].slave_pack to _used_slave_packs[_args[0].body_type].random()>>
<</if>>
<<else>>
NEW SLAVE
<<set _total to _unused_slave_packs.slender.length + _unused_slave_packs.average.length + _unused_slave_packs.busty.length>>
<<if _total > 0>>
<<set _slender_rate to Math.trunc((_unused_slave_packs.slender.length / _total) * 100)>>
<<set _average_rate to Math.trunc((_unused_slave_packs.average.length / _total) * 100) + _slender_rate>>
<<set _busty_rate to Math.trunc((_unused_slave_packs.busty.length / _total) * 100) + _average_rate>>
<<set _rng to random(1, 100)>>
<<if _rng <= _slender_rate>>
<<set _args[0].body_type to "slender">>
<<elseif _rng <= _average_rate>>
<<set _args[0].body_type to "average">>
<<elseif _rng > _average_rate>>
<<set _args[0].body_type to "busty">>
<<else>>
<<set _options to []>>
<<if _unused_slave_packs.busty.length > 1>>
<<set _options.push("busty")>>
<</if>>
<<if _unused_slave_packs.average.length > 1>>
<<set _options.push("average")>>
<</if>>
<<if _unused_slave_packs.slender.length > 1>>
<<set _options.push("slender")>>
<</if>>
<<set _args[0].body_type to _options.random()>>
<</if>>
CHOOSE RANDOM PACK FROM LIST
<<set _pack to _unused_slave_packs[_args[0].body_type].pluck()>>
<<set _args[0].slave_pack to _pack>>
SEND TO USED LIST
<<set _used_slave_packs[_args[0].body_type].push(_pack)>>
<<else>>
<<set _total to _used_slave_packs.slender.length + _used_slave_packs.average.length + _used_slave_packs.busty.length>>
<<set _slender_rate to Math.trunc((_used_slave_packs.slender.length / _total) * 100)>>
<<set _average_rate to Math.trunc((_used_slave_packs.average.length / _total) * 100) + _slender_rate>>
<<set _busty_rate to Math.trunc((_used_slave_packs.busty.length / _total) * 100) + _average_rate>>
<<set _rng to random(1, 100)>>
<<if _rng <= _slender_rate>>
<<set _args[0].body_type to "slender">>
<<elseif _rng <= _average_rate>>
<<set _args[0].body_type to "average">>
<<elseif _rng > _average_rate>>
<<set _args[0].body_type to "busty">>
<<else>>
<<set _options to []>>
<<if _used_slave_packs.busty.length > 1>>
<<set _options.push("busty")>>
<</if>>
<<if _used_slave_packs.average.length > 1>>
<<set _options.push("average")>>
<</if>>
<<if _used_slave_packs.slender.length > 1>>
<<set _options.push("slender")>>
<</if>>
<<set _args[0].body_type to _options.random()>>
<</if>>
CHOOSE RANDOM PACK FROM USED LIST
<<set _args[0].slave_pack to _used_slave_packs[_args[0].body_type].random()>>
<</if>>
<</if>>
SET BODY AND FACE PIC
<<if _args[0].slave_pack.slave>>
<<set _args[0].body_pic to _args[0].slave_pack.slave.random()>>
<</if>>
<<if _args[0].slave_pack.face>>
<<set _args[0].pic to _args[0].slave_pack.face.random()>>
<</if>>
* Slave Stats *
<<set _stats to ["obedience", "libido", "strength", "intelligence"]>>
<<switch _args[0].rating>>
<<case "Rookie">>
<<set _points to random(1, 4)>>
<<set _max_amount to 3>>
<<case "Novice">>
<<set _points to random(4, 7)>>
<<set _max_amount to 6>>
<<case "Adept">>
<<set _points to random(7, 10)>>
<<set _max_amount to 9>>
<<case "Expert">>
<<set _points to random(10, 13)>>
<<set _max_amount to 12>>
<<case "Veteran">>
<<set _points to random(13, 17)>>
<<set _max_amount to 15>>
<<case "Master">>
<<set _points to random(17, 20)>>
<<set _max_amount to 18>>
<</switch>>
<<for _p = _points; _p > 0; _p-->>
<<set _remove to []>>
<<for _s = 0; _s < _stats.length; _s++>>
<<if _args[0][_stats[_s]] >= _max_amount>>
<<set _remove.push(_s)>>
<</if>>
<</for>>
<<set _delete to _stats.deleteAt(_remove)>>
<<set _args[0][_stats.random()]++>>
<</for>>
GODDESS CHARM BLESSING
<<set _blessing to $pc_blessing_list.delete("Goddess's Charm I", "Goddess's Charm II", "Goddess's Charm III", "Goddess's Charm IV", "Goddess's Charm V")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.charm.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.charm[_z].name)>>
<<set _info to clone(setup.allBlessingList.charm[_z])>>
UPDATE LOVE
<<set _args[0].love to _info.int>>
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
* Positive Traits *
SET TRAITS
<<set _pos_traits to clone(setup.pos_slave_trait_array)>>
<<set _positive_trait_count to 2>>
POSITIVE TRAITS
<<set _rng to (randomFloat(1)).toFixed(3)>>
RNG is _rng, VIRGIN TRAIT % is _args[2]
VIRGIN TRAIT CHECK
<<if _args[1] > _rng && _positive_trait_count > 0>>
<<set _args[0].traits.push(clone(setup.virginity))>>
<<set _positive_trait_count-->>
REDUCE OTHER RATES
<<set _args[3] to Math.round(_args[3] / 2)>>
<<set _args[4] to Math.round(_args[4] / 2)>>
IF NOT VIRGIN, RARE TRAIT CHECK
<<else>>
<<set _rng to (randomFloat(1)).toFixed(3)>>
RNG is _rng, RARE TRAIT % is _args[2]
<<if _args[2] > _rng && _positive_trait_count > 0>>
<<set _args[0].traits.push(clone(setup.rare_slave_trait_array.random()))>>
<<set _positive_trait_count-->>
<</if>>
<</if>>
SLAVE MARKET TRAIT CHECK
<<set _rng to (randomFloat(1)).toFixed(3)>>
RNG is _rng, MARKET TRAIT % is _args[3]
<<if _args[3] > _rng && _positive_trait_count > 0>>
<<set _args[0].traits.push(clone(setup.market_slave_trait_array.random()))>>
<<set _positive_trait_count-->>
<</if>>
RAIDER TRAIT CHECK
<<set _rng to (randomFloat(1)).toFixed(3)>>
RNG is _rng, RAIDER TRAIT % is _args[4]
<<if _args[4] > _rng && _positive_trait_count > 0>>
<<set _args[0].traits.push(clone(setup.raid_slave_trait_array.random()))>>
<<set _positive_trait_count-->>
<</if>>
ADD COMMON TRAITS
<<set _traits to _pos_traits.pluckMany(_positive_trait_count)>>
<<if _traits.length > 0>>
<<set _args[0].traits to _args[0].traits.concat(_traits)>>
<</if>>
* Negative Traits *
<<set _neg_traits to clone(setup.neg_slave_trait_array)>>
REMOVE NEGAITVE TRAITS THAT CONFLICT WITH POSITIVE TRAITS
<<set _conflicting_traits to []>>
<<for _z = 0; _z < _args[0].traits.length; _z++>>
<<set _args[0].trait_names.push(_args[0].traits[_z].name)>>
<</for>>
REMOVE NEG STAT GROWTH TRAITS
<<if _args[0].trait_names.includesAny("Adoring")>>
<<set _conflicting_traits.push(setup.bitter.name)>>
<</if>>
<<if _args[0].trait_names.includesAny("Behaved")>>
<<set _conflicting_traits.push(setup.rebel.name)>>
<</if>>
<<if _args[0].trait_names.includesAny("Sensual")>>
<<set _conflicting_traits.push(setup.shy.name)>>
<</if>>
<<if _args[0].trait_names.includesAny("Vigorous")>>
<<set _conflicting_traits.push(setup.feeble.name)>>
<</if>>
<<if _args[0].trait_names.includesAny("Brilliant")>>
<<set _conflicting_traits.push(setup.airhead.name)>>
<</if>>
REMOVE NEG INJURED TRAITS
<<if _args[0].trait_names.includesAny("Sturdy")>>
<<set _conflicting_traits.push(setup.soft.name)>>
<</if>>
REMOVE NEG UPKEEP TRAITS
<<if _args[0].trait_names.includesAny("Simplistic", "Fond")>>
<<set _conflicting_traits.push(setup.spoiled.name)>>
<</if>>
REMOVE NEG CLIENT FIND TRAITS
<<if _args[0].trait_names.includesAny("Seductress", "Virgin")>>
<<set _conflicting_traits.push(setup.insecure.name)>>
<</if>>
REMOVE NEG PROSTITUTION RAPE TRAITS
<<if _args[0].trait_names.includesAny("Intimidating")>>
<<set _conflicting_traits.push(setup.intimidating.name)>>
<</if>>
REMOVE NEG SERVICE EXP TRAITS
<<if _args[0].trait_names.includesAny("Caring", "Virgin")>>
<<set _conflicting_traits.push(setup.rude.name)>>
<</if>>
REMOVE NEG QUEST TRAITS
<<if _args[0].trait_names.includesAny("Respected", "Beautiful", "Diligent")>>
<<set _conflicting_traits.push(setup.indecent.name)>>
<</if>>
REMOVE NEG CLASS TRAITS
<<if _args[0].trait_names.includesAny("Motivated", "Eloquent")>>
<<set _conflicting_traits.push(setup.lazy.name)>>
<</if>>
REMOVE NEG SEX SKILL TRAITS
<<if _args[0].trait_names.includesAny("Proficient", "Assiduous", "Talented", "Exotic")>>
<<set _conflicting_traits.push(setup.incompetent.name)>>
<</if>>
<<if _args[0].trait_names.includesAny("Restrained")>>
<<set _conflicting_traits.push(setup.troublesome.name)>>
<</if>>
REMOVE NEG STRESS REDUCED TRAITS
<<if _args[0].trait_names.includesAny("Spiritual", "Carefree")>>
<<set _conflicting_traits.push(setup.highstrung.name)>>
<</if>>
REMOVE UNLUCKY IF LUCKY
<<if _args[0].trait_names.includesAny("Lucky")>>
<<set _conflicting_traits.push(setup.unlucky.name)>>
<</if>>
REMOVE EMOTIONAL IF INCREASE OBEDIENCE CHECKS
<<if _args[0].trait_names.includesAny("Collected", "Stoic")>>
<<set _conflicting_traits.push(setup.emotional.name)>>
<</if>>
ADD NEGATIVE TRAIT
<<for _z = 0; _z < _neg_traits.length; _z++>>
<<set _trait to _neg_traits.pluck()>>
<<if _conflicting_traits.includes(_trait.name)>>
_trait.name CONFLICTS WITH POSITIVE TRAIT
POS TRAITS: <<- _args[0].trait_names>>
CONFLICTING LIST: <<- _conflicting_traits>>
<<set _z-->>
<<continue>>
<<else>>
<<break>>
<</if>>
<</for>>
<<set _args[0].traits.push(_trait)>>
<<set _args[0].trait_names.push(_trait.name)>>
* Sex Skill *
Determine how many skill points she will get based on her Rating + Libido and distribute them.
<<switch _args[0].rating>>
<<case "Rookie">>
<<set _points to random(1, 2)>>
<<case "Novice">>
<<set _points to random(3, 4)>>
<<case "Adept">>
<<set _points to random(5, 6)>>
<<case "Expert">>
<<set _points to random(7, 8)>>
<<case "Veteran">>
<<set _points to random(9, 10)>>
<<case "Master">>
<<set _points to random(11, 12)>>
<</switch>>
INCREASE BY 1 POINT EVERY 3 LIBIDO
<<set _points += Math.trunc(_args[0].libido / 3)>>
<<set _skill_list to ["handjob", "blowjob", "titjob", "footjob", "missionary", "cowgirl", "doggy", "anal"]>>
<<if _args[0].trait_names.includes("Virgin")>>
<<set _remove to _skill_list.delete("missionary", "cowgirl", "doggy_")>>
<</if>>
<<for _p = _points; _p > 0; _p-->>
<<set _choice to _skill_list.random()>>
<<set _args[0][_choice]++>>
<</for>>
* Trait Triggers *
ADORING
<<if _args[0].trait_names.includes("Adoring")>>
<<set _args[0].love_limit += setup.adoring.int>>
<</if>>
BEHAVED
<<if _args[0].trait_names.includes("Behaved")>>
<<set _args[0].obedience_limit += setup.behaved.int>>
<</if>>
SENSUAL
<<if _args[0].trait_names.includes("Sensual")>>
<<set _args[0].libido_limit += setup.sensual.int>>
<</if>>
VIGOROUS
<<if _args[0].trait_names.includes("Vigorous")>>
<<set _args[0].strength_limit += setup.vigorous.int>>
<</if>>
BRILLIANT
<<if _args[0].trait_names.includes("Brilliant")>>
<<set _args[0].intelligence_limit += setup.brilliant.int>>
<</if>>
BITTER
<<if _args[0].trait_names.includes("Bitter")>>
<<set _args[0].love_limit -= setup.bitter.int>>
<</if>>
REBEL
<<if _args[0].trait_names.includes("Rebel")>>
<<set _args[0].obedience_limit -= setup.rebel.int>>
<</if>>
SHY
<<if _args[0].trait_names.includes("Shy")>>
<<set _args[0].libido_limit -= setup.shy.int>>
<</if>>
FEEBLE
<<if _args[0].trait_names.includes("Feeble")>>
<<set _args[0].strength_limit -= setup.feeble.int>>
<</if>>
AIR HEAD
<<if _args[0].trait_names.includes("Air Head")>>
<<set _args[0].intelligence_limit -= setup.airhead.int>>
<</if>>
* Update Slave Stat EXP Tracker *
<<SlaveTrackerCalc _args[0]>>
* Calc Upkeep Cost *
<<set _args[0].base_upkeep to random(setup.min_slave_base_upkeep, setup.max_slave_base_upkeep)>>
<<SlaveUpkeepCalc _args[0]>>
* Update Grind Bool *
<<set _args[0].grinded to true>>
<</widget>><<widget "BlessingTriggers">>
Checks if new blessing has a purchase trigger and adds effects
args[0] is new blessing
<<if _args[0].trigger === true>>
<<switch _args[0].name>>
- STARTING BLESSINGS -
<<case "Lust Collector">>
LUST COLLECTOR
<<set $pc_lust += _args[0].int>>
<<case "Slave Regulator">>
SLAVE REGULATOR
<<set $pc_max_energy += _args[0].int>>
<<set $pc_cur_energy += _args[0].int>>
<<case "Lewd Harvester">>
LEWD HARVESTER
<<set $pc_max_mana += _args[0].int>>
<<set $pc_cur_mana += _args[0].int>>
<<case "Hoarding Lord">>
HOARDING LORD
<<set $pc_gold += _args[0].int>>
- GODDESS'S GIFT TREE -
<<case "Goddess's Gift I" "Goddess's Gift II" "Goddess's Gift III" "Goddess's Gift IV" "Goddess's Gift V">>
GODDESS'S GIFT
<<set $pc_max_energy += _args[0].int>>
<<set $pc_cur_energy += _args[0].int>>
<<set $pc_max_mana += _args[0].int>>
<<set $pc_cur_mana += _args[0].int>>
<<case "Blessed Fruition">>
BLESSED FRUITION
<<set $free_blessing_count += _args[0].int>>
<<case "Champion of the Goddess">>
CHAMPION OF THE GODDESS
<<set _list to clone(setup.allBlessingList.starting)>>
REMOVE STARTING BLESSING IF ALREADY OWNED
<<for _z = 0; _z < _list.length; _z++>>
<<if $pc_blessing_list.includes(_list[_z].name)>>
REMOVE BLESSING FROM LIST
<<set _remove to _list.deleteAt(_z)>>
<<set _z-->>
<</if>>
<</for>>
ADD STARTING BLESSINGS
<<for _z = 0; _z < _list.length; _z++>>
ADD BLESSING TO PLAYER LISTS
<<set $pc_blessing_list.push(_list[_z].name)>>
CHECK TRIGGERS
<<BlessingTriggers _list[_z]>>
<</for>>
- GODDESS'S SORCERY TREE -
<<case "Ascended's Awakening">>
ASCENDED'S AWAKENING
<<set $pc_max_mana += _args[0].int>>
<<set $pc_cur_mana += _args[0].int>>
- GODDESS'S POWER TREE -
<<case "Goddess's Power I" "Goddess's Power II" "Goddess's Power III" "Goddess's Power IV" "Goddess's Power V">>
GODDESS POWER
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if $dungeon_floor_list[_z].room_type === "Creature">>
<<if $dungeon_floor_list[_z].effect_names.includes(_args[0].id)>>
FIND AND UPDATE BLESSING EFFECTS
<<for _e = 0; _e < $dungeon_floor_list[_z].effects.length; _e++>>
<<if $dungeon_floor_list[_z].effects[_e].id === _args[0].id>>
UPDATE
<<set $dungeon_floor_list[_z].effects[_e].name to _args[0].name>>
<<set $dungeon_floor_list[_z].effects[_e].float to _args[0].float>>
TOOLTIP
<<set _num to _args[0].float * 100>>
<<if $dungeon_floor_list[_z].attack_type === "Physical">>
<<set $dungeon_floor_list[_z].effects[_e].tooltip to "Increases @@.phy;Physical@@ and @@.sex;Sexual@@ Attack stats by " + _num + "%.">>
<<else>>
<<set $dungeon_floor_list[_z].effects[_e].tooltip to "Increases @@.mag;Magical@@ and @@.sex;Sexual@@ Attack stats by " + _num + "%.">>
<</if>>
UPDATED _args[0].id BLESSING EFFECT FOR $dungeon_floor_list[_z].name FLOOR
<<break>>
<</if>>
<</for>>
<<else>>
ADD NEW BLESSING EFFECT
CREATE EFFECT
<<set _newBuff to clone(setup.creature_effect)>>
<<set _newBuff.name to _args[0].name>>
<<set _newBuff.id to _args[0].id>>
<<set _newBuff.effect_types to _args[0].effect_types>>
<<set _newBuff.float to _args[0].float>>
<<set _newBuff.icon to setup.effect_icons.blessing>>
TOOLTIP
<<set _num to _args[0].float * 100>>
<<if $dungeon_floor_list[_z].attack_type === "Physical">>
<<set _newBuff.tooltip to "Increases @@.phy;Physical@@ and @@.sex;Sexual@@ Attack stats by " + _num + "%.">>
<<else>>
<<set _newBuff.tooltip to "Increases @@.mag;Magical@@ and @@.sex;Sexual@@ Attack stats by " + _num + "%.">>
<</if>>
ADD EFFECT
<<set $dungeon_floor_list[_z].effects.push(_newBuff)>>
<<set $dungeon_floor_list[_z].effect_names.push(_newBuff.id)>>
ADDED _newBuff.id EFFECT TO $dungeon_floor_list[_z].name FLOOR
<</if>>
<</if>>
<</for>>
<<case "Lustful Penetration I" "Lustful Penetration II" >>
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if $dungeon_floor_list[_z].room_type === "Creature">>
<<if $dungeon_floor_list[_z].effect_names.includes(_args[0].id)>>
FIND AND UPDATE BLESSING EFFECTS
<<for _e = 0; _e < $dungeon_floor_list[_z].effects.length; _e++>>
<<if $dungeon_floor_list[_z].effects[_e].id === _args[0].id>>
UPDATE
<<set $dungeon_floor_list[_z].effects[_e].name to _args[0].name>>
<<set $dungeon_floor_list[_z].effects[_e].tooltip to _args[0].effect_tooltip>>
<<set $dungeon_floor_list[_z].effects[_e].float to _args[0].float>>
UPDATED _args[0].id BLESSING EFFECT FOR $dungeon_floor_list[_z].name FLOOR
<<break>>
<</if>>
<</for>>
<<else>>
ADD NEW BLESSING EFFECT
CREATE EFFECT
<<set _newBuff to clone(setup.creature_effect)>>
<<set _newBuff.name to _args[0].name>>
<<set _newBuff.id to _args[0].id>>
<<set _newBuff.float to _args[0].float>>
<<set _newBuff.effect_types to _args[0].effect_types>>
<<set _newBuff.tooltip to _args[0].effect_tooltip>>
<<set _newBuff.icon to setup.effect_icons.blessing>>
ADD EFFECT
<<set $dungeon_floor_list[_z].effects.push(_newBuff)>>
<<set $dungeon_floor_list[_z].effect_names.push(_newBuff.id)>>
ADDED _newBuff.id EFFECT TO $dungeon_floor_list[_z].name FLOOR
<</if>>
<</if>>
<</for>>
<<case "Diabolic Intent">>
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if $dungeon_floor_list[_z].room_type === "Creature">>
ADD NEW BLESSING EFFECT
CREATE EFFECT
<<set _newBuff to clone(setup.creature_effect)>>
<<set _newBuff.name to _args[0].name>>
<<set _newBuff.id to _args[0].id>>
<<set _newBuff.effect_types to _args[0].effect_types>>
<<set _newBuff.tooltip to _args[0].effect_tooltip>>
<<set _newBuff.icon to setup.effect_icons.blessing>>
ADD EFFECT
<<set $dungeon_floor_list[_z].effects.push(_newBuff)>>
<<set $dungeon_floor_list[_z].effect_names.push(_newBuff.id)>>
ADDED _newBuff.id EFFECT TO $dungeon_floor_list[_z].name FLOOR
<</if>>
<</for>>
- GODDESS'S ENDURANCE TREE -
<<case "Goddess's Endurance I" "Goddess's Endurance II" "Goddess's Endurance III" "Goddess's Endurance IV" "Goddess's Endurance V">>
GODDESS ENDURANCE
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if $dungeon_floor_list[_z].room_type === "Creature">>
<<if $dungeon_floor_list[_z].effect_names.includes(_args[0].id)>>
FIND AND UPDATE BLESSING EFFECTS
<<for _e = 0; _e < $dungeon_floor_list[_z].effects.length; _e++>>
<<if $dungeon_floor_list[_z].effects[_e].id === _args[0].id>>
UPDATE
<<set $dungeon_floor_list[_z].effects[_e].name to _args[0].name>>
<<set $dungeon_floor_list[_z].effects[_e].float to _args[0].float>>
<<set _num to _args[0].float * 100>>
<<set $dungeon_floor_list[_z].effects[_e].tooltip to "Increases @@.pres;Physical@@ and @@.mres;Magical@@ Resistance stats by " + _num + "%.">>
UPDATED _args[0].id BLESSING EFFECT FOR $dungeon_floor_list[_z].name FLOOR
<<break>>
<</if>>
<</for>>
<<else>>
ADD NEW BLESSING EFFECT
CREATE EFFECT
<<set _newBuff to clone(setup.creature_effect)>>
<<set _newBuff.name to _args[0].name>>
<<set _newBuff.id to _args[0].id>>
<<set _newBuff.effect_types to ["Permanent"]>>
<<set _newBuff.float to _args[0].float>>
<<set _newBuff.icon to setup.effect_icons.blessing>>
<<set _num to _args[0].float * 100>>
<<set _newBuff.tooltip to "Increases @@.pres;Physical@@ and @@.mres;Magical@@ Resistance stats by " + _num + "%.">>
ADD EFFECT
<<set $dungeon_floor_list[_z].effects.push(_newBuff)>>
<<set $dungeon_floor_list[_z].effect_names.push(_newBuff.id)>>
ADDED _newBuff.id EFFECT TO $dungeon_floor_list[_z].name FLOOR
<</if>>
<</if>>
<</for>>
<<case "Night's Blessing I" "Night's Blessing II">>
NIGHT'S BLESSING
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if $dungeon_floor_list[_z].room_type === "Creature">>
<<if $dungeon_floor_list[_z].effect_names.includes(_args[0].id)>>
FIND AND UPDATE BLESSING EFFECTS
<<for _e = 0; _e < $dungeon_floor_list[_z].effects.length; _e++>>
<<if $dungeon_floor_list[_z].effects[_e].id === _args[0].id>>
UPDATE
<<set $dungeon_floor_list[_z].effects[_e].name to _args[0].name>>
<<set $dungeon_floor_list[_z].effects[_e].float to _args[0].float>>
<<set $dungeon_floor_list[_z].effects[_e].tooltip to _args[0].effect_tooltip>>
UPDATED _args[0].id BLESSING EFFECT FOR $dungeon_floor_list[_z].name FLOOR
<<break>>
<</if>>
<</for>>
<<else>>
ADD NEW BLESSING EFFECT
CREATE EFFECT
<<set _newBuff to clone(setup.creature_effect)>>
<<set _newBuff.name to _args[0].name>>
<<set _newBuff.id to _args[0].id>>
<<set _newBuff.float to _args[0].float>>
<<set _newBuff.effect_types to ["Permanent"]>>
<<set _newBuff.tooltip to _args[0].effect_tooltip>>
<<set _newBuff.icon to setup.effect_icons.blessing>>
ADD EFFECT
<<set $dungeon_floor_list[_z].effects.push(_newBuff)>>
<<set $dungeon_floor_list[_z].effect_names.push(_newBuff.id)>>
ADDED _newBuff.id EFFECT TO $dungeon_floor_list[_z].name FLOOR
<</if>>
<</if>>
<</for>>
<<case "Hard-line">>
HARD-LINE
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if $dungeon_floor_list[_z].room_type === "Creature">>
ADD NEW BLESSING EFFECT
CREATE EFFECT
<<set _newBuff to clone(setup.creature_effect)>>
<<set _newBuff.name to _args[0].name>>
<<set _newBuff.id to _args[0].id>>
<<set _newBuff.effect_types to ["Permanent"]>>
<<set _newBuff.tooltip to _args[0].effect_tooltip>>
<<set _newBuff.icon to setup.effect_icons.blessing>>
ADD EFFECT
<<set $dungeon_floor_list[_z].effects.push(_newBuff)>>
<<set $dungeon_floor_list[_z].effect_names.push(_newBuff.id)>>
ADDED _newBuff.id EFFECT TO $dungeon_floor_list[_z].name FLOOR
<</if>>
<</for>>
- GODDESS'S INGENUITY TREE -
<<case "Goddess's Ingenuity I" "Goddess's Ingenuity II" "Goddess's Ingenuity III" "Goddess's Ingenuity IV" "Goddess's Ingenuity V">>
GODDESS'S INGENUITY
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if $dungeon_floor_list[_z].room_type === "Trap">>
<<if $dungeon_floor_list[_z].effect_names.includes(_args[0].id)>>
FIND AND UPDATE BLESSING EFFECTS
<<for _e = 0; _e < $dungeon_floor_list[_z].effects.length; _e++>>
<<if $dungeon_floor_list[_z].effects[_e].id === _args[0].id>>
UPDATE
<<set $dungeon_floor_list[_z].effects[_e].name to _args[0].name>>
<<set $dungeon_floor_list[_z].effects[_e].float to _args[0].float>>
TOOLTIP
<<set _num to $dungeon_floor_list[_z].effects[_e].float * 100>>
<<if $dungeon_floor_list[_z].check_type === "Trapcheck">>
<<set $dungeon_floor_list[_z].effects[_e].tooltip to "Increases Trapcheck by " + _num + "%.">>
<<elseif $dungeon_floor_list[_z].check_type === "Spellcheck">>
<<set $dungeon_floor_list[_z].effects[_e].tooltip to "Increases Spellcheck by " + _num + "%.">>
<</if>>
UPDATED _args[0].id BLESSING EFFECT FOR $dungeon_floor_list[_z].name FLOOR
<<break>>
<</if>>
<</for>>
<<else>>
ADD NEW BLESSING EFFECT
CREATE EFFECT
<<set _newBuff to clone(setup.trap_effect)>>
<<set _newBuff.name to _args[0].name>>
<<set _newBuff.id to _args[0].id>>
<<set _newBuff.effect_types to ["Permanent"]>>
<<set _newBuff.float to _args[0].float>>
<<set _newBuff.icon to setup.effect_icons.blessing>>
TOOLTIP
<<set _num to _newBuff.float * 100>>
<<if $dungeon_floor_list[_z].check_type === "Trapcheck">>
<<set _newBuff.tooltip to "Increases Trapcheck by " + _num + "%.">>
<<elseif $dungeon_floor_list[_z].check_type === "Spellcheck">>
<<set _newBuff.tooltip to "Increases Spellcheck by " + _num + "%.">>
<</if>>
ADD EFFECT
<<set $dungeon_floor_list[_z].effects.push(_newBuff)>>
<<set $dungeon_floor_list[_z].effect_names.push(_newBuff.id)>>
ADDED _newBuff.id EFFECT TO $dungeon_floor_list[_z].name FLOOR
<</if>>
<</if>>
<</for>>
<<case "Lewd Mastermind I" "Lewd Mastermind II">>
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if $dungeon_floor_list[_z].room_type === "Trap">>
<<if $dungeon_floor_list[_z].effect_names.includes(_args[0].id)>>
FIND AND UPDATE BLESSING EFFECTS
<<for _e = 0; _e < $dungeon_floor_list[_z].effects.length; _e++>>
<<if $dungeon_floor_list[_z].effects[_e].id === _args[0].id>>
UPDATE
<<set $dungeon_floor_list[_z].effects[_e].name to _args[0].name>>
<<set $dungeon_floor_list[_z].effects[_e].tooltip to _args[0].effect_tooltip>>
<<set $dungeon_floor_list[_z].effects[_e].float to _args[0].float>>
UPDATED _args[0].id BLESSING EFFECT FOR $dungeon_floor_list[_z].name FLOOR
<<break>>
<</if>>
<</for>>
<<else>>
ADD NEW BLESSING EFFECT
CREATE EFFECT
<<set _newBuff to clone(setup.trap_effect)>>
<<set _newBuff.name to _args[0].name>>
<<set _newBuff.id to _args[0].id>>
<<set _newBuff.float to _args[0].float>>
<<set _newBuff.effect_types to ["Permanent"]>>
<<set _newBuff.tooltip to _args[0].effect_tooltip>>
<<set _newBuff.icon to setup.effect_icons.blessing>>
ADD EFFECT
<<set $dungeon_floor_list[_z].effects.push(_newBuff)>>
<<set $dungeon_floor_list[_z].effect_names.push(_newBuff.id)>>
ADDED _newBuff.id EFFECT TO $dungeon_floor_list[_z].name FLOOR
<</if>>
<</if>>
<</for>>
<<case "Cunning Construction I" "Cunning Construction II" "Cunning Construction III">>
CUNNING CONSTRUCTION
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if $dungeon_floor_list[_z].room_type === "Trap">>
<<if $dungeon_floor_list[_z].effect_names.includes(_args[0].id)>>
FIND AND UPDATE BLESSING EFFECTS
<<for _e = 0; _e < $dungeon_floor_list[_z].effects.length; _e++>>
<<if $dungeon_floor_list[_z].effects[_e].id === _args[0].id>>
UPDATE
<<set $dungeon_floor_list[_z].effects[_e].name to _args[0].name>>
<<set $dungeon_floor_list[_z].effects[_e].float to _args[0].float>>
<<set _num to _args[0].float * 100>>
<<if $dungeon_floor_list[_z].attack_type === "Physical">>
<<set $dungeon_floor_list[_z].effects[_e].tooltip to "Increases @@.phy;Physical@@ and @@.sex;Sexual@@ damage by " + _num + "%.">>
<<elseif $dungeon_floor_list[_z].attack_type === "Magical">>
<<set $dungeon_floor_list[_z].effects[_e].tooltip to "Increases @@.mag;Magical@@ and @@.sex;Sexual@@ damage by " + _num + "%.">>
<<elseif $dungeon_floor_list[_z].attack_type === "True">>
<<set $dungeon_floor_list[_z].effects[_e].tooltip to "Increases True and @@.sex;Sexual@@ damage by " + _num + "%.">>
<</if>>
UPDATED _args[0].id BLESSING EFFECT FOR $dungeon_floor_list[_z].name FLOOR
<<break>>
<</if>>
<</for>>
<<else>>
ADD NEW BLESSING EFFECT
CREATE EFFECT
<<set _newBuff to clone(setup.trap_effect)>>
<<set _newBuff.name to _args[0].name>>
<<set _newBuff.id to _args[0].id>>
<<set _newBuff.effect_types to ["Permanent"]>>
<<set _newBuff.float to _args[0].float>>
<<set _newBuff.icon to setup.effect_icons.blessing>>
<<set _num to _args[0].float * 100>>
<<if $dungeon_floor_list[_z].attack_type === "Physical">>
<<set _newBuff.tooltip to "Increases @@.phy;Physical@@ and @@.sex;Sexual@@ damage by " + _num + "%.">>
<<elseif $dungeon_floor_list[_z].attack_type === "Magical">>
<<set _newBuff.tooltip to "Increases @@.mag;Magical@@ and @@.sex;Sexual@@ damage by " + _num + "%.">>
<<elseif $dungeon_floor_list[_z].attack_type === "True">>
<<set _newBuff.tooltip to "Increases True and @@.sex;Sexual@@ damage by " + _num + "%.">>
<</if>>
ADD EFFECT
<<set $dungeon_floor_list[_z].effects.push(_newBuff)>>
<<set $dungeon_floor_list[_z].effect_names.push(_newBuff.id)>>
ADDED _newBuff.id EFFECT TO $dungeon_floor_list[_z].name FLOOR
<</if>>
<</if>>
<</for>>
- GODDESS'S CHARM TREE -
<<case "Goddess's Charm I" "Goddess's Charm II" "Goddess's Charm III" "Goddess's Charm IV" "Goddess's Charm V">>
GODDESS'S CHARM
INCREASE ALL SLAVE MARKET SLAVES LOVE
<<for _c = 0; _c < $slave_market_list.length; _c++>>
<<for _z = 0; _z < _args[0].market_int; _z++>>
<<set $slave_market_list[_c].love++>>
<<set $slave_market_list[_c].love_tracker to clone($slave_market_list[_c].love_tracker_limit)>>
<<set $slave_market_list[_c].love_tracker_limit += Math.round(($slave_market_list[_c].love + setup.slave_stat_constant) * setup.slave_stat_mod)>>
<</for>>
UPDATE UPKEEP COST
<<SlaveUpkeepCalc $slave_market_list[_c]>>
<</for>>
<<case "Needs Appeased">>
NEEDS APPEASED
<<for _p = 0; _p < $slave_room_list.length; _p++>>
<<if $slave_room_list[_p].room_type === "Slave">>
<<if $slave_room_list[_p].love >= _args[0].love_req>>
UPDATE UPKEEP COST
<<SlaveUpkeepCalc $slave_room_list[_p]>>
<</if>>
<</if>>
<</for>>
<<for _p = 0; _p < $slave_market_list.length; _p++>>
<<if $slave_market_list[_p].love >= _args[0].love_req>>
UPDATE UPKEEP COST
<<SlaveUpkeepCalc $slave_market_list[_p]>>
<</if>>
<</for>>
<<case "Conviction of Adoration">>
CONVICTIN OF ADORATION
REPLACE ANY NEGATIVE TRAITS FOR SLAVES WITH 25 OR MORE LOVE
<<for _z = 0; _z < $slave_room_list.length; _z++>>
<<if $slave_room_list[_z].room_type === "Slave">>
<<if $slave_room_list[_z].love >= _args[0].love_req>>
REPLACE NEG TRAIT
<<AdorationReplacement $slave_room_list[_z] _args[0]>>
<</if>>
<</if>>
<</for>>
<</switch>>
<</if>>
<</widget>>
<<widget "AdorationReplacement">>
_args[0].name is slave _args[1].name is Blessing
<<set _args[0].adoration_bool to true>>
<<set _pop to _args[0].traits.pop()>>
<<set _pop_name to _args[0].trait_names.pop()>>
REMOVE NEG TRAIT EFFECTS
<<switch _pop_name>>
<<case "Bitter">>
<<set _args[0].love_limit += setup.bitter.int>>
<<case "Rebel">>
<<set _args[0].obedience_limit += setup.rebel.int>>
<<case "Shy">>
<<set _args[0].libido_limit += setup.shy.int>>
<<case "Feeble">>
<<set _args[0].strength_limit += setup.feeble.int>>
<<case "Air Head">>
<<set _args[0].intelligence_limit += setup.airhead.int>>
<</switch>>
<<set _var to "">>
HOLD SPECIAL NEGATIVE TRAITS IF ANY
<<if _args[0].trait_names.includesAny("Traumatized", "Loathing")>>
<<set _var to _args[0].traits.pop()>>
<<set _name to _args[0].trait_names.pop()>>
<</if>>
<<set _list to clone(_args[1].traits)>>
<<for _b = 0; _b < _list.length; _b++>>
<<set _new_trait to _list.pluck()>>
<<if _args[0].trait_names.includes(_new_trait.name)>>
ALREADY HAS _new_trait.name
<<set _b-->>
<<continue>>
<<else>>
GAINED _new_trait.name
<<break>>
<</if>>
<</for>>
<<set _args[0].traits.push(_new_trait)>>
<<set _args[0].trait_names.push(_new_trait.id)>>
ADD BACK OTHER NEGATIVE TRAITS IF ANY
<<if _var != "">>
<<set _args[0].traits.push(_var)>>
<<set _args[0].trait_names.push(_name)>>
<</if>>
<</widget>><<widget "UpdateDifficulty">>
Updates the modifiers for difficulty
args[0] is the difficulty string
<<switch _args[0]>>
<<case "casual">>
<<set $diffRaiderPoolMod to setup.casual_raider_pool_mod>>
<<set $diffRaiderStatMod to setup.casual_raider_stat_mod>>
<<set $diffGoldMod to setup.casual_gold_mod>>
<<set $diffEXPMod to setup.casual_exp_mod>>
<<set $diffRepMod to setup.casual_rep_mod>>
<<set $diffThreatMod to setup.casual_threat_mod>>
<<set $diffSlaveEXPMod to setup.casual_slaveEXP_mod>>
<<case "normal">>
<<set $diffRaiderPoolMod to 1>>
<<set $diffRaiderStatMod to 1>>
<<set $diffGoldMod to 1>>
<<set $diffEXPMod to 1>>
<<set $diffRepMod to 1>>
<<set $diffThreatMod to 1>>
<<set $diffSlaveEXPMod to 1>>
<<case "brutal">>
<<set $diffRaiderPoolMod to setup.brutal_raider_pool_mod>>
<<set $diffRaiderStatMod to setup.brutal_raider_stat_mod>>
<<set $diffGoldMod to setup.brutal_gold_mod>>
<<set $diffEXPMod to setup.brutal_exp_mod>>
<<set $diffRepMod to setup.brutal_rep_mod>>
<<set $diffThreatMod to setup.brutal_threat_mod>>
<<set $diffSlaveEXPMod to setup.brutal_slaveEXP_mod>>
<</switch>>
<</widget>>
<<widget "UpdateVersion">>
If version isn't the same as the current version, update all the player's Creatures and Traps in the Dungeon and Blessings
<<if $game_version !== setup.game_version>>
DUNGEON FLOORS
<<for _u = 0; _u < $dungeon_floor_list.length; _u++>>
<<if $dungeon_floor_list[_u].room_type === "Creature">>
UPDATE CREATURE
<<for _c = 0; _c < setup.creature_list.length; _c++>>
<<if setup.creature_list[_c].base_name === $dungeon_floor_list[_u].base_name>>
SET NEW CREATURE
<<set _updatedCreature to clone(setup.creature_list[_c])>>
UPDATE INFO
<<set _updatedCreature.index to clone($dungeon_floor_list[_u].index)>>
<<set _updatedCreature.next_level_exp to Math.round(((_updatedCreature.level * _updatedCreature.level) + setup.creature_nextlevel_constant) * _updatedCreature.growth_rate)>>
<<set _updatedCreature.upkeep to Math.trunc(_updatedCreature.base_upkeep + (_updatedCreature.base_upkeep * (setup.creature_upkeep_float * (_updatedCreature.level - 1))))>>
CALC LEVELS
<<for _z = $dungeon_floor_list[_u].level; _z > 1; _z-->>
<<set _exp to _updatedCreature.next_level_exp>>
GAIN LEVEL
<<CreatureLevelUp _updatedCreature _exp>>
<</for>>
TRANSFER EXP
<<set _updatedCreature.exp to $dungeon_floor_list[_u].exp>>
ADD EFFECTS
<<NewCreature _updatedCreature>>
TRANSFER STATS
<<set _updatedCreature.total_dmgdealt to clone($dungeon_floor_list[_u].total_dmgdealt)>>
<<set _updatedCreature.total_sexdealt to clone($dungeon_floor_list[_u].total_sexdealt)>>
<<set _updatedCreature.total_dmgtaken to clone($dungeon_floor_list[_u].total_dmgtaken)>>
<<set _updatedCreature.total_raiders to clone($dungeon_floor_list[_u].total_raiders)>>
<<set _updatedCreature.total_captures to clone($dungeon_floor_list[_u].total_captures)>>
<<set _updatedCreature.total_deaths to clone($dungeon_floor_list[_u].total_deaths)>>
UPDATE
<<set $dungeon_floor_list[_u] to clone(_updatedCreature)>>
<<break>>
<</if>>
<</for>>
<<elseif $dungeon_floor_list[_u].room_type === "Trap">>
UPDATE TRAP
<<for _t = 0; _t < setup.trap_list.length; _t++>>
<<if setup.trap_list[_t].base_name === $dungeon_floor_list[_u].base_name>>
SET NEW CREATURE
<<set _updatedTrap to clone(setup.trap_list[_t])>>
UPDATE INFO
<<set _updatedTrap.index to clone($dungeon_floor_list[_u].index)>>
UPDATE STATS
<<for _z = 1; _z < $dungeon_rank; _z++>>
<<set _updatedTrap.level++>>
<<set _updatedTrap.atk += _updatedTrap.atk_per_level>>
<<set _updatedTrap.sex += _updatedTrap.sex_per_level>>
<<set _updatedTrap.check += _updatedTrap.check_per_level>>
<</for>>
<<set _updatedTrap.upkeep to Math.trunc(_updatedTrap.base_upkeep + (_updatedTrap.base_upkeep * (setup.trap_upkeep_float * ($dungeon_rank - 1))))>>
ADD EFFECTS
<<NewTrap _updatedTrap>>
TRANSFER STATS
<<set _updatedTrap.total_dmgdealt to clone($dungeon_floor_list[_u].total_dmgdealt)>>
<<set _updatedTrap.total_sexdealt to clone($dungeon_floor_list[_u].total_sexdealt)>>
<<set _updatedTrap.total_raiders to clone($dungeon_floor_list[_u].total_raiders)>>
<<set _updatedTrap.total_captures to clone($dungeon_floor_list[_u].total_captures)>>
<<set _updatedTrap.total_statuses to clone($dungeon_floor_list[_u].total_statuses)>>
<<set _updatedTrap.total_attempts to clone($dungeon_floor_list[_u].total_attempts)>>
<<set _updatedTrap.total_triggers to clone($dungeon_floor_list[_u].total_triggers)>>
UPDATE
<<set $dungeon_floor_list[_u] to clone(_updatedTrap)>>
<<break>>
<</if>>
<</for>>
<</if>>
<</for>>
CREATURE KEEPER keeper_list
<<for _u = 0; _u < $keeper_list.length; _u++>>
<<if $keeper_list[_u].room_type === "Creature">>
UPDATE CREATURE
<<for _c = 0; _c < setup.creature_list.length; _c++>>
<<if setup.creature_list[_c].base_name === $keeper_list[_u].base_name>>
SET NEW CREATURE
<<set _updatedCreature to clone(setup.creature_list[_c])>>
UPDATE INFO
<<set _updatedCreature.index to clone($keeper_list[_u].index)>>
<<set _updatedCreature.next_level_exp to Math.round(((_updatedCreature.level * _updatedCreature.level) + setup.creature_nextlevel_constant) * _updatedCreature.growth_rate)>>
<<set _updatedCreature.upkeep to Math.trunc(_updatedCreature.base_upkeep + (_updatedCreature.base_upkeep * (setup.creature_upkeep_float * (_updatedCreature.level - 1))))>>
UPDATE STATS
<<CreatureLevelUp _updatedCreature $keeper_list[_u].exp>>
ADD EFFECTS
<<NewCreature _updatedCreature>>
TRANSFER STATS
<<set _updatedCreature.total_dmgdealt to clone($dungeon_floor_list[_u].total_dmgdealt)>>
<<set _updatedCreature.total_sexdealt to clone($dungeon_floor_list[_u].total_sexdealt)>>
<<set _updatedCreature.total_dmgtaken to clone($dungeon_floor_list[_u].total_dmgtaken)>>
<<set _updatedCreature.total_raiders to clone($dungeon_floor_list[_u].total_raiders)>>
<<set _updatedCreature.total_captures to clone($dungeon_floor_list[_u].total_captures)>>
<<set _updatedCreature.total_deaths to clone($dungeon_floor_list[_u].total_deaths)>>
UPDATE
<<set $keeper_list[_u] to clone(_updatedCreature)>>
<<break>>
<</if>>
<</for>>
<</if>>
<</for>>
PLAYER SPELLS
<<for _u = 0; _u < $pc_spellbook.length; _u++>>
<<for _s = 0; _s < setup.allSpellsArray[$pc_spellbook[_u].type].length; _s++>>
<<if setup.allSpellsArray[$pc_spellbook[_u].type][_s].id === $pc_spellbook[_u].id>>
<<set _updatedSpell to clone(setup.allSpellsArray[$pc_spellbook[_u].type][_s])>>
TRANSFER STATS
<<set _updatedSpell.cast to $pc_spellbook[_u].cast>>
<<set _updatedSpell.favorited to $pc_spellbook[_u].favorited>>
<<if $pc_spellbook[_u].type === "Summoning">>
SUMMONING STATS
<<set _updatedSpell.total_dmgdealt to $pc_spellbook[_u].total_dmgdealt>>
<<set _updatedSpell.total_sexdealt to $pc_spellbook[_u].total_sexdealt>>
<<set _updatedSpell.total_dmgtaken to $pc_spellbook[_u].total_dmgtaken>>
<<set _updatedSpell.total_raiders to $pc_spellbook[_u].total_raiders>>
<<set _updatedSpell.total_captures to $pc_spellbook[_u].total_captures>>
<<set _updatedSpell.total_deaths to $pc_spellbook[_u].total_deaths>>
<</if>>
UPDATE
<<set $pc_spellbook[_u] to clone(_updatedSpell)>>
<</if>>
<</for>>
<</for>>
SHOP SPELLS
<<for _u = 0; _u < $infliction_spell_sale_list.length; _u++>>
<<for _s = 0; _s < setup.allSpellsArray.Infliction.length; _s++>>
<<if setup.allSpellsArray.Infliction[_s].id === $infliction_spell_sale_list[_u].id>>
<<set $infliction_spell_sale_list[_u] to clone(setup.allSpellsArray.Infliction[_s])>>
<</if>>
<</for>>
<</for>>
<<for _u = 0; _u < $manipulation_spell_sale_list.length; _u++>>
<<for _s = 0; _s < setup.allSpellsArray.Manipulation.length; _s++>>
<<if setup.allSpellsArray.Manipulation[_s].id === $manipulation_spell_sale_list[_u].id>>
<<set $manipulation_spell_sale_list[_u] to clone(setup.allSpellsArray.Manipulation[_s])>>
<</if>>
<</for>>
<</for>>
<<for _u = 0; _u < $summoning_spell_sale_list.length; _u++>>
<<for _s = 0; _s < setup.allSpellsArray.Summoning.length; _s++>>
<<if setup.allSpellsArray.Summoning[_s].id === $summoning_spell_sale_list[_u].id>>
<<set $summoning_spell_sale_list[_u] to clone(setup.allSpellsArray.Summoning[_s])>>
<</if>>
<</for>>
<</for>>
<<for _u = 0; _u < $supportive_spell_sale_list.length; _u++>>
<<for _s = 0; _s < setup.allSpellsArray.Supportive.length; _s++>>
<<if setup.allSpellsArray.Supportive[_s].id === $supportive_spell_sale_list[_u].id>>
<<set $supportive_spell_sale_list[_u] to clone(setup.allSpellsArray.Supportive[_s])>>
<</if>>
<</for>>
<</for>>
UPDATE SLAVE PACKS
<<for _u = 0; _u < $slave_pack_array.length; _u++>>
ADD DANCER VARIABLE
<<if $slave_pack_array[_u].dancer == null>>
<<set $slave_pack_array[_u].classes to ["Hunter","Sorcerer","Knight","Warrior","Thief","Priestess","Alchemist","Witch","Dancer","Brawler"]>>
<<set $slave_pack_array[_u].dancer to clone($slave_pack_array[_u].gypsy)>>
<</if>>
<</for>>
UPDATE VERSION
<<set $game_version to clone(setup.game_version)>>
<</if>>
<</widget>><<silently>>\
* VARIABLES *
<<set _drowsy_text to []>> triggers text if added stack of drowsy
<<set _drowsy_capture_text to []>> triggers text if was captured after falling asleep
<<set _parasite_text to []>> triggers text if raider got parasites
<<set _new_kink_text to []>> triggers text if raider got a new kink
<<set _autoclear_text to false>> set to true if raiders were allowed to proceed
<<set _wipe_text to false>> set to true if raiders are captured
* SETUP ROOM *
<<RoomSetup $raiders $this_room>>
* SETUP RAIDER *
<<RaiderSetup $raiders>>
* DANCER BUFF *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].class === "Dancer">>
<<DancerBuff $raiders[_i] $this_room>>
<</if>>
<</for>>
* SET PUZZLECHECK IF THIS IS FIRST ATTEMPT *
<<if $this_room.attempt_num === 0>>
<<switch $this_room.mode>>
<<case "Overgrown">>
<<set $this_room.start_puzzlecheck to $this_room.overgrown_check + $this_room.atk>>
<<set $this_room.cur_puzzlecheck to clone($this_room.start_puzzlecheck)>>
<<case "Flooded">>
<<set $this_room.start_puzzlecheck to $this_room.flooded_check + $this_room.atk>>
<<set $this_room.cur_puzzlecheck to clone($this_room.start_puzzlecheck)>>
<<case "Enchanted">>
<<set $this_room.start_puzzlecheck to $this_room.enchanted_check + $this_room.atk>>
<<set $this_room.cur_puzzlecheck to clone($this_room.start_puzzlecheck)>>
<</switch>>
PUZZLECHECK STARTS AT $this_room.cur_puzzlecheck
<</if>>
* INITIAL RAIDER REPORT *
NUMBER OF ATTEMPTS
<<if $raiders.length > 1>>
<<if $this_room.attempt_num === 0>>
<<set _entry to "Her party attempted to solve the puzzle for the first time.">>
<<elseif $this_room.attempt_num === 1>>
<<set _entry to "Her party attempted to solve the puzzle for the second time.">>
<<elseif $this_room.attempt_num === 2>>
<<set _entry to "Her party attempted to solve the puzzle for the third time.">>
<</if>>
<<else>>
<<if $this_room.attempt_num === 0>>
<<set _entry to "She attempted to solve the puzzle for the first time.">>
<<elseif $this_room.attempt_num === 1>>
<<set _entry to "She attempted to solve the puzzle for the second time.">>
<<elseif $this_room.attempt_num === 2>>
<<set _entry to "She attempted to solve the puzzle for the third time.">>
<</if>>
<</if>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<</for>>
* CALC AMOUNT EACH RAIDER WILL REDUCE PUZZLECHECK *
FIND THE RAIDER WITH THE HIGHEST AWARENESS
<<set _highest to 0>>
<<set _leader to "">>
<<for _i = 0; _i < $raiders.length; _i++>>
<<if _leader === "">>
<<set _leader to $raiders[_i].index>>
<<set _highest to $raiders[_i].cur_aware>>
<<elseif $raiders[_i].cur_aware > _highest>>
<<set _leader to $raiders[_i].index>>
<<set _highest to $raiders[_i].cur_aware>>
<<elseif $raiders[_i].cur_aware === _highest>>
<<set _rng to random(1)>>
<<if _rng === 1>>
<<set _leader to $raiders[_i].index>>
<<set _highest to $raiders[_i].cur_aware>>
<</if>>
<</if>>
<</for>>
<<for _i = 0; _i < $raiders.length; _i++>>
STORE IT AS DAMAGE
<<if $raiders[_i].index === _leader>>
<<set $raiders[_i].dmg_dealt to (Math.round($raiders[_i].cur_aware * $this_room.lead_float)).clamp(1, 1000000)>>
<<else>>
<<set $raiders[_i].dmg_dealt to (Math.round($raiders[_i].cur_aware * $this_room.other_float)).clamp(1, 1000000)>>
<</if>>
BRAINWASHED STATUS
<<if $raiders[_i].status_names.includes("Brainwashed")>>
TRIGGER TEXT AND SET PUZZLECHECK TO 0, REMOVE STATUS LATER
<<set _text_triggers.status.brainwashed_trig.push($raiders[_i].index)>>
<<set $raiders[_i].dmg_dealt to 0>>
<</if>>
* REDUCE PUZZLECHECK *
REDUCED PUZZLECHECK BY $raiders[_i].dmg_dealt
<<set $this_room.cur_puzzlecheck -= $raiders[_i].dmg_dealt>>
PUZZLECHECK IS AT $this_room.cur_puzzlecheck
<</for>>
* CHECK OUTCOME *
<<if $this_room.cur_puzzlecheck <= 0>>
RAIDERS ESCAPED THE ROOM!
<<set $this_room.cur_puzzlecheck to 0>>
<<else>>
<<if $this_room.attempt_num >= $this_room.max_attempt && $this_room.mode != "Overgrown">>
TRIGGER TEXT
<<set _autoclear_text to true>>
<<else>>
BAD THINGS HAPPEN
<<switch $this_room.mode>>
<<case "Overgrown">>
ADD DROWSY STATUS TO RAIDERS
<<for _i = 0; _i < $raiders.length; _i++>>
CHECK IF ALREADY HAS
<<if !$raiders[_i].status_names.includes("Drowsy")>>
<<set _newStatus to clone(setup.drowsy)>>
<<set _newStatus.stack to 0>>
<<set $raiders[_i].statuses.push(_newStatus)>>
<<set $raiders[_i].status_names.push(_newStatus.id)>>
<</if>>
BRAINWASHED STATUS
<<if $raiders[_i].status_names.includes("Brainwashed")>>
REMOVE STATUS
<<for _z = 0; _z < $raiders[_i].statuses.length; _z++>>
<<if $raiders[_i].statuses[_z].id === "Brainwashed">>
<<set _delete to $raiders[_i].statuses.deleteAt(_z)>>
<<set _delete to $raiders[_i].status_names.deleteAt(_z)>>
BREAK LOOP
<<break>>
<</if>>
<</for>>
<</if>>
ADD STACK
<<for _z = 0; _z < $raiders[_i].statuses.length; _z++>>
FIND STATUS
<<if $raiders[_i].statuses[_z].id === setup.drowsy.id>>
INCREASE STATUS COUNT
<<set $this_room.total_statuses++>>
ADD STACKS
<<set $raiders[_i].statuses[_z].stack++>>
UPDATE NAME
<<set $raiders[_i].statuses[_z].name to "Drowsy x" + $raiders[_i].statuses[_z].stack>>
<<if $raiders[_i].statuses[_z].stack >= $this_room.drowsy_count>>
CAPTURE RAIDER, TRIGGER TEXT
<<set $raiders[_i].captured to true>>
<<set $raiders[_i].statuses.push(setup.captured)>>
<<set $this_room.total_captures++>>
<<set $this_room.report.captures++>>
<<set _drowsy_capture_text.push($raiders[_i].index)>>
<<set _wipe_text to true>>
SET RAIDER LOG RESULT
<<set _result to "She fell asleep in the Puzzle Room and was Captured.">>
<<set $raiders[_i].report.result to clone(_result)>>
<<else>>
TRIGGER TEXT
<<set _drowsy_text.push($raiders[_i].index)>>
<</if>>
END LOOP
<<break>>
<</if>>
<</for>>
<</for>>
<<case "Flooded">>
<<for _i = 0; _i < $raiders.length; _i++>>
PARASITE CHECK
<<if !$raiders[_i].status_names.includes("Parasite")>>
<<set _rng to random(1, 100)>>
BRAINWASHED STATUS
<<if $raiders[_i].status_names.includes("Brainwashed")>>
ALWAYS TRIGGER
<<set _rng to 0>>
REMOVE STATUS
<<for _z = 0; _z < $raiders[_i].statuses.length; _z++>>
<<if $raiders[_i].statuses[_z].id === "Brainwashed">>
<<set _delete to $raiders[_i].statuses.deleteAt(_z)>>
<<set _delete to $raiders[_i].status_names.deleteAt(_z)>>
BREAK LOOP
<<break>>
<</if>>
<</for>>
<</if>>
<<if $this_room.parasite_rate + $this_room.rate >= _rng>>
INCREASE STATUS COUNT
<<set $this_room.total_statuses++>>
RAIDER GETS PARASITES
<<set $raiders[_i].statuses.push(clone(setup.parasite))>>
<<set $raiders[_i].status_names.push(clone(setup.parasite.id))>>
TRIGGER TEXT
<<set _parasite_text.push($raiders[_i].index)>>
UPDATE REPORT
<<set _entry to "She became a host for Parasites.">>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<</if>>
<</if>>
<</for>>
<<case "Enchanted">>
<<for _i = 0; _i < $raiders.length; _i++>>
NEW KINK CHECK
<<if $raiders[_i].fetishes.length > 0>>
<<set _rng to random(1, 100)>>
BRAINWASHED STATUS
<<if $raiders[_i].status_names.includes("Brainwashed")>>
ALWAYS TRIGGER
<<set _rng to 0>>
REMOVE STATUS
<<for _z = 0; _z < $raiders[_i].statuses.length; _z++>>
<<if $raiders[_i].statuses[_z].id === "Brainwashed">>
<<set _delete to $raiders[_i].statuses.deleteAt(_z)>>
<<set _delete to $raiders[_i].status_names.deleteAt(_z)>>
BREAK LOOP
<<break>>
<</if>>
<</for>>
<</if>>
<<if $this_room.kink_rate + $this_room.rate >= _rng>>
ADD NEW KINK
<<set $raiders[_i].kinks.push($raiders[_i].fetishes.pluck())>>
TRIGGER TEXT
<<set _new_kink_text.push($raiders[_i].index)>>
UPDATE REPORT
<<set _entry to "She gained a new Kink.">>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<</if>>
<</if>>
<</for>>
<</switch>>
<</if>>
<</if>>
* POST COMBAT EFFECTS *
<<PostCombat $raiders $this_room>>
* CHOOSE PICTURE *
SETUP PIC ARRAY
<<set _picArray to clone($this_room.raider_pics)>>
<<for _i = 0; _i < $raiders.length; _i++>>
CAPTURED RAIDERS
<<if $raiders[_i].captured === true || _parasite_text.includes($raiders[_i].index) || _new_kink_text.includes($raiders[_i].index)>>
<<set $raiders[_i].pic to _picArray[$raiders[_i].body_type].pluck()>>
<</if>>
<</for>>
* UPDATE RAIDER REPORT *
NUMBER OF ATTEMPTS
<<if $raiders.length > 1>>
<<if $this_room.attempt_num === 0>>
<<set _entry to "Her party attempted to solve the puzzle for the first time.">>
<<elseif $this_room.attempt_num === 1>>
<<set _entry to "Her party attempted to solve the puzzle for the second time.">>
<<elseif $this_room.attempt_num === 2>>
<<set _entry to "Her party attempted to solve the puzzle for the third time.">>
<</if>>
<<else>>
<<if $this_room.attempt_num === 0>>
<<set _entry to "She attempted to solve the puzzle for the first time.">>
<<elseif $this_room.attempt_num === 1>>
<<set _entry to "She attempted to solve the puzzle for the second time.">>
<<elseif $this_room.attempt_num === 2>>
<<set _entry to "She attempted to solve the puzzle for the third time.">>
<</if>>
<</if>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<</for>>
RESULTS
<<if $raiders.length > 1>>
<<if $this_room.cur_puzzlecheck === 0>>
<<set _entry to "Her party solved the puzzle.">>
<<elseif _drowsy_capture_text.length > 0>>
<<set _entry to "Her party could not solve the puzzle and were Captured after falling asleep.">>
<<elseif $this_room.attempt_num >= $this_room.max_attempt>>
<<set _entry to "Her party could not solve the puzzle, but was allowed to move on anyways.">>
<<else>>
<<set _entry to "Her party could not solve the puzzle.">>
<</if>>
<<else>>
<<if $this_room.cur_puzzlecheck === 0>>
<<set _entry to "She solved the puzzle.">>
<<elseif _drowsy_capture_text.length > 0>>
<<set _entry to "She could not solve the puzzle and was Captured after falling asleep.">>
<<elseif $this_room.attempt_num >= $this_room.max_attempt>>
<<set _entry to "She could not solve the puzzle, but the way opened all on its own.">>
<<else>>
<<set _entry to "She could not solve the puzzle.">>
<</if>>
<</if>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<<if $raiders[_i].captured === true || $raiders[_i].abandoned === true>>
PUSH LOG
<<set $raiders[_i].report.result_pic to $raiders[_i].pic>>
<<set $raider_report_list.push($raiders[_i].report)>>
<</if>>
<</for>>
* UPDATE ROOM STATS *
REDUCE RAIDERS SEEN IF NOT FIRST ATTEMPT
<<if $this_room.attempt_num > 0>>
<<set $this_room.total_raiders -= $raiders.length>>
<<set $this_room.report.raiders -= $raiders.length>>
<</if>>
INCREASE NUMBER OF ATTEMPTS
<<set $this_room.total_attempts++>>
ROOM RESET CHECK
<<if $this_room.cur_puzzlecheck <= 0 || _wipe_text === true || _autoclear_text === true>>
RESET ATTEMPT NUM
<<set $this_room.attempt_num to 0>>
ALLOWS DROWSY STATUS TO BE REMOVED
<<set $remove_drowsy_bool to true>>
<<else>>
INCREASE ATTEMPT NUM
<<set $this_room.attempt_num++>>
COUNTS AS SUCCESSFUL TRAP TRIGGER FOR STATS
<<set $this_room.total_triggers++>>
PREVENTS DROWSY STATUS FROM BEING REMOVED
<<set $remove_drowsy_bool to false>>
<</if>>
* CLEAN UP *
<<CleanUp $raiders $this_room>>
* SUBTRACT ROOM NUM IF UNSOLVED *
<<if $this_room.cur_puzzlecheck > 0 && _autoclear_text === false>>
<<set $cur_room_num-->>
<</if>>
* DISPLAY INFO *
<<set _cardholderID to "cardholder-raid-"+$raiders.length+"raiders">>
<<set _cardinfoID to "cardinfo-raid-"+$raiders.length+"raiders">>
<<set _picboxID to "picbox-raid-"+$raiders.length+"raiders">>
<<set _textboxID to "textbox-raid-"+$raiders.length+"raiders">>
<</silently>>\
<div class="section">\
<<NextRoomButton>>\
<div class="cardholder-raid-playerside">\
<div class="cardinfo-raid-trap">\
<div class="roomtitle-raid-player">\
<<if $this_room.cur_puzzlecheck > 0>>\
<<set _num to clone($cur_room_num) + 1>>\
<<else>>\
<<set _num to clone($cur_room_num)>>\
<</if>>\
Floor _num
</div>\
<div class="picbox-raid-player">\
$this_room.pic
</div>\
<div class="namebox-raid-player">\
<<set _percent to Math.trunc((($this_room.start_puzzlecheck - $this_room.cur_puzzlecheck) / $this_room.start_puzzlecheck).toFixed(2) * 100)>>\
<strong>$this_room.name</strong>
---- _percent% Solved ----
</div>\
<div class="textbox-raid-player">\
<ul>\
<<set _total to 0>>\
<<for _z = 0; _z < $raiders.length; _z++>>\
<<set _total += $raiders[_z].dmg_dealt>>\
<</for>>\
<<if $raiders.length > 1>>\
<li>The group lowered the Puzzlecheck by _total.</li>\
<<else>>\
<li>The Raider lowered the Puzzlecheck by _total.</li>\
<</if>>\
<<if _autoclear_text === true>>\
<<if $raiders.length > 1>>\
<li>The party failed another attempted, but was allowed to continue deeper into the dungeon.</li>\
<<else>>\
<li>The Raider could not solve the puzzle, but the way forward opened before her eyes.</li>\
<</if>>\
<<elseif _wipe_text === true>>\
<<if $raiders.length > 1>>\
<li>The party fell asleep after spending too long in the room, they were all Captured.</li>\
<<else>>\
<li>The Raider fell asleep after spending too long in the room, she was Captured.</li>\
<</if>>\
<<elseif $this_room.cur_puzzlecheck > 0>>\
<<if $raiders.length > 1>>\
<li>They did not solve the puzzle, going back to regroup and try again.</li>\
<<else>>\
<li>She did not solve the puzzle, she needed a break and left the room.</li>\
<</if>>\
<<elseif $this_room.cur_puzzlecheck === 0>>\
<<if $raiders.length > 1>>\
<li>They solved the puzzle and the door opened, leading them further into the dungeon.</li>\
<<else>>\
<li>She solved the puzzle, opening the door and venturing deeper into the dungeon.</li>\
<</if>>\
<</if>>\
</ul>\
</div>\
</div>\
</div>\
<div class="cardholder-raid-raiderside">\
<<for _r = 0; _r < $raiders.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_textboxID">\
<ul>\
<<DancerDanceText $raiders[_r] $this_room>>
<<if _text_triggers.status.brainwashed_trig.includes($raiders[_r].index) && _parasite_text.includes($raiders[_r].index)>>\
<li>Because she was <<hovertip "<<-setup.brainwashed.tooltip>>">>Brainwashed<</hovertip>>, she made friends with the insects.</li>\
<<elseif _text_triggers.status.brainwashed_trig.includes($raiders[_r].index) && _new_kink_text.includes($raiders[_r].index)>>\
<li>Because she was <<hovertip "<<-setup.brainwashed.tooltip>>">>Brainwashed<</hovertip>>, she stared at the magic runes scattered around the cave.</li>\
<<elseif _text_triggers.status.brainwashed_trig.includes($raiders[_r].index)>>\
<li>Because she was <<hovertip "<<-setup.brainwashed.tooltip>>">>Brainwashed<</hovertip>>, she decided to take a nap.</li>\
<<elseif $raiders.length > 1>>\
<<if $raiders[_r].index === _leader>>\
<li>She focused hard on solving the puzzle, reducing the Puzzlecheck by $raiders[_r].dmg_dealt.</li>\
<<else>>\
<li>She helped her teammate try to solve the puzzle the best she could, reducing the Puzzlecheck by $raiders[_r].dmg_dealt.</li>\
<</if>>\
<<else>>\
<li>She worked on solving the puzzle, reducing the Puzzlecheck by $raiders[_r].dmg_dealt.</li>\
<</if>>\
<<if _drowsy_capture_text.includes($raiders[_r].index)>>\
<li>She fell asleep while trying to solve the puzzle and is now Captured.</li>\
<<elseif _drowsy_text.includes($raiders[_r].index)>>\
<li>She became <<hovertip "<<-setup.drowsy.tooltip>>">>Drowsy<</hovertip>> from breathing in pollen from the flora.</li>\
<</if>>\
<<if _parasite_text.includes($raiders[_r].index)>>\
<li>She become a host of <<hovertip "<<-setup.parasite.tooltip>>">>Parasites<</hovertip>> after wading in the water.</li>\
<</if>>\
<<if _new_kink_text.includes($raiders[_r].index)>>\
<li>She gave into the subliminal thoughts generated by the magic runes in the room, gaining a new Kink.</li>\
<</if>>\
<<if $this_room.cur_puzzlecheck === 0>>\
<<if $raiders.length > 1>>\
<li>Her group was able to solve the puzzle and cleared the room.</li>\
<<else>>\
<li>She was able to solve the puzzle and clear the room.</li>\
<</if>>\
<</if>>\
<<if _autoclear_text === true>>\
<li>After another failed attempt, the puzzle door opened all on its own.</li>\
<</if>>\
</ul>\
</div>\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\<<if $visited_creature_keeper === false && $tutorial_guides === true>>\
<<silently>>\
* Variables *
<<set $visited_creature_keeper to true>>
* Dialogue Bools *
<<set $left_creature_bool to false>>
<<set $took_creature_bool to false>>
<<set $train_creature_bool to false>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Creature Keeper
</div>\
<div class="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/town/sylvia/face_0.jpg]]
</div>\
<div class="dialogue-text">\
CREATURE KEEPER TUTORIAL PLACEHOLDER
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="forward"><<button [[Continue|Creature Keeper]]>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
</div>\
</div>\
<<else>>\
<<silently>>\
* Variables *
* Set First Quest *
<<if $missionLog.sylvia.num === "">>
<<set $missionLog.sylvia.num to 0>>
<</if>>
* Empty Keeper Room Check *
<<set _empty_keep_bool to false>>
<<set _occ_keep_bool to false>>
<<for _z = 0; _z < $keeper_list.length; _z++>>
<<if $keeper_list[_z].room_type === "Empty">>
<<set _empty_keep_bool to true>>
<<else>>
<<set _occ_keep_bool to true>>
<</if>>
<</for>>
* Empty Dungeon Room Check *
<<set _empty_room_bool to false>>
<<set _has_creature_bool to false>>
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if $dungeon_floor_list[_z].room_type === "Empty">>
<<if $dungeon_floor_list[_z].built === true>>
<<set _empty_room_bool to true>>
<</if>>
<<elseif $dungeon_floor_list[_z].room_type === "Creature">>
<<set _has_creature_bool to true>>
<</if>>
<</for>>
* Shopkeeper Dialogue *
<<if $took_creature_bool === true>>
<<set _dialogue to "You're taking your $took_name back? So soon? Well, feel free to bring it back again!">>
<<elseif $left_creature_bool === true>>
<<set _dialogue to "Don't you worry, I'll take good care your $left_name for ya!">>
<<elseif $train_creature_bool === true>>
<<set _dialogue to "I'll shape up your $train_name in a jiffy!">>
<<elseif $entered_keeper_bool === true>>
<<set _list to ["Hey $pc_name! What creatures did you bring me today?", "Welcome in, what can I do for you today?", "$pc_name! Welcome! How are your creatures doing?", "I wonder how I got so wet again? Oh, welcome in! Didn't see you there."]>>
<<set _dialogue to _list.random()>>
<<else>>
<<set _list to ["If you need any help on how to care of your creatures, just let me know!", "One day, I'm going to have my own zoo full of amazing creatures!", "There are so many creatures in this world, please bring me many different kinds to take care of.", "I'm the best creature keeper in town! I'm also the only one.", "Taking care of other people's creatures can be exhausting sometimes, but it can be very satisfying!"]>>
<<set _dialogue to _list.random()>>
<</if>>
* Dialogue Bools *
<<set $entered_keeper_bool to false>>
<<set $took_creature_bool to false>>
<<set $left_creature_bool to false>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Creature Keeper
</div>\
<div class="dialoguebox-townshops">\
<div class="dialoguepic-townshops">\
[img[images/town/sylvia/face_0.jpg]]
</div>\
<div class="dialoguetext-townshops">\
_dialogue
</div>\
</div>\
<div class="cardholder-townshops">\
<div class="infobox-townshops">\
<div class="infobox-title-townshops">\
Leave Creature
</div>\
<div class="infobox-body-townshops">\
Store one of your Creatures here. You still have to pay their Upkeep cost plus a <span class="gold">$keeper_room_cost Gold</span> room fee per day. Creatures being stored gain a small amount of EXP each day.
</div>\
<div class="infobox-link-townshops">\
<<if _empty_keep_bool === false>>\
<div class="offbutton">\
<<hovertip "Requires an open Room">><<button "Leave">><</button>><</hovertip>>
</div>\
<<elseif _has_creature_bool === false>>\
<div class="offbutton">\
<<hovertip "Requires a Creature in your Dungeon">><<button "Leave">><</button>><</hovertip>>
</div>\
<<else>>\
<span id="1"><<button "Leave ^^1^^" "Leave Creature">><</button>></span>
<</if>>\
</div>\
</div>\
</div>\
<div class="cardholder-townshops">\
<div class="infobox-townshops">\
<div class="infobox-title-townshops">\
View Creatures
</div>\
<div class="infobox-body-townshops">\
See how your Creatures are doing since you left them here.
</div>\
<div class="infobox-link-townshops">\
<<if _occ_keep_bool === false>>\
<div class="offbutton">\
<<hovertip "Requires a Creature being stored">><<button "Take">><</button>><</hovertip>>
</div>\
<<else>>\
<span id="2"><<button "Visit ^^2^^" "Visit Creature">><<set $visit_creature to "">><</button>></span>
<</if>>\
</div>\
</div>\
</div>\
<div class="cardholder-townshops">\
<div class="infobox-townshops">\
<div class="infobox-title-townshops">\
Take Creature
</div>\
<div class="infobox-body-townshops">\
Take back one of your Creatures. You must have an open room to take the Creature back.
</div>\
<div class="infobox-link-townshops">\
<<if _empty_room_bool === false>>\
<div class="offbutton">\
<<hovertip "Requires an open Room">><<button "Take">><</button>><</hovertip>>
</div>\
<<elseif _occ_keep_bool === false>>\
<div class="offbutton">\
<<hovertip "Requires a Creature being stored">><<button "Take">><</button>><</hovertip>>
</div>\
<<else>>\
<span id="3"><<button "Take ^^3^^" "Take Creature">><</button>></span>
<</if>>\
</div>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Leave|Town Menu]]>><</button>></span> <span id="q"><<button "<u>Q</u>uick Menu" "Quick Menu">><</button>></span>
</div>\
</div>\
<</if>>\<<silently>>\
* Variables *
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Raider Chart
</div>\
<div class="slaveheader-packs-assign">\
</div>\
<div class="header-packs-assign">\
<<hovertip "Hunter">><<- setup.hunter.icon>><</hovertip>>
</div>\
<div class="header-packs-assign">\
<<hovertip "Sorcerer">><<- setup.sorcerer.icon>><</hovertip>>
</div>\
<div class="header-packs-assign">\
<<hovertip "Knight">><<- setup.knight.icon>><</hovertip>>
</div>\
<div class="header-packs-assign">\
<<hovertip "Warrior">><<- setup.warrior.icon>><</hovertip>>
</div>\
<div class="header-packs-assign">\
<<hovertip "Thief">><<- setup.thief.icon>><</hovertip>>
</div>\
<div class="header-packs-assign">\
<<hovertip "Priestess">><<- setup.priestess.icon>><</hovertip>>
</div>\
<div class="header-packs-assign">\
<<hovertip "Alchemist">><<- setup.alchemist.icon>><</hovertip>>
</div>\
<div class="header-packs-assign">\
<<hovertip "Witch">><<- setup.witch.icon>><</hovertip>>
</div>\
<div class="header-packs-assign">\
<<hovertip "Dancer">><<- setup.dancer.icon>><</hovertip>>
</div>\
<div class="header-packs-assign">\
<<hovertip "Brawler">><<- setup.brawler.icon>><</hovertip>>
</div>\
<div class="tablebox-packs-assign">\
<div class="row-packs-assign">\
<div class="slavecell-packs-assign">\
Entered
</div>\
<div class="cell-packs-assign">\
$raider_entered_stats.hunter
</div>\
<div class="cell-packs-assign">\
$raider_entered_stats.sorcerer
</div>\
<div class="cell-packs-assign">\
$raider_entered_stats.knight
</div>\
<div class="cell-packs-assign">\
$raider_entered_stats.warrior
</div>\
<div class="cell-packs-assign">\
$raider_entered_stats.thief
</div>\
<div class="cell-packs-assign">\
$raider_entered_stats.priestess
</div>\
<div class="cell-packs-assign">\
$raider_entered_stats.alchemist
</div>\
<div class="cell-packs-assign">\
$raider_entered_stats.witch
</div>\
<div class="cell-packs-assign">\
$raider_entered_stats.dancer
</div>\
<div class="cell-packs-assign">\
$raider_entered_stats.brawler
</div>\
</div>\
<div class="row-packs-assign">\
<div class="slavecell-packs-assign">\
Captured
</div>\
<div class="cell-packs-assign">\
$raider_captured_stats.hunter
</div>\
<div class="cell-packs-assign">\
$raider_captured_stats.sorcerer
</div>\
<div class="cell-packs-assign">\
$raider_captured_stats.knight
</div>\
<div class="cell-packs-assign">\
$raider_captured_stats.warrior
</div>\
<div class="cell-packs-assign">\
$raider_captured_stats.thief
</div>\
<div class="cell-packs-assign">\
$raider_captured_stats.priestess
</div>\
<div class="cell-packs-assign">\
$raider_captured_stats.alchemist
</div>\
<div class="cell-packs-assign">\
$raider_captured_stats.witch
</div>\
<div class="cell-packs-assign">\
$raider_captured_stats.dancer
</div>\
<div class="cell-packs-assign">\
$raider_captured_stats.brawler
</div>\
</div>\
<div class="row-packs-assign">\
<div class="slavecell-packs-assign">\
Abandoned
</div>\
<div class="cell-packs-assign">\
$raider_abandoned_stats.hunter
</div>\
<div class="cell-packs-assign">\
$raider_abandoned_stats.sorcerer
</div>\
<div class="cell-packs-assign">\
$raider_abandoned_stats.knight
</div>\
<div class="cell-packs-assign">\
$raider_abandoned_stats.warrior
</div>\
<div class="cell-packs-assign">\
$raider_abandoned_stats.thief
</div>\
<div class="cell-packs-assign">\
$raider_abandoned_stats.priestess
</div>\
<div class="cell-packs-assign">\
$raider_abandoned_stats.alchemist
</div>\
<div class="cell-packs-assign">\
$raider_abandoned_stats.witch
</div>\
<div class="cell-packs-assign">\
$raider_abandoned_stats.dancer
</div>\
<div class="cell-packs-assign">\
$raider_abandoned_stats.brawler
</div>\
</div>\
<div class="row-packs-assign">\
<div class="slavecell-packs-assign">\
Cleared
</div>\
<div class="cell-packs-assign">\
$raider_cleared_stats.hunter
</div>\
<div class="cell-packs-assign">\
$raider_cleared_stats.sorcerer
</div>\
<div class="cell-packs-assign">\
$raider_cleared_stats.knight
</div>\
<div class="cell-packs-assign">\
$raider_cleared_stats.warrior
</div>\
<div class="cell-packs-assign">\
$raider_cleared_stats.thief
</div>\
<div class="cell-packs-assign">\
$raider_cleared_stats.priestess
</div>\
<div class="cell-packs-assign">\
$raider_cleared_stats.alchemist
</div>\
<div class="cell-packs-assign">\
$raider_cleared_stats.witch
</div>\
<div class="cell-packs-assign">\
$raider_cleared_stats.dancer
</div>\
<div class="cell-packs-assign">\
$raider_cleared_stats.brawler
</div>\
</div>\
</div>\
<div class="linkbox-packs-assign">\
<span id="back"><<button [[Back|Player's Stats]]>><</button>></span>
</div>\
</div>\<div class="section">\
<div class="titlebox">\
Adding Slave Pack
</div>\
<div class="imagebox">\
[img[gifs/misc_0.gif]]
</div>\
<div class="textbox-center">\
Please wait while we create your Slave Pack
</div>\
</div>\
<<timed 3s>>\
<<goto "Slave Pack Edit">>
<</timed>>\<<silently>>\
* SETUP ROOM *
<<RoomSetup $raiders $this_room>>
<<CreatureStats $this_room>>
<<set _noCombatBool to false>> set to true if raider was caught, ends combat
* SETUP RAIDER *
<<RaiderSetup $raiders>>
* PRE COMBAT EFFECTS *
<<PreCombat $raiders $this_room>>
* MIMIC CHEST TRAPCHECK *
FIND TRAPCHECK RATE
<<set _trapcheck_rate to Math.round($this_room.rate + ($this_room.cur_max_hp * $this_room.hp_float))>>
<<if $this_room.name === "Crested Mimic Chest">>
ADD TRAPCHECK FOR EACH FLOOR BEFORE THIS ONE
<<for _d = 0; _d < $cur_room_num; _d++>>
<<set _trapcheck_rate += $this_room.crested_int>>
<</for>>
<<elseif $this_room.name === "Captor Mimic Chest">>
<<set _rcheck to Math.trunc(_trapcheck_rate * $this_room.captor_float)>>
<<set _trapcheck_rate -= _rcheck>>
<</if>>
TRAPCHECK: _trapcheck_rate
TRAPCHECK SIM
<<if $this_room.name !== "Captor Mimic Chest" && $this_room.name !== "Greater Mimic Chest">>
FIND RAIDER WITH LOWEST AWARENESS
<<set _aware to 0>>
<<set _mimic_target to "">>
<<for _z = 0; _z < $raiders.length; _z++>>
<<if _mimic_target === "">>
<<set _mimic_target to clone(_z)>>
<<set _aware to clone($raiders[_z].cur_aware)>>
<<elseif $raiders[_z].cur_aware < _aware>>
<<set _mimic_target to clone(_z)>>
<<set _aware to clone($raiders[_z].cur_aware)>>
<</if>>
<</for>>
ASSIGNED AS ATTACKED
<<set $raiders[_mimic_target].attacked to true>>
UPDATE STATS
<<set $this_room.report.trap_attempts++>>
RUN TRAPCHECK
<<CalcTrapcheck $raiders[_mimic_target] _trapcheck_rate>>
<<SimTrapcheck $raiders[_mimic_target] _trapcheck>>
<<if _text_triggers.check.trapcheck_failed.includes($raiders[_mimic_target].index) || _text_triggers.check.trapcheck_crit_failed.includes($raiders[_mimic_target].index)>>
<<if $this_room.name === "Crested Mimic Chest">>
<<set _entry to "She failed her @@.trap;Trapcheck@@, falling for the "+$this_room.name+"'s disguise, increasing her damage taken, and was unable to attack.">>
<<else>>
<<set _entry to "She failed her @@.trap;Trapcheck@@, falling for the "+$this_room.name+"'s disguise and was unable to attack.">>
<</if>>
<<else>>
<<set _entry to "She passed her @@.trap;Trapcheck@@ and was not fooled by the "+$this_room.name+"'s disguise.">>
<</if>>
<<set _lastLog to $raiders[_mimic_target].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_mimic_target].report.log.push(_lastLog)>>
<<elseif $this_room.name === "Greater Mimic Chest">>
TRAPCHECK AGAINST ALL RAIDERS
<<for _r = 0; _r < $raiders.length; _r++>>
UPDATE STATS
<<set $this_room.report.trap_attempts++>>
RUN TRAPCHECK
<<CalcTrapcheck $raiders[_r] _trapcheck_rate>>
<<SimTrapcheck $raiders[_r] _trapcheck>>
<</for>>
ATTACK ALL RAIDERS TRAPPED
<<set _atk_bool to false>> set to true if attacking a raider
<<for _r = 0; _r < $raiders.length; _r++>>
<<if _text_triggers.check.trapcheck_failed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)>>
<<set $raiders[_r].attacked to true>>
<<set _atk_bool to true>>
<<set _entry to "She failed her @@.trap;Trapcheck@@, falling for the "+$this_room.name+"'s disguise and was unable to attack.">>
<<else>>
<<set _entry to "She passed her @@.trap;Trapcheck@@ and was not fooled by the "+$this_room.name+"'s disguise.">>
<</if>>
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_r].report.log.push(_lastLog)>>
<</for>>
<<if _atk_bool === false>>
NO RAIDERS FAILED TRAPCHECK
<<CreatureChooseTarget $raiders $this_room>>
<</if>>
<<elseif $this_room.name === "Captor Mimic Chest">>
NO RAIDERS FAILED TRAPCHECK
<<CreatureChooseTarget $raiders $this_room>>
<<for _r = 0; _r < $raiders.length; _r++>>
<<if $raiders[_r].attacked === true>>
UPDATE STATS
<<set $this_room.report.trap_attempts++>>
RUN TRAPCHECK
<<CalcTrapcheck $raiders[_r] _trapcheck_rate>>
<<SimTrapcheck $raiders[_r] _trapcheck>>
<<if _text_triggers.check.trapcheck_failed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)>>
<<set _noCombatBool to true>>
<<AddStatus $raiders[_r] setup.captured true>>
<<set _entry to "She failed her @@.trap;Trapcheck@@ and was devoured whole.">>
<<else>>
<<set _entry to "She passed her @@.trap;Trapcheck@@ and avoided the "+$this_room.name+" leaping at her.">>
<</if>>
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_r].report.log.push(_lastLog)>>
<<break>>
<</if>>
<</for>>
<</if>>
* DANCER BUFF IF NOT TRAPPED *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].class === "Dancer" && !_text_triggers.check.trapcheck_failed.includes($raiders[_i].index) && !_text_triggers.check.trapcheck_crit_failed.includes($raiders[_i].index) && _noCombatBool === false>>
<<DancerBuff $raiders[_i] $this_room>>
<</if>>
<</for>>
* RAIDERS ATTACK IF NOT TRAPPED*
<<for _i = 0; _i < $raiders.length; _i++>>
<<if !_text_triggers.check.trapcheck_failed.includes($raiders[_i].index) && !_text_triggers.check.trapcheck_crit_failed.includes($raiders[_i].index) && _noCombatBool === false>>
<<RaiderAttack $raiders[_i] $this_room>>
<</if>>
<</for>>
* MIMIC CHEST ATTACKS TARGET *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].attacked === true && _noCombatBool === false>>
<<set _chest_atk to clone($this_room.cur_atk)>>
<<set _chest_sex to clone($this_room.cur_sex)>>
<<set _dmg_mod to 1>>
<<if $this_room.name === "Greater Mimic Chest" && _text_triggers.check.trapcheck_failed.length + _text_triggers.check.trapcheck_crit_failed.length <= 0>>
GREATER MIMIC ATTACK PENALTY FOR NO TRAPPED RAIDERS
<<set _chest_atk to Math.trunc($this_room.cur_atk * $this_room.greater_float)>>
<<set _chest_sex to Math.trunc($this_room.cur_sex * $this_room.greater_float)>>
<<elseif $this_room.name === "Crested Mimic Chest" && (_text_triggers.check.trapcheck_failed.includes($raiders[_i].index) || _text_triggers.check.trapcheck_crit_failed.includes($raiders[_i].index))>>
CRESTED MIMIC ATTACK BUFF FOR EACH FLOOR BEFORE THIS
<<set _dmg_mod += $this_room.crested_float>>
<</if>>
<<NormalAttack $raiders[_i] $this_room _chest_atk _dmg_mod>>
<<SexualAttack $raiders[_i] $this_room _chest_sex _dmg_mod>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage.">>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<</if>>
<</for>>
* POST COMBAT EFFECTS *
<<for _r = 0; _r < $raiders.length; _r++>>
<<PostCombat $raiders[_r] $this_room>>
<</for>>
* EXP & DAMAGE *
<<CreaturePostCombat $raiders $this_room>>
* CHOOSE RAIDER PICTURES *
SETUP PIC ARRAY
<<set _picArray to clone($this_room.raider_pics)>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].attacked === true>>
* Attacked Pictures *
<<set $raiders[_i].pic to _picArray[$raiders[_i].body_type].pluck()>>
<</if>>
<</for>>
* END OF COMBAT REPORT *
<<PostCombatReport $raiders $this_room>>
* CLEAN UP *
<<CleanUp $raiders $this_room>>
* DISPLAY INFO *
<<set _cardholderID to "cardholder-raid-"+$raiders.length+"raiders">>
<<set _cardinfoID to "cardinfo-raid-"+$raiders.length+"raiders">>
<<set _picboxID to "picbox-raid-"+$raiders.length+"raiders">>
<<set _textboxID to "textbox-raid-"+$raiders.length+"raiders">>
<</silently>>\
<div class="section">\
<<NextRoomButton>>\
<div class="cardholder-raid-playerside">\
<div class="cardinfo-raid-creature">\
<div class="roomtitle-raid-player">\
Floor $cur_room_num
</div>\
<div class="picbox-raid-player">\
_room_image
</div>\
<div class="namebox-raid-player">\
<strong>$this_room.name</strong>
---- Health: $this_room.cur_hp / $this_room.cur_max_hp ----
</div>\
<div class="textbox-raid-player">\
<ul>\
<<if $this_room.name === "Greater Mimic Chest">>\
<<if $raiders.length > 1 && _text_triggers.check.trapcheck_crit_failed.length + _text_triggers.check.trapcheck_failed.length === $raiders.length>>\
<li>All Raiders failed their Trapchecks and were caught by it.</li>\
<<elseif _text_triggers.check.trapcheck_crit_failed.length + _text_triggers.check.trapcheck_failed.length > 0>>\
<li>It was able to lure in a Raider, catching her by surprise.</li>\
<<elseif _text_triggers.check.trapcheck_crit_failed.length + _text_triggers.check.trapcheck_failed.length === 0>>\
<li>Its attack was sluggish since nobody fell for its disguise.</li>\
<</if>>\
<</if>>\
<<if $this_room.name === "Crested Mimic Chest" && _text_triggers.check.trapcheck_crit_failed.length + _text_triggers.check.trapcheck_failed.length > 0>>\
<li>Its dealt more damage to the Raider after she fell for its disguise.</li>\
<</if>>\
<<CreatureRoomText $this_room>>
<<BlessingTriggerText $this_room>>
<<EffectEndingText $this_room>>
</ul>\
</div>\
</div>\
</div>\
<div class="cardholder-raid-raiderside">\
<<for _r = 0; _r < $raiders.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_textboxID">\
<ul>\
<<if $this_room.name === "Mimic Chest" || $this_room.name === "Crested Mimic Chest">>\
<<if _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_failed.includes($raiders[_r].index)>>\
<li><<if _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)>><strong>Critical Fail!</strong> <</if>>She approached the chest, wondering what it could possibly contain. As she opened it, the $this_room.name caught her off guard and detained her, preventing her from attacking.</li>\
<<elseif _text_triggers.check.trapcheck_crit_passed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_passed.includes($raiders[_r].index)>>\
<li><<if _text_triggers.check.trapcheck_crit_passed.includes($raiders[_r].index)>><strong>Critical Success!</strong> <</if>>She approached the chest, but had an uneasy feeling. Before getting any closer, she attacked it, forcing the $this_room.name to give up it's disguise.</li>\
<</if>>\
<<elseif $this_room.name === "Greater Mimic Chest" && $raiders.length > 1>>\
<<if _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_failed.includes($raiders[_r].index)>>\
<li><<if _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)>><strong>Critical Fail!</strong> <</if>>She approached the large chest with her team, anxious to grab the treasure contained in it. Before she knew it, she was the one contained and trapped inside the mouth of the $this_room.name, preventing her from attacking.</li>\
<<elseif _text_triggers.check.trapcheck_crit_passed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_passed.includes($raiders[_r].index) && _text_triggers.check.trapcheck_crit_failed.length + _text_triggers.check.trapcheck_failed.length > 0>>\
<li><<if _text_triggers.check.trapcheck_crit_passed.includes($raiders[_r].index)>><strong>Critical Success!</strong> <</if>>She approached the great chest with her team. Sensing danger, she slowed her approach as the $this_room.name struck, avoiding getting caught.</li>\
<<elseif _text_triggers.check.trapcheck_crit_passed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_passed.includes($raiders[_r].index) && _text_triggers.check.trapcheck_crit_failed.length + _text_triggers.check.trapcheck_failed.length === 0>>\
<li><<if _text_triggers.check.trapcheck_crit_passed.includes($raiders[_r].index)>><strong>Critical Success!</strong> <</if>>She approached the great chest with her team. They all agreed that the chest seemed suspicious and proceeded to attack the $this_room.name, exposing it.</li>\
<</if>>\
<<elseif $this_room.name === "Greater Mimic Chest" && $raiders.length === 1>>\
<<if _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_failed.includes($raiders[_r].index)>>\
<li><<if _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)>><strong>Critical Fail!</strong> <</if>>She approached the large chest, eager to have all the loot to herself. Unfortunately, she was able to experience the $this_room.name all for herself, getting caught and unable to attack.</li>\
<<elseif _text_triggers.check.trapcheck_crit_passed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_passed.includes($raiders[_r].index)>>\
<li><<if _text_triggers.check.trapcheck_crit_passed.includes($raiders[_r].index)>><strong>Critical Success!</strong> <</if>>She approached the great chest and kept her composure, checking for traps before moving closer. She attacked the $this_room.name, forcing it to move on the offensive.</li>\
<</if>>\
<<elseif $this_room.name === "Captor Mimic Chest">>\
<<if _noCombatBool === true && $raiders[_r].attacked === true>>\
<li><<if _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)>><strong>Critical Fail!</strong> <</if>>Before she knew what happened, she was devoured by the $this_room.name and carried off.</li>\
<<elseif _noCombatBool === true>>\
<li>She watched as her teammate was gobbled up by the $this_room.name and ran off with her.</li>\
<<elseif $raiders[_r].attacked === true>>\
<li><<if _text_triggers.check.trapcheck_crit_passed.includes($raiders[_r].index)>><strong>Critical Success!</strong> <</if>>She saw something flying at her from the dark and rolled away, avoiding the $this_room.name's jaws.</li>\
<</if>>\
<</if>>\
<<if ($this_room.name === "Captor Mimic Chest" && $raiders[_r].attacked === false) || (!_text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index) && !_text_triggers.check.trapcheck_failed.includes($raiders[_r].index) && $this_room.name !== "Hasty Mimic Chest")>>\
<<DancerDanceText $raiders[_r] $this_room>>
<<RaiderAtkText $raiders[_r] $this_room>>
<</if>>\
<<if $raiders[_r].attacked === true>>\
<<if $this_room.name === "Mimic Chest">>\
<li>She took @@.phy;$raiders[_r].dmg_taken Physical@@ damage and @@.sex;$raiders[_r].sex_taken Sexual@@ damage from the jaws and tongue of the $this_room.name.</li>\
<<elseif $this_room.name === "Greater Mimic Chest">>\
<li>She took @@.phy;$raiders[_r].dmg_taken Physical@@ damage and @@.sex;$raiders[_r].sex_taken Sexual@@ damage from the $this_room.name's mouth and all the things inside.</li>\
<<elseif $this_room.name === "Crested Mimic Chest">>\
<li>She took @@.phy;$raiders[_r].dmg_taken Physical@@ damage and @@.sex;$raiders[_r].sex_taken Sexual@@ damage from being chomped and licked by the $this_room.name.</li>\
<<elseif $this_room.name === "Captor Mimic Chest">>\
<li>She took @@.phy;$raiders[_r].dmg_taken Physical@@ damage and @@.sex;$raiders[_r].sex_taken Sexual@@ damage from the $this_room.name's aggressive bites and slurps.</li>\
<</if>>\
<<RaiderFetishText $raiders[_r] $this_room>>
<</if>>\
<<if $raiders[_r].attacked === true && !_text_triggers.status.captured.includes($raiders[_r].index)>>\
<li>She was able to escape its clutches.</li>\
<</if>>\
<<PostCombatText $raiders[_r] $this_room>>
</ul>\
</div>\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\<<silently>>\
* SETUP ROOM *
<<RoomSetup $raiders $this_room>>
* SUCCUBUS EFFECT *
<<set _bonus_percent to 0>> amount mult by attack stats
<<set _bonus_count to 0>> number of raiders that triggered effect
LIST OF STATUSES TO CHECK FOR: $this_room.atk_check_list
<<for _i = 0; _i < $raiders.length; _i++>>
LIST OF RAIDER STATUSES: $raiders[_i].status_names
<<if $raiders[_i].status_names.includesAny($this_room.atk_check_list)>>
<<set _bonus_count++>>
<<set _entry to "The "+$this_room.name+" gained power from her libido.">>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<<if $this_room.name === "Succubus Mistress">>
MISTRESS BONUS
<<set _bonus_percent += $this_room.mistress_float>>
<<else>>
OTHER BONUS
<<set _bonus_percent += $this_room.stat_float>>
<</if>>
<</if>>
<</for>>
<<if _bonus_percent > 0>>
CREATE BUFF
<<set _newBuff to clone(setup.creature_effect)>>
<<set _newBuff.name to "Lust Absorbed">>
<<set _newBuff.id to "Lust Absorbed">>
<<set _newBuff.effect_types to ["Temporary"]>>
<<set _newBuff.atk_float to _bonus_percent>>
<<set _newBuff.sex_float to _bonus_percent>>
<<set _newBuff.pres_float to _bonus_percent>>
<<set _newBuff.mres_float to _bonus_percent>>
<<set _newBuff.duration to 1>>
<<set _newBuff.icon to setup.effect_icons.spell>>
PUSH BUFF IN ROOM
<<set $this_room.effects.push(_newBuff)>>
<</if>>
<<CreatureStats $this_room>>
* SETUP RAIDER *
<<RaiderSetup $raiders>>
* PRE COMBAT EFFECTS *
<<PreCombat $raiders $this_room>>
* DANCER BUFF *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].class === "Dancer">>
<<DancerBuff $raiders[_i] $this_room>>
<</if>>
<</for>>
* RAIDERS ATTACK *
<<for _i = 0; _i < $raiders.length; _i++>>
<<RaiderAttack $raiders[_i] $this_room>>
<</for>>
* CHOOSE TARGET *
<<CreatureChooseTarget $raiders $this_room>>
* SUCCUBUS ATTACKS TARGET *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].attacked === true>>
NORMAL ATTACK
<<NormalAttack $raiders[_i] $this_room $this_room.cur_atk>>
<<SexualAttack $raiders[_i] $this_room $this_room.cur_sex>>
UPDATE RAIDER REPORT
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage.">>
<<if $this_room.name === "Futa Succubus">>
<<set _sticky_stacks to random($this_room.futa_min, $this_room.futa_max)>>
<<AddStacks $raiders[_i] setup.sticky _sticky_stacks true>>
FIND ACCURATE STICKY AMOUNT
<<if $raiders[_i].status_names.includes("Sticky")>>
<<for _z = 0; _z < $raiders[_i].statuses.length; _z++>>
<<if $raiders[_i].statuses[_z].id === "Sticky">>
<<set _sticky_gained to clone($raiders[_i].statuses[_z].gain)>>
<<break>>
<</if>>
<</for>>
<</if>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage and gained "+_sticky_gained+" Sticky.">>
<</if>>
<<if $this_room.name === "Hexmage Succubus">>
HEXMAGE SPELL
SET SPELLCHECK
<<set _suc_spellcheck to $this_room.rate + Math.round(($this_room.cur_atk * $this_room.hex_float))>>
STATS
<<set $this_room.report.spell_attempts++>>
SPELLCHECK
<<CalcSpellcheck $raiders[_i] _suc_spellcheck "Creature">>
<<SimSpellcheck $raiders[_i] _spellcheck "Creature">>
APPLY STATUS
<<if _text_triggers.check.spellcheck_failed.includes($raiders[_i].index) || _text_triggers.check.spellcheck_crit_failed.includes($raiders[_i].index)>>
<<AddStatus $raiders[_i] setup.cursed true>>
<<if _text_triggers.status.cursed.includes($raiders[_i].index)>>
UPDATE RAIDER REPORT
<<set _entry to "She took @@.mag;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage and became Cursed.">>
<<else>>
<<set _entry to "She took @@.mag;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage and failed the @@.spell;Spellcheck@@, but she was already Cursed.">>
<</if>>
<<else>>
<<set _entry to "She took @@.mag;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage and passed the @@.spell;Spellcheck@@.">>
<</if>>
<</if>>
<<else>>
UPDATE RAIDER REPORT
<<set _entry to "She was not attacked.">>
<</if>>
UPDATE RAIDER REPORT
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<</for>>
* POST COMBAT EFFECTS *
<<for _r = 0; _r < $raiders.length; _r++>>
<<PostCombat $raiders[_r] $this_room>>
<</for>>
* EXP & DAMAGE *
<<CreaturePostCombat $raiders $this_room>>
* CHOOSE RAIDER PICTURES *
SETUP PIC ARRAY
<<set _picArray to clone($this_room.raider_pics)>>
SET PIC
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].attacked === true>>
<<set $raiders[_i].pic to _picArray[$raiders[_i].body_type].pluck()>>
<</if>>
<</for>>
* END OF COMBAT REPORT *
<<PostCombatReport $raiders $this_room>>
* CLEAN UP *
<<CleanUp $raiders $this_room>>
* DISPLAY INFO *
<<set _cardholderID to "cardholder-raid-"+$raiders.length+"raiders">>
<<set _cardinfoID to "cardinfo-raid-"+$raiders.length+"raiders">>
<<set _picboxID to "picbox-raid-"+$raiders.length+"raiders">>
<<set _textboxID to "textbox-raid-"+$raiders.length+"raiders">>
<</silently>>\
<div class="section">\
<<NextRoomButton>>\
<div class="cardholder-raid-playerside">\
<div class="cardinfo-raid-creature">\
<div class="roomtitle-raid-player">\
Floor $cur_room_num
</div>\
<div class="picbox-raid-player">\
_room_image
</div>\
<div class="namebox-raid-player">\
<strong>$this_room.name</strong>
---- Health: $this_room.cur_hp / $this_room.cur_max_hp ----
</div>\
<div class="textbox-raid-player">\
<ul>\
<<if _bonus_count > 0>>\
<<set _percent to _bonus_percent * 100>>
<li>All her stats were increased by _percent%.</li>\
<</if>>\
<<CreatureRoomText $this_room>>
<<BlessingTriggerText $this_room>>
<<EffectEndingText $this_room>>
</ul>\
</div>\
</div>\
</div>\
<div class="cardholder-raid-raiderside">\
<<for _r = 0; _r < $raiders.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_textboxID">\
<ul>\
<<DancerDanceText $raiders[_r] $this_room>>
<<RaiderAtkText $raiders[_r] $this_room>>
<<if $raiders[_r].attacked === true>>\
<<if $this_room.name === "Succubus">>\
<li>The Succubus cracked her with their whip and brought her close to taste her snatch, taking @@.phy;$raiders[_r].dmg_taken@@ Physical and @@.sex;$raiders[_r].sex_taken@@ Sexual damage.</li>\
<<elseif $this_room.name === "Futa Succubus">>\
<li>The Futa Succubus violated her ass with their whip and cock, taking @@.phy;$raiders[_r].dmg_taken@@ Physical and @@.sex;$raiders[_r].sex_taken@@ Sexual damage.</li>\
<<elseif $this_room.name === "Succubus Mistress">>\
<li>The Succubus Mistress toyed with her by tying her hands together with their whip and eating out her pussy, taking @@.phy;$raiders[_r].dmg_taken@@ Physical and @@.sex;$raiders[_r].sex_taken@@ Sexual damage.</li>\
<<elseif $this_room.name === "Hexmage Succubus">>\
<<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[_r].index) || _text_triggers.check.spellcheck_failed.includes($raiders[_r].index)>>\
<li><<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[_r].index)>><strong>Critical Failure!</strong> <</if>>The Hexmage Succubus attacked her with hex magic while tonguing her pussy, taking @@.mag;$raiders[_r].dmg_taken@@ Magical and @@.sex;$raiders[_r].sex_taken@@ Sexual damage and becoming hexed.</li>\
<<elseif _text_triggers.check.spellcheck_crit_passed.includes($raiders[_r].index) || _text_triggers.check.spellcheck_passed.includes($raiders[_r].index)>>\
<li><<if _text_triggers.check.spellcheck_crit_passed.includes($raiders[_r].index)>><strong>Critical Success!</strong> <</if>>The Hexmage Succubus attacked her with hex magic while tonguing her pussy, taking @@.mag;$raiders[_r].dmg_taken@@ Magical and @@.sex;$raiders[_r].sex_taken@@ Sexual damage, but resisting the hex.</li>\
<</if>>\
<</if>>
<<RaiderFetishText $raiders[_r] $this_room>>
<</if>>\
<<PostCombatText $raiders[_r] $this_room>>
</ul>\
</div>\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\<<silently>>\
* Variables *
<<set _index to $cur_birth_event[0].raider_index>> holds raiders index
<<set _birth_locations to []>> holds list of birth locations for images
* Find Raider *
<<for _r = 0; _r < $raiders.length; _r++>>
<<if $raiders[_r].index === _index>>
<<set _cur_index to _r>>
<<break>>
<</if>>
<</for>>
* Calc Birth Damage *
<<set _total_sex to 0>>
<<for _z = 0; _z < $cur_birth_event.length; _z++>>
ADD BIRTH LUST GAINED
<<set _dmg to Math.round(setup.pregnant.birth_int + ($raiders[_cur_index].max_lust * setup.pregnant.birth_float))>>
BASE DMG: _dmg
ADD BIRTH LOCATION
<<set _birth_locations.push(clone($cur_birth_event[_z].birth_type))>>
BIRTH LOCATION: $cur_birth_event[_z].birth_type
APPLY BIRTH FETISH
<<if $raiders[_cur_index].kinks.includesAny($cur_birth_event[_z].fetish)>>
CREATE LIST OF OPTIONS
<<set _kink_list to clone($raiders[_cur_index].kinks)>>
<<set _options to _kink_list.delete($cur_birth_event[_z].fetish)>>
SET KINK TRIGGER
<<set $raiders[_cur_index].kink_trigger.pushUnique(_options.random())>>
INTENSE BONUS
<<if $raiders[_cur_index].trait_names.includes("Intense")>>
<<set _amount to Math.trunc(_dmg * setup.intense.float) + 1>>
<<set _dmg += _amount>>
KINK BONUS
<<else>>
<<set _amount to Math.trunc(_dmg * setup.kink_mod) + 1>>
<<set _dmg += _amount>>
<</if>>
KINK INCREASED DMG: _dmg
<<elseif $raiders[_cur_index].turnoffs.includesAny($cur_birth_event[_z].fetish)>>
CREATE LIST OF OPTIONS
<<set _turnoff_list to clone($raiders[_cur_index].turnoffs)>>
<<set _options to _turnoff_list.delete($cur_birth_event[_z].fetish)>>
SET TURNOFF TRIGGER
<<set $raiders[_cur_index].turnoff_trigger.pushUnique(_options.random())>>
INTENSE PENALTY
<<if $raiders[_cur_index].trait_names.includes("Intense")>>
<<set _amount to Math.trunc(_dmg * setup.intense.float) + 1>>
<<set _dmg -= _amount>>
TURNOFF PENALTY
<<else>>
<<set _amount to Math.trunc(_dmg * setup.turnoff_mod) + 1>>
<<set _dmg -= _amount>>
<</if>>
TURNOFF DECREASED DMG: _dmg
<</if>>
ADD TO TOTAL
<<set _total_sex += clone((_dmg).clamp(1, 1000000))>>
TOTAL SEX: _total_sex
UPDATE RAIDER REPORT
<<if _birth_locations.includesAll("Anus", "Breasts", "Womb")>>
<<set _entry to "She gained @@.lust;"+_total_sex+" Lust@@ after giving birth from her anus, breasts, and womb.">>
<<elseif _birth_locations.includesAll("Anus", "Breasts")>>
<<set _entry to "She gained @@.lust;"+_total_sex+" Lust@@ after giving birth from her anus and breasts.">>
<<elseif _birth_locations.includesAll("Anus", "Womb")>>
<<set _entry to "She gained @@.lust;"+_total_sex+" Lust@@ after giving birth from her anus and womb.">>
<<elseif _birth_locations.includesAll("Breasts", "Womb")>>
<<set _entry to "She gained @@.lust;"+_total_sex+" Lust@@ after giving birth from her breasts and womb.">>
<<elseif _birth_locations.includes("Anus")>>
<<set _entry to "She gained @@.lust;"+_total_sex+" Lust@@ after giving birth from her anus.">>
<<elseif _birth_locations.includes("Breasts")>>
<<set _entry to "She gained @@.lust;"+_total_sex+" Lust@@ after giving birth from her breasts.">>
<<elseif _birth_locations.includes("Womb")>>
<<set _entry to "She gained @@.lust;"+_total_sex+" Lust@@ after giving birth from her womb.">>
<</if>>
<<set _lastLog to $raiders[_cur_index].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_cur_index].report.log.push(_lastLog)>>
<</for>>
ADD TOTAL LUST
<<set $raiders[_cur_index].cur_lust to Math.clamp($raiders[_cur_index].cur_lust + _total_sex, 0, $raiders[_cur_index].max_lust - 1)>>
EDGING
<<set _edging_text to false>>
<<if !$raiders[_cur_index].status_names.includes("Edging") && ($raiders[_cur_index].cur_lust >= $raiders[_cur_index].max_lust - setup.edging.int_limit || ($raiders[_cur_index].cur_lust / $raiders[_cur_index].max_lust).toFixed(3) >= setup.edging.limit)>>
<<AddStatus $raiders[_cur_index] setup.edging false>>
<<set _edging_text to true>>
<</if>>
* Remove Pregnant Statuses *
<<set _list to []>> holds indexes of pregnant statuses that need to be removed
<<for _z = 0; _z < $raiders[_cur_index].statuses.length; _z++>>
<<if $raiders[_cur_index].statuses[_z].id === setup.pregnant.id>>
<<if $raiders[_cur_index].statuses[_z].cd <= 0>>
<<set _list.push(_z)>>
<</if>>
<</if>>
<</for>>
<<set _remove to $raiders[_cur_index].statuses.deleteAt(_list)>>
* Set Image *
<<set _image_list to []>>
<<if _birth_locations.includes("Anus")>>
<<set _ass0 to "[img[images/statuses/pregnant/anus/0.gif]]">>
<<set _ass1 to "[img[images/statuses/pregnant/anus/1.jpg]]">>
<<set _ass2 to "[img[images/statuses/pregnant/anus/2.jpg]]">>
<<set _ass3 to "[img[images/statuses/pregnant/anus/3.jpg]]">>
<<set _image_list.push(_ass0, _ass1, _ass2, _ass3)>>
<</if>>
<<if _birth_locations.includes("Breasts")>>
<<set _breast0 to "[img[images/statuses/pregnant/breasts/0.gif]]">>
<<set _breast1 to "[img[images/statuses/pregnant/breasts/1.jpg]]">>
<<set _breast2 to "[img[images/statuses/pregnant/breasts/2.jpg]]">>
<<set _breast3 to "[img[images/statuses/pregnant/breasts/3.jpg]]">>
<<set _image_list.push(_breast0, _breast1, _breast2, _breast3)>>
<</if>>
<<if _birth_locations.includes("Womb")>>
<<set _womb0 to "[img[images/statuses/pregnant/womb/0.gif]]">>
<<set _womb1 to "[img[images/statuses/pregnant/womb/1.jpg]]">>
<<set _womb2 to "[img[images/statuses/pregnant/womb/2.jpg]]">>
<<set _womb3 to "[img[images/statuses/pregnant/womb/3.jpg]]">>
<<set _image_list.push(_womb0, _womb1, _womb2, _womb3)>>
<</if>>
<<set _pic to _image_list.random()>>
* Set Text *
<<if _birth_locations.includesAll("Anus", "Breasts", "Womb")>>
<<set _text to "Before moving to the next floor, " + $raiders[_cur_index].name + " gave birth from her anus, breasts, and womb all at the same time.">>
<<elseif _birth_locations.includesAll("Anus", "Breasts")>>
<<set _text to "Before moving to the next floor, " + $raiders[_cur_index].name + " gave birth to the creatures in her anus and breasts.">>
<<elseif _birth_locations.includesAll("Anus", "Womb")>>
<<set _text to "Before moving to the next floor, " + $raiders[_cur_index].name + " gave birth to the creatures in her anus and womb.">>
<<elseif _birth_locations.includesAll("Breasts", "Womb")>>
<<set _text to "Before moving to the next floor, " + $raiders[_cur_index].name + " gave birth to the creatures in her breasts and womb.">>
<<elseif _birth_locations.includes("Anus")>>
<<set _text to "Before moving to the next floor, " + $raiders[_cur_index].name + " gave birth through her anus.">>
<<elseif _birth_locations.includes("Breasts")>>
<<set _text to "Before moving to the next floor, " + $raiders[_cur_index].name + " gave birth through her breasts.">>
<<elseif _birth_locations.includes("Womb")>>
<<set _text to "Before moving to the next floor, " + $raiders[_cur_index].name + " gave birth and emptied her womb.">>
<</if>>
* Reset Birth Events *
<<set $cur_birth_event to []>>
* Set Next Link *
<<BetweenRoomLink>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Giving Birth
</div>\
<div class="imagebox">\
_pic
</div>\
<div class="textbox">\
_text
<ul>\
<li>She gained <span class="lust">_total_sex Lust</span>.</li>\
<<if $raiders[_cur_index].kink_trigger.includes("Ass")>>\
<li>She gained more @@.lust;Lust@@ giving birth through her anus because of her Ass Kink.</li>\
<</if>>\
<<if $raiders[_cur_index].kink_trigger.includes("Breasts")>>\
<li>She gained more @@.lust;Lust@@ giving birth through her nipples because of her Breasts Kink.</li>\
<</if>>\
<<if $raiders[_cur_index].kink_trigger.includes("Pussy")>>\
<li>She gained more @@.lust;Lust@@ giving birth because of her Pussy Kink.</li>\
<</if>>\
<<if $raiders[_cur_index].turnoff_trigger.includes("Ass")>>\
<li>She gained less @@.lust;Lust@@ giving birth through her anus because of her Ass Turnoff.</li>\
<</if>>\
<<if $raiders[_cur_index].turnoff_trigger.includes("Breasts")>>\
<li>She gained less @@.lust;Lust@@ giving birth through her nipples because of her Breasts Turnoff.</li>\
<</if>>\
<<if $raiders[_cur_index].turnoff_trigger.includes("Pussy")>>\
<li>She gained less @@.lust;Lust@@ giving birth because of her Pussy Turnoff.</li>\
<</if>>\
<<if _edging_text === true>>\
<li>She's on the Edge of Climaxing!</li>
<</if>>\
</ul>\
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[Continue|_link]]>>\
<<silently>>\
<<if _link !== "Birth Event">>
<<unset $cur_birth_event>>
<</if>>
<</silently>>\
<</button>></span>
</div>\
</div>\<<if $spell_targeting === true>>\
<<silently>>\
*Variables*
<<set _spell_percent_list to []>> Holds all the spell percent for each raider
* Overload Spellcheck *
<<if $overloadSpellBool === true>>
<<set $pc_spellbook[$spell_index].cur_check += (Math.round($pc_spellbook[$spell_index].cur_check * setup.blessing_02_12.float)).clamp(1, 1000000)>>
<</if>>
* Setup Raiders *
<<RaiderSetup $raiders>>
*Calc Percent for each Raider*
<<for _i = 0; _i < $raiders.length; _i++>>
ADD PERCENT BASED ON RAIDERS MISSING HEALTH
<<set _checkMod to ((setup.imprison_spell.float - ($raiders[_i].cur_hp / $raiders[_i].max_hp)) * setup.imprison_spell.mod).clamp(1, setup.imprison_spell.mod)>> _checkMod
SET SPELLCHECK
<<set _base_check to Math.round($pc_spellbook[$spell_index].cur_check * _checkMod)>> BASE SPELLCHECK: _base_check
CALC CHANCE
<<CalcSpellcheck $raiders[_i] _base_check "Player">>
SET RAIDERS SPELL PERCENT
<<set _spell_percent_list.push(clone(_spellcheck))>>
<</for>>
* Display Info *
<<set _cardholderID to "cardholder-"+$raiders.length+"girls">>
<<set _cardinfoID to "cardinfo-"+$raiders.length+"girls">>
<<set _picboxID to "picbox-"+$raiders.length+"girls">>
<<set _textboxID to "textbox-"+$raiders.length+"girls">>
<<set _linkboxID to "linkbox-targeting-"+$raiders.length+"girls">>
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<span id="back"><<button [[Back|View Spells]]>><<unset $mana_cost>><</button>></span>
</div>\
<div class="titlebox">\
Choose a Target
</div>\
<<for _r = 0; _r < $raiders.length; _r++>>\
<<set _hotKey to _r + 1>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
<div @class="_textboxID">\
Name: $raiders[_r].name
Class: $raiders[_r].subclass.name $raiders[_r].class
Role: $raiders[_r].role
Traits: <<for _i = 0; _i < $raiders[_r].traits.length; _i++>>\
<<if $raiders[_r].traits[_i].type === "Special">>\
<span style="color:gold"><<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>></span><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<<else>>\
<<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<</if>>\
<</for>>
Kinks: <<if $raiders[_r].kinks.length === 0>>None<<else>>$raiders[_r].kinks<</if>>
Turn-Offs: <<if $raiders[_r].turnoffs.length === 0>>None<<else>>$raiders[_r].turnoffs<</if>>
Statuses: <<if $raiders[_r].statuses.length == 0>>\
None
<<else>>\
<<for _i = 0; _i < $raiders[_r].statuses.length; _i++>>\
<<hovertip "$raiders[_r].statuses[_i].tooltip">>$raiders[_r].statuses[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].statuses.length>>, <</if>><</for>><</if>>
</div>\
</div>\
<div @class="_linkboxID">\
<<if _spell_percent_list[_r] <= 39>>\
<<set _color to "bad">>\
<<elseif _spell_percent_list[_r] <= 69>>\
<<set _color to "neutral">>\
<<else>>\
<<set _color to "good">>\
<</if>>\
$pc_spellbook[$spell_index].name Success Rate: <span @class="_color">_spell_percent_list[_r]%</span> \
<<capture _r, _hotKey>>\
<span @id="_hotKey"><<button "Target Raider ^^_hotKey^^" $pc_spellbook[$spell_index].passage>><<unset $spell_targeting>><<set $target to _r>><<set $spell_percent to _spell_percent_list[_r]>><</button>></span>
<</capture>>\
</div>\
</div>\
<</for>>\
</div>\
<<else>>\
<<silently>>\
* Setup Raiders *
<<RaiderSetup $raiders>>
* Cast Spell *
<<CastingSpell $pc_spellbook[$spell_index] $mana_cost>>
CALC CHANCE
<<SimSpellcheck $raiders[$target] $spell_percent "Player">>
<<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[$target].index) || _text_triggers.check.spellcheck_failed.includes($raiders[$target].index)>>
UPDATE CAST BOOL
<<set $pc_spellbook[$spell_index].cast_bool to false>>
SET GIF
<<set _gif to $pc_spellbook[$spell_index].gif>>
UPDATE GIRL INFO
<<set $raiders[$target].captured_by to $pc_spellbook[$spell_index].name>>
<<AddStatus $raiders[$target] setup.captured true>>
UPDATE REPORT
<<set _entry to "You casted Imprison, dragging her into your prison cell through a portal.">>
<<set _lastLog to $raiders[$target].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[$target].report.log.push(_lastLog)>>
SET RAIDER REPORT RESULT
<<set _result to "She was Captured by your Imprison Spell.">>
SET GENERAL CAPTURE PICS
<<GeneralCaptureImgs>>
<<set $raiders[$target].report.result to _result>>
<<set $raiders[$target].report.result_pic to _raiderCaptureImgs[$raiders[$target].body_type].random()>>
PUSH REPORT TO LIST
<<set $raider_report_list.push($raiders[$target].report)>>
<<else>>
UPDATE REPORT
<<set _entry to "You casted Imprison, but it failed.">>
<<set _lastLog to $raiders[$target].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[$target].report.log.push(_lastLog)>>
SET GIF
<<set _gif to setup.spell_failed_gif_list.random()>>
<</if>>
*Display*
<</silently>>\
<div class="section">\
<<NextSpellButton>>\
<div class="titlebox">\
$pc_spellbook[$spell_index].name Spell
</div>\
<div class="imagebox">\
_gif
</div>\
<div class="textbox-center">\
<<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[$target].index)>>\
<strong>Critical Failure!</strong> PLACEHOLDER
<<elseif _text_triggers.check.spellcheck_failed.includes($raiders[$target].index)>>\
FAILED PLACEHOLDER
<<elseif _text_triggers.check.spellcheck_crit_passed.includes($raiders[$target].index)>>\
<strong>Critical Success!</strong> PASSED PLACEHOLDER
<<else>>\
PASSED PLACEHOLDER
<</if>>
<<if _text_triggers.blessing.resourceful_sorcerer === true && $modifiers.blessing.resourceful_sorcerer === 1>>\
<li>You recovered the spell's @@.mana;Mana Cost@@ after it failed.</li>\
<<elseif _text_triggers.blessing.resourceful_sorcerer === true && $modifiers.blessing.resourceful_sorcerer < 1>>\
<li>You recovered half of the spell's @@.mana;Mana Cost@@ after it failed.</li>\
<</if>>\
</div>\
</div>\
<</if>>\<<silently>>\
* Variables *
<<set _floor_names to ["Floor One", "Floor Two", "Floor Three", "Floor Four", "Floor Five", "Floor Six", "Floor Seven", "Floor Eight", "Floor Nine", "Floor Ten", "Floor Eleven", "Floor Twelve"]>> Display name for each room
* Find Open Keep *
<<set _open_room to "">>
<<for _z = 0; _z < $keeper_list.length; _z++>>
<<if $keeper_list[_z].room_type === "Empty">>
<<set _open_room to _z>>
<<break>>
<</if>>
<</for>>
* Display *
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Creature Keeper]]>><</button>></span>
</div>\
<div class="titlebox">\
Leave a Creature
</div>\
<div class="tableholder-manager">\
<<for _i = 0; _i < $dungeon_floor_list.length; _i++>>\
<<set _hotKey to _i + 1>>\
<div class="cell-manager">\
<div class="cell-textholder-manager">\
<strong><<- _floor_names[_i]>></strong>
<<if $dungeon_floor_list[_i].room_type === "Creature">>\
<<capture _i, _hotKey>>\
<span @id="_hotKey"><<button "Leave ^^_hotKey^^" "Creature Keeper">>\
<<silently>>\
* Reset Keeper Stats *
<<set $dungeon_floor_list[_i].keeper_level to 0>>
<<set $dungeon_floor_list[_i].keeper_exp to 0>>
<<set $dungeon_floor_list[_i].keeper_days to 0>>
* Leave Creature *
<<set $keeper_list[_open_room] to clone($dungeon_floor_list[_i])>>
<<set $left_name to $keeper_list[_open_room].name>>
<<set $left_creature_bool to true>>
<<set $dungeon_floor_list[_i] to setup.empty_room>>
* Remove Caretaker Job *
<<for _z = 0; _z < $slave_room_list.length; _z++>>
<<if $slave_room_list[_z].room_type === "Slave">>
<<if $slave_room_list[_z].job != "">>\
<<if $slave_room_list[_z].job.type === "Caretaker">>\
<<if $slave_room_list[_z].job.creature_index === $keeper_list[_open_room].index>>
<<set $slave_room_list[_z].job to "">>
<<break>>
<</if>>
<</if>>
<</if>>
<</if>>
<</for>>
<</silently>>\
<</button>></span>\
<</capture>>\
<<elseif $dungeon_floor_list[_i].room_type === "Trap">>\
<div class="offbutton">\
<<button "Leave">><</button>>
</div>\
<<elseif $dungeon_floor_list[_i].room_type === "Empty" && $dungeon_floor_list[_i].built === true>>\
<div class="offbutton">\
<<button "Leave">><</button>>
</div>\
<<elseif $dungeon_floor_list[_i].room_type === "Empty" && $dungeon_floor_list[_i].built === false>>\
<div class="offbutton">\
<<button "Leave">><</button>>
</div>\
<</if>>\
</div>\
<div class="cell-picholder-manager">\
$dungeon_floor_list[_i].pic
</div>\
</div>\
<</for>>\
</div>\
</div>\<<silently>>\
* Variables *
<<set _floor_names to ["Floor One", "Floor Two", "Floor Three", "Floor Four", "Floor Five", "Floor Six", "Floor Seven", "Floor Eight", "Floor Nine", "Floor Ten", "Floor Eleven", "Floor Twelve"]>> Display name for each room
* Find Open Room *
<<set _open_room to "">>
<<for _z = 0; _z < $dungeon_floor_list.length; _z++>>
<<if $dungeon_floor_list[_z].room_type === "Empty">>
<<if $dungeon_floor_list[_z].built === true>>
<<set _open_room to _z>>
<<break>>
<</if>>
<</if>>
<</for>>
* Display *
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Creature Keeper]]>><</button>></span>
</div>\
<div class="titlebox">\
Take a Creature
</div>\
<div class="keeper-manager">\
<<for _i = 0; _i < $keeper_list.length; _i++>>\
<<set _hotKey to _i + 1>>\
<div class="keeper-cellholder">\
<div class="keeper-cell-textbox">\
<strong><<- _floor_names[_i]>></strong>
<<if $keeper_list[_i].room_type === "Creature">>\
<<capture _i, _hotKey>>\
<span @id="_hotKey"><<button "Take ^^_hotKey^^" "Creature Keeper">>\
<<silently>>\
* Take Creature *
<<set $dungeon_floor_list[_open_room] to clone($keeper_list[_i])>>
<<set $took_name to $keeper_list[_i].name>>
<<set $took_creature_bool to true>>
<<set $keeper_list[_i] to setup.empty_keep>>
<</silently>>\
<</button>></span>\
<</capture>>\
<<elseif $keeper_list[_i].room_type === "Empty">>\
<div class="offbutton">\
<<button "Empty Room">><</button>>
</div>\
<</if>>\
</div>\
<div class="keeper-cell-picbox">\
$keeper_list[_i].pic
</div>\
</div>\
<</for>>\
</div>\
</div>\<<widget "CreatureLevelUp">>
_args[0].name is creature
_args[1] is exp gained
<<set _gained_level to 0>>
<<set _args[0].exp += _args[1]>>
<<set _args[0].keeper_exp += _args[1]>>
<<if _args[0].exp >= _args[0].next_level_exp && _args[0].level < $creature_levelcap>>
<<for _l = 0; _l < 1; _l++>>
INCREASE LEVEL
<<set _gained_level++>>
<<set _args[0].level++>>
<<set _args[0].keeper_level++>>
SET TEXT INFO
<<set _args[0].raid_levels_gained++>>
SET REPORT STATS
<<set _args[0].report.levels_gained++>>
INCREASE STATS
HEALTH
<<set _args[0].max_hp += _args[0].hp_per_lvl>>
<<set _args[0].cur_max_hp += _args[0].hp_per_lvl>>
ONLY RAISE HP IF ALIVE
<<if _args[0].cur_hp > 0>>
<<set _args[0].cur_hp += _args[0].hp_per_lvl>>
<</if>>
TRUNC HEALTH
<<set _args[0].cur_hp to Math.trunc(_args[0].cur_hp)>>
<<set _args[0].cur_max_hp to Math.trunc(_args[0].cur_max_hp)>>
ATTACK
<<set _args[0].atk += _args[0].atk_per_lvl>>
PHYSICAL RESISTANCE
<<set _args[0].pres += _args[0].pres_per_lvl>>
MAGICAL RESISTANCE
<<set _args[0].mres += _args[0].mres_per_lvl>>
SEX
<<set _args[0].sex += _args[0].sex_per_lvl>>
SET NEXT LEVEL EXP REQUIREMENT
<<set _args[0].next_level_exp += Math.round(((_args[0].level * _args[0].level) + setup.creature_nextlevel_constant) * _args[0].growth_rate)>>
CHECK IF THEY GAINED ANOTHER LEVEL
<<if _args[0].exp >= _args[0].next_level_exp && _args[0].level < $creature_levelcap>>
GAIN ANOTHER LEVEL
<<set _l-->>
<<elseif _args[0].exp >= _args[0].next_level_exp && _args[0].level === $creature_levelcap>>
LEVEL CAP REACHED
<<set _args[0].exp to _args[0].next_level_exp - 1>>
<</if>>
<</for>>
UPDATE UPKEEP
<<set _args[0].upkeep to Math.trunc(_args[0].base_upkeep + (_args[0].base_upkeep * (setup.creature_upkeep_float * (_args[0].level - 1))))>>
<<elseif _args[0].exp >= _args[0].next_level_exp && _args[0].level === $creature_levelcap>>
LEVEL CAP REACHED
<<set _args[0].exp to _args[0].next_level_exp - 1>>
<</if>>
<</widget>><<if $spell_targeting === true>>\
<<silently>>\
*Variables*
<<set _spell_percent_list to []>> Holds all the spell percent for each raider
* Overload Spellcheck *
<<if $overloadSpellBool === true>>
<<set $pc_spellbook[$spell_index].cur_check += (Math.round($pc_spellbook[$spell_index].cur_check * setup.blessing_02_12.float)).clamp(1, 1000000)>>
<</if>>
* Setup Raiders *
<<RaiderSetup $raiders>>
*Calc Percent for each Raider*
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].status_names.includes(setup.brainwashed.id)>>
<<set _spell_percent_list.push(0)>>
<<else>>
CALC CHANCE
<<CalcSpellcheck $raiders[_i] $pc_spellbook[$spell_index].cur_check "Player">>
<<set _spell_percent_list.push(_spellcheck)>>
<</if>>
<</for>>
* Display Info *
<<set _cardholderID to "cardholder-"+$raiders.length+"girls">>
<<set _cardinfoID to "cardinfo-"+$raiders.length+"girls">>
<<set _picboxID to "picbox-"+$raiders.length+"girls">>
<<set _textboxID to "textbox-"+$raiders.length+"girls">>
<<set _linkboxID to "linkbox-targeting-"+$raiders.length+"girls">>
<</silently>>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|View Spells]]>><<unset $mana_cost, $spell_index>><</button>></span>
</div>\
<div class="titlebox">\
Choose a Target
</div>\
<<for _r = 0; _r < $raiders.length; _r++>>\
<<set _hotKey to _r + 1>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
<div @class="_textboxID">\
Name: $raiders[_r].name
Class: $raiders[_r].subclass.name $raiders[_r].class
Role: $raiders[_r].role
Traits: <<for _i = 0; _i < $raiders[_r].traits.length; _i++>>\
<<if $raiders[_r].traits[_i].type === "Special">>\
<span style="color:gold"><<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>></span><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<<else>>\
<<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<</if>>\
<</for>>
Kinks: <<if $raiders[_r].kinks.length === 0>>None<<else>>$raiders[_r].kinks<</if>>
Turn-Offs: <<if $raiders[_r].turnoffs.length === 0>>None<<else>>$raiders[_r].turnoffs<</if>>
Statuses: <<if $raiders[_r].statuses.length == 0>>\
None
<<else>>\
<<for _i = 0; _i < $raiders[_r].statuses.length; _i++>>\
<<hovertip "$raiders[_r].statuses[_i].tooltip">>$raiders[_r].statuses[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].statuses.length>>, <</if>><</for>><</if>>
</div>\
</div>\
<div @class="_linkboxID">\
<<if _spell_percent_list[_r] <= 39>>\
<<set _color to "bad">>\
<<elseif _spell_percent_list[_r] <= 69>>\
<<set _color to "neutral">>\
<<else>>\
<<set _color to "good">>\
<</if>>\
Hypnosis Effect Chance: <span @class="_color">_spell_percent_list[_r]%</span> \
<<if $raiders[_r].cur_hp === 1 && $raiders[_r].cur_lust === $raiders[_r].max_lust - 1 && _spell_percent_list[_r] === 0>>\
<div class="offbutton">\
<<hovertip "Will have no effect">><<button "Target Raider">><</button>><</hovertip>>
</div>\
<<else>>\
<<capture _r, _hotKey>>\
<span @id="_hotKey"><<button "Target Raider ^^_hotKey^^" $pc_spellbook[$spell_index].passage>><<unset $spell_targeting>><<set $target to _r>><<set $spell_percent to _spell_percent_list[_r]>><</button>></span>
<</capture>>\
<</if>>\
</div>\
</div>\
<</for>>\
<<else>>\
<<silently>>\
* Setup Spell Variable *
OVERLOAD SPELL
<<if $overloadSpellBool === true>>
<<set $pc_spellbook[$spell_index].cur_dmg += (Math.round($pc_spellbook[$spell_index].cur_dmg * setup.blessing_02_12.float)).clamp(1, 1000000)>>
<<set $pc_spellbook[$spell_index].cur_sex += (Math.round($pc_spellbook[$spell_index].cur_sex * setup.blessing_02_12.float)).clamp(1, 1000000)>>
<</if>>
* Setup Raiders *
<<RaiderSetup $raiders>>
CASTING SPELL WIDGET
<<CastingSpell $pc_spellbook[$spell_index] $mana_cost>>
CREATE NEW SPELL VARIABLE
<<set _spellStats to setup.newSpell>>
UPDATE VARIABLE
<<set _spellStats.name to $pc_spellbook[$spell_index].name>>
<<set _spellStats.cast to $pc_spellbook[$spell_index].cast>>
<<set _spellStats.attack_type to "Magical">>
<<set _spellStats.mana to $mana_cost>>
<<set _spellStats.percent to $spell_percent>>
<<set _spellStats.dmg to $pc_spellbook[$spell_index].cur_dmg>>
<<set _spellStats.sex to $pc_spellbook[$spell_index].cur_sex>>
<<set _spellStats.pic to $pc_spellbook[$spell_index].img>>
* Hypnosis Raider *
MAGICAL DAMAGE
<<NormalAttack $raiders[$target] _spellStats _spellStats.dmg>>
SEXUAL DAMAGE
<<SexualAttack $raiders[$target] _spellStats _spellStats.sex>>
BRAINWASHED STATUS
<<if _spellStats.percent > 0>>
<<SimSpellcheck $raiders[$target] _spellStats.percent "Player">>
<<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[$target].index) || _text_triggers.check.spellcheck_failed.includes($raiders[$target].index)>>
<<AddStatus $raiders[$target] setup.brainwashed true>>
<</if>>
<</if>>
POST COMBAT
<<PostCombat $raiders[$target] _spellStats>>
SET PIC ARRAY
<<set _picArray to clone($pc_spellbook[$spell_index].raider_pics)>>
<<set _pic to _picArray[$raiders[$target].body_type].pluck()>>
UPDATE REPORT
<<if _text_triggers.status.brainwashed.includes($raiders[$target].index)>>
<<set _entry to "She took @@.mag;"+$raiders[$target].dmg_taken+"@@ and @@.sex;"+$raiders[$target].sex_taken+"@@ damage and became Brainwashed from your Hypnosis Spell.">>
<<else>>
<<set _entry to "She took @@.mag;"+$raiders[$target].dmg_taken+"@@ and @@.sex;"+$raiders[$target].sex_taken+"@@ damage from your Hypnosis Spell.">>
<</if>>
<<set _lastLog to $raiders[$target].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[$target].report.log.push(_lastLog)>>
* DISPLAY INFO *
<<set _raiderTargetArray to []>>
<<set _raiderTargetArray.push($raiders[$target])>>
<<set _cardholderID to "cardholder-raid-"+_raiderTargetArray.length+"raiders">>
<<set _cardinfoID to "cardinfo-raid-"+_raiderTargetArray.length+"raiders">>
<<set _picboxID to "picbox-raid-"+_raiderTargetArray.length+"raiders">>
<<set _textboxID to "textbox-raid-"+_raiderTargetArray.length+"raiders">>
<</silently>>\
<div class="section">\
<<NextSpellButton>>\
<div class="cardholder-raid-playerside">\
<div class="cardinfo-raid-spell">\
<div class="roomtitle-raid-player">\
$pc_name Attacks
</div>\
<div class="picbox-raid-player">\
_spellStats.pic
</div>\
<div class="namebox-raid-player">\
<span style="font-size: 125%;"><strong>_spellStats.name</strong></span>
---- Spellcheck: $pc_spellbook[$spell_index].cur_check ----
</div>\
<div class="textbox-raid-player">\
<ul>\
<<SpellRoomText _spellStats>>
</ul>\
</div>\
</div>\
</div>\
<div class="cardholder-raid-raiderside">\
<<for _r = 0; _r < _raiderTargetArray.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_textboxID">\
<ul>\
<li>Her mind went blank and gave into your spell's suggestive messages, taking @@.mag;_raiderTargetArray[_r].dmg_taken Magical@@ damage and @@.sex;_raiderTargetArray[_r].sex_taken Sexual@@ damage.</li>\
<<RaiderFetishText _raiderTargetArray[_r] _spellStats>>
<<PostCombatText _raiderTargetArray[_r] _spellStats>>
</ul>\
</div>\
<div @class="_picboxID">\
_pic
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\
<</if>>\<<if $spell_targeting === true>>\
<<silently>>\
*Variables*
<<set _spell_percent_list to []>> Holds all the spell percent for each raider
* Overload Spellcheck *
<<if $overloadSpellBool === true>>
<<set $pc_spellbook[$spell_index].cur_check += (Math.round($pc_spellbook[$spell_index].cur_check * setup.blessing_02_12.float)).clamp(1, 1000000)>>
<</if>>
* Setup Raiders *
<<RaiderSetup $raiders>>
*Calc Percent for each Raider*
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].fetishes.length === 0>>
<<set _percent to 0>>
<<set _spell_percent_list.push(_percent)>>
<<else>>
<<if $raiders[_i].status_names.includes("Perverted")>>
PERVERTED BONUS
<<set _newCheck to Math.trunc($pc_spellbook[$spell_index].mult * $pc_spellbook[$spell_index].cur_check)>>
<<else>>
NORMAL CHECK
<<set _newCheck to clone($pc_spellbook[$spell_index].cur_check)>>
<</if>>
CALC CHANCE
<<CalcSpellcheck $raiders[_i] _newCheck "Player">>
SET RAIDERS SPELL PERCENT
<<set _spell_percent_list.push(_spellcheck)>>
<</if>>
<</for>>
* Display Info *
<<set _cardholderID to "cardholder-"+$raiders.length+"girls">>
<<set _cardinfoID to "cardinfo-"+$raiders.length+"girls">>
<<set _picboxID to "picbox-"+$raiders.length+"girls">>
<<set _textboxID to "textbox-"+$raiders.length+"girls">>
<<set _linkboxID to "linkbox-targeting-"+$raiders.length+"girls">>
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<span id="back"><<button [[Back|View Spells]]>><<unset $mana_cost, $spell_index>><</button>></span>
</div>\
<div class="titlebox">\
Choose a Target
</div>\
<<for _r = 0; _r < $raiders.length; _r++>>\
<<set _hotKey to _r + 1>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
<div @class="_textboxID">\
Name: $raiders[_r].name
Class: $raiders[_r].subclass.name $raiders[_r].class
Role: $raiders[_r].role
Traits: <<for _i = 0; _i < $raiders[_r].traits.length; _i++>>\
<<if $raiders[_r].traits[_i].type === "Special">>\
<span style="color:gold"><<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>></span><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<<else>>\
<<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<</if>>\
<</for>>
Kinks: <<if $raiders[_r].kinks.length === 0>>None<<else>>$raiders[_r].kinks<</if>>
Turn-Offs: <<if $raiders[_r].turnoffs.length === 0>>None<<else>>$raiders[_r].turnoffs<</if>>
Statuses: <<if $raiders[_r].statuses.length == 0>>\
None
<<else>>\
<<for _i = 0; _i < $raiders[_r].statuses.length; _i++>>\
<<hovertip "$raiders[_r].statuses[_i].tooltip">>$raiders[_r].statuses[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].statuses.length>>, <</if>><</for>><</if>>
</div>\
</div>\
<div @class="_linkboxID">\
<<if _spell_percent_list[_r] <= 39>>\
<<set _color to "bad">>\
<<elseif _spell_percent_list[_r] <= 69>>\
<<set _color to "neutral">>\
<<else>>\
<<set _color to "good">>\
<</if>>\
$pc_spellbook[$spell_index].name Success Rate: <span @class="_color">_spell_percent_list[_r]%</span> \
<<if _spell_percent_list[_r] === 0>>\
<div class="offbutton">\
<<hovertip "Has no Turnoffs">><<button "Target Raider">><</button>><</hovertip>>
</div>\
<<else>>\
<<capture _r, _hotKey>>\
<span @id="_hotKey"><<button "Target Raider ^^_hotKey^^" $pc_spellbook[$spell_index].passage>><<unset $spell_targeting>><<set $target to _r>><<set $spell_percent to _spell_percent_list[_r]>><</button>></span>
<</capture>>\
<</if>>\
</div>\
</div>\
<</for>>\
</div>\
<<else>>\
<<silently>>\
*Setup Raiders*
<<RaiderSetup $raiders>>
CASTING SPELL WIDGET
<<CastingSpell $pc_spellbook[$spell_index] $mana_cost>>
CALC CHANCE
<<SimSpellcheck $raiders[$target] $spell_percent "Player">>
<<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[$target].index) || _text_triggers.check.spellcheck_failed.includes($raiders[$target].index)>>
TRIGGER LOSING FETISH WHEN BUTTON IS PRESSED
<<set _suggestive_whispers_target to clone($target)>>
SET GIF
<<set _gif to $pc_spellbook[$spell_index].gif>>
UPDATE REPORT
<<set _entry to "She succumbed to your Suggestive Whispers Spell and lost one of her Turn-Offs.">>
<<set _lastLog to $raiders[$target].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[$target].report.log.push(_lastLog)>>
<<else>>
* Spell Failed *
UPDATE REPORT
<<set _entry to "She resisted your Suggestive Whispers Spell.">>
<<set _lastLog to $raiders[$target].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[$target].report.log.push(_lastLog)>>
SET GIF
<<set _gif to setup.spell_failed_gif_list.random()>>
<</if>>
* Create list of Turnoff options to remove *
<<set _option to $raiders[$target].turnoffs.random()>>
*Display*
<</silently>>\
<div class="section">\
<<NextSpellButton>>\
<div class="titlebox">\
Suggestive Whispers Spell
</div>\
<div class="imagebox">\
_gif
</div>\
<div class="textbox-center">\
<<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[$target].index) || _text_triggers.check.spellcheck_failed.includes($raiders[$target].index)>>\
<<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[$target].index)>><strong>Critical Failure!</strong> <</if>>She was easily persuaded to become more open to something.
<<elseif _text_triggers.check.spellcheck_crit_passed.includes($raiders[$target].index) || _text_triggers.check.spellcheck_passed.includes($raiders[$target].index)>>\
<<if _text_triggers.check.spellcheck_crit_passed.includes($raiders[$target].index)>><strong>Critical Success!</strong> <</if>>She was not affected.
<</if>>\
<<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[$target].index) || _text_triggers.check.spellcheck_failed.includes($raiders[$target].index)>>\
Add a new Kink <<listbox "_option" autoselect>><<optionsfrom $raiders[$target].fetishes>><</listbox>>
<</if>>\
<<if _text_triggers.blessing.resourceful_sorcerer === true && $modifiers.blessing.resourceful_sorcerer === 1>>\
<li>You recovered the spell's @@.mana;Mana Cost@@ after it failed.</li>\
<<elseif _text_triggers.blessing.resourceful_sorcerer === true && $modifiers.blessing.resourceful_sorcerer < 1>>\
<li>You recovered half of the spell's @@.mana;Mana Cost@@ after it failed.</li>\
<</if>>\
</div>\
</div>\
<</if>>\<<if $spell_targeting === true>>\
<<silently>>\
*Variables*
<<set _spell_percent_list to []>> Holds all the spell percent for each raider
* Overload Spellcheck *
<<if $overloadSpellBool === true>>
<<set $pc_spellbook[$spell_index].cur_check += (Math.round($pc_spellbook[$spell_index].cur_check * setup.blessing_02_12.float)).clamp(1, 1000000)>>
<</if>>
* Setup Raiders *
<<RaiderSetup $raiders>>
*Calc Percent for each Raider*
<<for _i = 0; _i < $raiders.length; _i++>>
CALC CHANCE
<<CalcSpellcheck $raiders[_i] $pc_spellbook[$spell_index].cur_check "Player">>
<<set _spell_percent_list.push(_spellcheck)>>
<</for>>
* Display Info *
<<set _cardholderID to "cardholder-"+$raiders.length+"girls">>
<<set _cardinfoID to "cardinfo-"+$raiders.length+"girls">>
<<set _picboxID to "picbox-"+$raiders.length+"girls">>
<<set _textboxID to "textbox-"+$raiders.length+"girls">>
<<set _linkboxID to "linkbox-targeting-"+$raiders.length+"girls">>
<</silently>>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|View Spells]]>><<unset $mana_cost, $spell_index>><</button>></span>
</div>\
<div class="titlebox">\
Choose a Target
</div>\
<<for _r = 0; _r < $raiders.length; _r++>>\
<<set _hotKey to _r + 1>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
<div @class="_textboxID">\
Name: $raiders[_r].name
Class: $raiders[_r].subclass.name $raiders[_r].class
Role: $raiders[_r].role
Traits: <<for _i = 0; _i < $raiders[_r].traits.length; _i++>>\
<<if $raiders[_r].traits[_i].type === "Special">>\
<span style="color:gold"><<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>></span><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<<else>>\
<<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<</if>>\
<</for>>
Kinks: <<if $raiders[_r].kinks.length === 0>>None<<else>>$raiders[_r].kinks<</if>>
Turn-Offs: <<if $raiders[_r].turnoffs.length === 0>>None<<else>>$raiders[_r].turnoffs<</if>>
Statuses: <<if $raiders[_r].statuses.length == 0>>\
None
<<else>>\
<<for _i = 0; _i < $raiders[_r].statuses.length; _i++>>\
<<hovertip "$raiders[_r].statuses[_i].tooltip">>$raiders[_r].statuses[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].statuses.length>>, <</if>><</for>><</if>>
</div>\
</div>\
<div @class="_linkboxID">\
<<if _spell_percent_list[_r] <= 39>>\
<<set _color to "bad">>\
<<elseif _spell_percent_list[_r] <= 69>>\
<<set _color to "neutral">>\
<<else>>\
<<set _color to "good">>\
<</if>>\
Succubus' Mist Effect Chance: <span @class="_color">_spell_percent_list[_r]%</span> \
<<capture _r, _hotKey>>\
<span @id="_hotKey"><<button "Cast Spell ^^_hotKey^^" $pc_spellbook[$spell_index].passage>><<unset $spell_targeting>><<set $spell_percent to _spell_percent_list>><</button>></span>
<</capture>>\
</div>\
</div>\
<</for>>\
<<else>>\
<<silently>>\
* Setup Spell Variable *
CASTING SPELL WIDGET
<<CastingSpell $pc_spellbook[$spell_index] $mana_cost>>
OVERLOAD SPELL
<<if $overloadSpellBool === true>>
<<set $pc_spellbook[$spell_index].cur_sex += (Math.round($pc_spellbook[$spell_index].cur_sex * setup.blessing_02_12.float)).clamp(1, 1000000)>>
<<set $pc_spellbook[$spell_index].cur_stack += (Math.trunc($pc_spellbook[$spell_index].cur_stack * setup.blessing_02_12.float)).clamp(1, 1000000)>>
<</if>>
* Setup Raiders *
<<RaiderSetup $raiders>>
CREATE NEW SPELL VARIABLE
<<set _spellStats to setup.newSpell>>
UPDATE VARIABLE
<<set _spellStats.name to $pc_spellbook[$spell_index].name>>
<<set _spellStats.cast to $pc_spellbook[$spell_index].cast>>
<<set _spellStats.attack_type to "Magical">>
<<set _spellStats.fetishes to $pc_spellbook[$spell_index].fetishes>>
<<set _spellStats.mana to $mana_cost>>
<<set _spellStats.percent to $spell_percent>>
<<set _spellStats.dmg to 0>>
<<set _spellStats.sex to $pc_spellbook[$spell_index].cur_sex>>
<<set _spellStats.aroused_stacks to $pc_spellbook[$spell_index].cur_stack>>
<<set _spellStats.pic to $pc_spellbook[$spell_index].img>>
<<for _i = 0; _i < $raiders.length; _i++>>
SEXUAL DAMAGE
<<SexualAttack $raiders[_i] _spellStats _spellStats.sex>>
<<SimSpellcheck $raiders[_i] _spellStats.percent[_i] "Player">>
<<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[_i].index) || _text_triggers.check.spellcheck_failed.includes($raiders[_i].index)>>
<<set _aroused_stacks to _spellStats.aroused_stacks * 2>>
<<else>>
<<set _aroused_stacks to clone(_spellStats.aroused_stacks)>>
<</if>>
ADD AROUSAL
<<AddStacks $raiders[_i] setup.aroused _aroused_stacks true>>
SET PICS
<<set _picArray to clone($pc_spellbook[$spell_index].raider_pics)>>
**PICS CALLED LATER**
UPDATE REPORT
<<if _text_triggers.status.aroused.includes($raiders[_i].index)>>
FIND AROUSED GAINED FOR REPORT
<<if $raiders[_i].status_names.includes("Aroused")>>
<<for _s = 0; _s < $raiders[_i].statuses.length; _s++>>
<<if $raiders[_i].statuses[_s].id === setup.aroused.id>>
<<set _aroused_gained to $raiders[_i].statuses[_s].gain>>
<<break>>
<</if>>
<</for>>
<</if>>
<<set _entry to "She took @@.sex;"+$raiders[_i].sex_taken+"@@ damage and gained "+_aroused_gained+" Aroused from your Succubus' Mist Spell.">>
<<else>>
<<set _entry to "She took @@.sex;"+$raiders[_i].sex_taken+"@@ damage from your Succubus' Mist Spell.">>
<</if>>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<</for>>
POST COMBAT
<<for _r = 0; _r < $raiders.length; _r++>>
<<PostCombat $raiders[_r] _spellStats>>
<</for>>
* DISPLAY INFO *
<<set _raiderTargetArray to clone($raiders)>>
<<set _cardholderID to "cardholder-raid-"+_raiderTargetArray.length+"raiders">>
<<set _cardinfoID to "cardinfo-raid-"+_raiderTargetArray.length+"raiders">>
<<set _picboxID to "picbox-raid-"+_raiderTargetArray.length+"raiders">>
<<set _textboxID to "textbox-raid-"+_raiderTargetArray.length+"raiders">>
<</silently>>\
<div class="section">\
<<NextSpellButton>>\
<div class="cardholder-raid-playerside">\
<div class="cardinfo-raid-spell">\
<div class="roomtitle-raid-player">\
$pc_name Attacks
</div>\
<div class="picbox-raid-player">\
_spellStats.pic
</div>\
<div class="namebox-raid-player">\
<span style="font-size: 125%;"><strong>_spellStats.name</strong></span>
---- Spellcheck: $pc_spellbook[$spell_index].cur_check ----
</div>\
<div class="textbox-raid-player">\
<ul>\
<<set _num to _text_triggers.check.spellcheck_crit_failed.length + _text_triggers.check.spellcheck_failed.length>>\
<<if _num > 1>>\
<li>_num Raiders were greatly affected by the mist.</li>\
<<elseif _num === 1>>\
<li>_num Raider was greatly affected by the mist.</li>\
<<else>>\
<li>No Raiders were greatly affected by the mist.</li>\
<</if>>\
<<SpellRoomText _spellStats>>
</ul>\
</div>\
</div>\
</div>\
<div class="cardholder-raid-raiderside">\
<<for _r = 0; _r < _raiderTargetArray.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_textboxID">\
<ul>\
<li>A burst of pink mist formed all around her, taking @@.sex;_raiderTargetArray[_r].sex_taken Sexual@@ damage.</li>\
<<RaiderFetishText _raiderTargetArray[_r] _spellStats>>
<<PostCombatText _raiderTargetArray[_r] _spellStats>>
<<if _text_triggers.check.spellcheck_crit_failed.includes(_raiderTargetArray[_r].index) || _text_triggers.check.spellcheck_failed.includes(_raiderTargetArray[_r].index)>>\
<<if _text_triggers.check.spellcheck_crit_failed.includes(_raiderTargetArray[_r].index)>>\
<li><strong>Critical Failure</strong>! She was unaware of the pink mist that was swirling around her, increasing her arousal.</li>\
<<else>>\
<li>She was unable to resist the influence of the mist, increasing her arousal.</li>\
<</if>>\
<<else>>\
<<if _text_triggers.check.spellcheck_crit_passed.includes(_raiderTargetArray[_r].index)>>\
<li><strong>Critical Success</strong>! She rolled away and stayed low until the mist dissipated.</li>\
<<else>>
<li>She was able to focus her mind and resist the influence of the mist.</li>\
<</if>>\
<</if>>\
</ul>\
</div>\
<<if _text_triggers.check.spellcheck_crit_failed.includes(_raiderTargetArray[_r].index) || _text_triggers.check.spellcheck_failed.includes(_raiderTargetArray[_r].index)>>\
<<set _path to "perv_" + _raiderTargetArray[_r].body_type>>\
<<set _pic to _picArray[_path].pluck()>>\
<<else>>\
<<set _pic to _picArray[_raiderTargetArray[_r].body_type].pluck()>>\
<</if>>\
<div @class="_picboxID">\
_pic
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\
<</if>>\<<if $missionLog.patricia.num === 0>>\
<<silently>>\
* Variables *
<<set $missionName to setup.patriciaMisLine[$missionLog.patricia.num].name>>
* Display *
<</silently>>\
<<switch $reward_page>>\
<<case 1>>\
<div class="section">\
<div class="titlebox">\
$missionName
</div>\
<div class="picbox-intro">\
[img[images/town/patricia/body_1.jpg]]
</div>\
<div class="textbox-intro">\
You enter the Arcane Emporium to find it empty as usual. Patricia is not behind the counter, perhaps she is hiding so she can read her fantasy books. You begin looking around for her until you find her putting some books away.
<span class="npc-dialogue">Hi $pc_name. Emmm, find anything about that spell?</span>
<span class="pc-dialogue">I actually came to see you about that. I think the spell you gave me summoned a succubus using an adventurer's lust.</span>
Patricia looked up at you, paler than usual. She quickly looked around, scanning for customers.
<span class="npc-dialogue">Did you see what she looked it?</span>
<span class="pc-dialogue">Small, with short purple hair, green eyes, and her tits were about...</span>
Before I gave a full description of her cup size, she jumped up and grabbed me by my arm, pulling me into the storage room.
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[Next|Patricia Reward]]>><<set $reward_page++>><</button>></span>
</div>\
</div>\
<<case 2>>\
<div class="section">\
<div class="titlebox">\
$missionName
</div>\
<div class="picbox-intro">\
[img[images/town/patricia/body_2.jpg]]
</div>\
<div class="textbox-intro">\
Once we were inside the storage room, she closed the door and sat down. Paler than before, she scrambled through her notebook, looking for something. After a short while, she leaned back in her chair and looked at you.
<span class="npc-dialogue">Are you sure?</span>
<span class="pc-dialogue">About what?</span>
<span class="npc-dialogue">That your description of her is correct?</span>
<span class="pc-dialogue">Well, yeah. She was definitely a C cup, but they were nice and full-looking.</span>
<span class="npc-dialogue">How can you think about her boobs during a time like this!?</span>
<span class="pc-dialogue">I'm always thinking about tits.</span>
She looked at me with sheer disappointment as she turned her notebook towards me, showing me a picture.
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Patricia Reward]]>><<set $reward_page-->><</button>></span> <span id="forward"><<button [[Next|Patricia Reward]]>><<set $reward_page++>><</button>></span>
</div>\
</div>\
<<case 3>>\
<div class="section">\
<div class="titlebox">\
$missionName
</div>\
<div class="picbox-intro">\
[img[images/succubus/body_2.jpg]]
</div>\
<div class="textbox-intro">\
<span class="npc-dialogue">You saw her?</span>
<span class="pc-dialogue">Yup, that's her!</span>
<span class="npc-dialogue">Positive?</span>
<span class="pc-dialogue">No doubt.</span>
<span class="npc-dialogue">Can you be less confident about this?</span>
<span class="pc-dialogue">Nope, who is she?</span>
<span class="npc-dialogue">Nobody knows her name or her goals, but she is a very powerful succubus. She would go from dungeon to dungeon, with the sole intention of killing the Dungeon Lord in charge of the dungeon. She nearly collapsed our entire ecosystem single-handedly. She was said to have disappeared hundreds of years ago though, but the damage caused can still be felt today, that's why there are so few Dungeon Lords, and many fear she is still out there.</span>
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Patricia Reward]]>><<set $reward_page-->><</button>></span> <span id="forward"><<button [[Next|Patricia Reward]]>><<set $reward_page++>><</button>></span>
</div>\
</div>\
<<case 4>>\
<div class="section">\
<div class="titlebox">\
$missionName
</div>\
<div class="picbox-intro">\
[img[images/town/patricia/body_3.jpg]]
</div>\
<div class="textbox-intro">\
You slowly sit down in the chair in front of you as you realize you just released a succubus that kills Dungeon Lords, an occupation you just became.
<span class="pc-dialogue">This shit sucks.</span>
<span class="npc-dialogue">Yes, this is very bad indeed. I need to figure out how she was captured before. If we let her remain free, she will surely collapse the ecosystem by taking out the few remaining Dungeon Lords.</span>
<span class="pc-dialogue">Patricia, I'm a Dungeon Lord.</span>
<span class="npc-dialogue">Yes, and you seem well fit for it since all you think about are boobs.</span>
She quickly caught herself as she realized what you were saying.
<span class="npc-dialogue">Ummm, well I'm sure she will be much weaker than before since she has been trapped for hundreds of years. I'll start researching for a way to stop her. I'm sure everything will be fine and you won't die by having your life energy drained by her.</span>
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Patricia Reward]]>><<set $reward_page-->><</button>></span> <span id="forward"><<button [[Next|Patricia Reward]]>><<set $reward_page++>><</button>></span>
</div>\
</div>\
<<case 5>>\
<div class="section">\
<div class="titlebox">\
$missionName
</div>\
<div class="picbox-intro">\
[img[images/town/patricia/body_6.jpg]]
</div>\
<div class="textbox-intro">\
This shit sucks. I should have never agreed to become a Dungeon Lord. Now, in addition to Ahri, who is threatening enough, I have awakened an ancient succubus who has a thing for Dungeon Lords.
<span class="npc-dialogue">Ummm, I things aren't great for you right now $pc_name, but do you think I could get that spell back? I need to do some research on it.</span>
You pull out the spellbook she gave you and slide it across the table to her without looking up.
<span class="npc-dialogue">Thanks. Uh, I was planning to give you this for researching the spell for me. It's a spell called Succubus' Mist. I don't think it will stop her if she shows up. Actually, I recommend running if she comes back.</span>
She tried her best to be positive, but there was nothing that could be said to make you feel any better. You thanked her for the new spell before getting up to leave.
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Patricia Reward]]>><<set $reward_page-->><</button>></span> <span id="forward"><<button [[Next|Patricia Reward]]>><<set $reward_page++>><</button>></span>
</div>\
</div>\
<<case 6>>\
<div class="section">\
<div class="titlebox">\
$missionName
</div>\
<div class="picbox-intro">\
[img[images/town/patricia/body_0.jpg]]
</div>\
<div class="textbox-intro">\
<span class="npc-dialogue">Wait! Ummm...</span>
She sheepishly pulled at her top until her breasts were nearly exposed.
<span class="npc-dialogue">Since you might be dead tomorrow, I figured you'd want to see some boobs on your last night.</span>
<span class="pc-dialogue">So you actually think I don't stand a chance against her huh?</span>
<span class="npc-dialogue">Well, err, I didn't mean that.</span>
<span class="pc-dialogue">And you don't think I will see some boobs tonight when I get raided?</span>
She blushed and let go of her top, letting it fall back into place. She clearly felt embarrassed by not realizing that sooner.
<span class="pc-dialogue">Your boobs were the best ones I've seen so far, thanks.</span>
Her face became even brighter as your words caught her off guard. She quickly said her goodbyes before stumbling away. You take your leave as well.
<div class="text-center-bold"><strong>You gained <span class="le"><<- setup.patriciaMisLine[$missionLog.patricia.num].lust_reward>> Lust Essence</span> and learned a new spell: <<- setup.succubus_mist_spell.name>></strong></div>
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Patricia Reward]]>><<set $reward_page-->><</button>></span> <span id="forward"><<button [[Next|Town Menu]]>><<set $pc_lust += setup.patriciaMisLine[$missionLog.patricia.num].lust_reward>><<set $pc_spellbook.push(clone(setup.succubus_mist_spell))>><<set $missionLog.patricia.num++>><<set $missionLog.patricia.unlocked to false>><<set $missionLog.patricia.started to false>><<set $missionLog.patricia.completed to false>><<set $missionLog.patricia.int to 0>><<unset $reward_page, $missionName>><</button>></span>
</div>\
</div>\
<</switch>>\
<<elseif $missionLog.patricia.num === 1>>\
<</if>>\<<silently>>\
* Variables *
* Set Picture *
<<set _pic to "[img[images/mistress/onsen_0.jpg]]">>
* Lust Reward *
<<set $pc_lust++>>
* Reduce Energy *
<<set $pc_cur_energy-->>
* Remove Ahri From Onsen *
<<set $onsen.goddess_bool to false>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Joining Ahri
</div>\
<div class="imagebox">\
_pic
</div>\
<div class="textbox">\
You joined Ahri in the Onsen, making her dirty again.
<strong>You gained <span class="le">1 Lust Essence</span></strong>
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[Finish|Onsen]]>><</button>></span>
</div>\
</div>\
<<if $sex_type === "">>\
<<silently>>\
* Set Sex List *
<<set _list to $slave_room_list[$slave_pos].slave_pack.service_positions.concat($slave_room_list[$slave_pos].slave_pack.sex_positions)>>
ALPHABETIZE
<<set _list.sort(function (a, b) {
var
nameA = a.toUpperCase(),
nameB = b.toUpperCase();
if (nameA < nameB) {
return -1;
}
else if (nameA > nameB) {
return 1;
}
return 0;
});>>
<<if $slave_room_list[$slave_pos].last_sex_type != "">>
<<set $sex_type to $slave_room_list[$slave_pos].last_sex_type>>
<<else>>
<<set $sex_type to $last_sex_type>>
<</if>>
* Display *
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Onsen]]>><<unset $sex_type>><</button>></span>
</div>\
<div class="titlebox">\
Joining $slave_room_list[$slave_pos].name
</div>\
<div class="listbox-sexlist">\
<<listbox "$sex_type" autoselect>>\
<<optionsfrom _list>>
<</listbox>>\
<span id="forward"><<button [[Confirm|Slave Onsen]]>><<set $sex_type to $sex_type.toLowerCase()>><</button>></span>
</div>\
<div class="picbox-sexlist">\
$slave_room_list[$slave_pos].body_pic
</div>\
</div>\
<<else>>\
<<silently>>\
* Variables *
<<set _base_min_exp to 18>>
<<set _base_max_exp to 22>> range of base starting EXP
<<set _level_mod to 0.2>> Increase EXP gained by mult this amount per player level
<<set _exp_bonus to 0.25>> Increases EXP gained by this amount if slave accepts player
<<set _base_min_stress to 32>>
<<set _base_max_stress to 36>> range of stress that is gained if slave rejects player
<<set _base_love to 4>> amount of love exp gained
<<set _base_obedience to 1>> amount of obedience exp gained
<<set _base_skill to 2>> amount of sex skill exp gained
<<set _slave_exp_bonus to 2>> mult exp by this amount if slave accepts player
<<set _love_trigger to false>>
<<set _obedience_trigger to false>>
<<set _libido_trigger to false>> checks for stat increases for slave
<<set _sexskill_trigger to false>> checks if any sex skills increased and holds them in a list
<<set _sexskill_trigger_list to []>>
<<set _disobedient_bool to false>> set to true if slave becomes disobedient
* Base EXP *
<<set _base_exp to random(_base_min_exp, _base_max_exp)>>
<<set _base_exp += Math.trunc(_base_exp * ($pc_level * _level_mod))>>
* Slave Setup *
<<SlaveSetup $slave_room_list[$slave_pos]>>
* Choose Picture *
<<set _pic to $slave_room_list[$slave_pos].slave_pack[$sex_type.toLowerCase()].random()>>
* Player Stats *
<<set $pc_sex_stats[$sex_type.toLowerCase()]++>>
<<set $pc_sex_stats.total++>>
<<set $pc_cur_energy-->>
* Remove Her from the Onsen *
<<set _remove to $onsen.users.delete($slave_room_list[$slave_pos].index)>>
* Outcome *
LOVE MOD
<<if $slave_room_list[$slave_pos].love <= 5>>
<<set _percent to 20>>
<<elseif $slave_room_list[$slave_pos].love <= 10>>
<<set _percent to 40>>
<<elseif $slave_room_list[$slave_pos].love <= 15>>
<<set _percent to 60>>
<<elseif $slave_room_list[$slave_pos].love <= 20>>
<<set _percent to 80>>
<<else>>
<<set _percent to 100>>
<</if>>
OBEDIENCE MOD
<<if $slave_room_list[$slave_pos].obedience <= 5>>
<<set _percent += 0>>
<<elseif $slave_room_list[$slave_pos].obedience <= 10>>
<<set _percent += 10>>
<<elseif $slave_room_list[$slave_pos].obedience <= 15>>
<<set _percent += 20>>
<<elseif $slave_room_list[$slave_pos].obedience <= 20>>
<<set _percent += 30>>
<<else>>
<<set _percent += 40>>
<</if>>
SCOLDED SETS TO 0, DAY OFF INCREASES BY 25
<<if $slave_room_list[$slave_pos].scolded_bool === true>>
<<set _percent to 0>>
<<elseif $slave_room_list[$slave_pos].dayoff_bool === true>>
<<set _percent += 25>>
<</if>>
<<set _rng to random(1, 100)>>
<<if _percent >= _rng>>
<<set _accepted_bool to true>>
<<else>>
<<set _accepted_bool to false>>
<</if>>
* EXP Gains *
<<if _accepted_bool === true>>
<<set _base_exp += Math.round(_base_exp * _exp_bonus)>>
<<set _base_love *= _slave_exp_bonus>>
<<set _base_obedience *= _slave_exp_bonus>>
<<set _base_skill *= _slave_exp_bonus>>
<</if>>
<<PCLevelUp _base_exp>>
* Love Stat Gained *
<<SlaveLoveGrowth $slave_room_list[$slave_pos] _base_love>>
* Obedience Stat Gained *
<<SlaveObedienceGrowth $slave_room_list[$slave_pos] _base_obedience>>
* Sex Stat Gained *
<<SexSkillGrowth $slave_room_list[$slave_pos] _base_skill $sex_type>>
* Virginity Check *
<<SlaveVirginCheck $slave_room_list[$slave_pos] $sex_type "Onsen">>
* Stress Gained *
<<if _accepted_bool === false>>
SET BASE AMOUNT
<<set _base_stress to random(_base_min_stress, _base_max_stress)>>
<<SlaveStressCalc $slave_room_list[$slave_pos] _base_stress "Gained">>
<<else>>
<<set _base_stress to 0>>
<</if>>
*Display Info*
<</silently>>\
<div class="section">\
<div class="titlebox">\
Joining $slave_room_list[$slave_pos].name
</div>\
<div class="imagebox">\
_pic
</div>\
<div class="textbox">\
<<if _accepted_bool === true>>\
$slave_room_list[$slave_pos].name was happy you joined her. After having fun and relaxing, you earned _base_exp EXP.
<<else>>\
$slave_room_list[$slave_pos].name did not want you to join her. After forcing yourself on her, you earned _base_exp EXP. She did not find her time in the Onsen enjoyable.
<</if>>\
<<SlaveText $slave_room_list[$slave_pos]>>
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[Finish|Onsen]]>><<unset $slave_pos, $sex_type>><</button>></span>
</div>\
</div>\
<</if>>\<<if $visit_creature === "">>\
<<silently>>\
* Variables *
<<set _floor_names to ["Floor One", "Floor Two", "Floor Three", "Floor Four", "Floor Five", "Floor Six", "Floor Seven", "Floor Eight", "Floor Nine", "Floor Ten", "Floor Eleven", "Floor Twelve"]>> Display name for each room
* Display *
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Creature Keeper]]>><<unset $visit_creature>><</button>></span>
</div>\
<div class="titlebox">\
Visit a Creature
</div>\
<div class="keeper-manager">\
<<for _i = 0; _i < $keeper_list.length; _i++>>\
<<set _hotKey to _i + 1>>\
<div class="keeper-cellholder">\
<div class="keeper-cell-textbox">\
<strong><<- _floor_names[_i]>></strong>
<<if $keeper_list[_i].room_type === "Creature">>\
<<capture _i, _hotKey>>\
<span @id="_hotKey"><<button "Visit ^^_hotKey^^" "Visit Creature">><<set $visit_creature to $keeper_list[_i]>><<set $visit_room to _i>><</button>></span>
<</capture>>\
<<elseif $keeper_list[_i].room_type === "Empty">>\
<div class="offbutton">\
<<button "Visit">><</button>>
</div>\
<</if>>\
</div>\
<div class="keeper-cell-picbox">\
$keeper_list[_i].pic
</div>\
</div>\
<</for>>\
</div>\
</div>\
<<else>>\
<<silently>>\
* Variables *
<<set _floor_names to ["Floor One", "Floor Two", "Floor Three", "Floor Four", "Floor Five", "Floor Six", "Floor Seven", "Floor Eight", "Floor Nine", "Floor Ten", "Floor Eleven", "Floor Twelve"]>> Display name for each room
* Stats *
<<CreatureStats $visit_creature>>
* Description *
<<CreatureDescription $visit_creature>>
* Dialogue *
* Display *
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Visit Creature]]>><<set $visit_creature to "">><<unset $visit_room>><</button>></span>
</div>\
<div class="cardholder-picside">\
<div class="picbox-inforoom-green">\
<div class="titlebox-abovepic">\
<<- _floor_names[$visit_room]>>
</div>\
<div class="textboxlarge-abovepic">\
<strong>$visit_creature.name</strong>
</div>\
<div class="textbox-abovepic">\
<<hovertip "$visit_creature.exp / $visit_creature.next_level_exp">>Lvl. $visit_creature.level<</hovertip>>
</div>\
<div class="textbox-abovepic">\
Upkeep: <span style="color:gold">$visit_creature.upkeep Gold</span>
</div>\
<div class="picbox-inforoom">\
$visit_creature.pic
</div>\
<div class="statusbox-belowpic">\
</div>\
</div>\
</div>\
<div class="cardholder-infoside">\
<div class="textbox-inforoom-green">\
<div class="description-stats">\
$visit_creature.description
</div>\
<div class="table-stats">\
<div class="cell-stats">\
<u>Creature Type</u>
$visit_creature.creature_types
</div>\
<div class="cell-stats">\
<<set _num to $visit_creature.cur_max_hp - Math.trunc($visit_creature.max_hp)>>\
<span class="health"><u>Health</u>
$visit_creature.cur_hp / $visit_creature.cur_max_hp</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
</div>\
<div class="cell-stats">\
<<set _num to $visit_creature.cur_atk - Math.trunc($visit_creature.atk)>>\
<<if $visit_creature.attack_type === "Physical">>\
<span class="physical"><u>Physical Attack</u>
$visit_creature.cur_atk</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
<<elseif $visit_creature.attack_type === "Magical">>\
<span class="magical"><u>Magical Attack</u>
$visit_creature.cur_atk</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
<<elseif $visit_creature.attack_type === "True">>\
<u>True Damage</u>
$visit_creature.cur_atk <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
<</if>>\
</div>\
<div class="cell-stats">\
<<set _num to $visit_creature.cur_sex - Math.trunc($visit_creature.sex)>>\
<span class="lust"><u>Sexual Attack</u>
$visit_creature.cur_sex</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
</div>\
<div class="cell-stats">\
<<set _num to $visit_creature.cur_pres - Math.trunc($visit_creature.pres)>>\
<span class="pres"><u>Physical Resistance</u>
$visit_creature.cur_pres</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
</div>\
<div class="cell-stats">\
<<set _num to $visit_creature.cur_mres - Math.trunc($visit_creature.mres)>>\
<span class="mres"><u>Magical Resistance</u>
$visit_creature.cur_mres</span> <<if _num < 0>>@@.bad;-_num@@<<elseif _num > 0>>@@.good;+_num@@<</if>>
</div>\
<div class="longcell-stats">\
<u><strong>Fetishes</strong></u>
<<if $visit_creature.fetishes.length === 0>>\
None
<<else>>\
$visit_creature.fetishes
<</if>>\
</div>\
<div class="shortcell-stats">\
<u>Raiders Encountered</u>
$visit_creature.total_raiders
</div>\
<div class="shortcell-stats">\
<u>Raiders Captured</u>
$visit_creature.total_captures
</div>\
<div class="shortcell-stats">\
<u>Times Defeated</u>
$visit_creature.total_deaths
</div>\
<div class="shortcell-stats">\
<u>Damage Dealt</u>
$visit_creature.total_dmgdealt
</div>\
<div class="shortcell-stats">\
<u>Lust Increased</u>
$visit_creature.total_sexdealt
</div>\
<div class="shortcell-stats">\
<u>Damage Taken</u>
$visit_creature.total_dmgtaken
</div>\
</div>\
</div>\
<div class="linkbox-inforoom">\
<div class="linkbox-text">\
SOME DIALOGUE ABOUT THE CREATURE _dialogue
<<if $visit_creature.keeper_days === 0>>\
SOMETHING CUTE
<<else>>\
Your $visit_creature.name has been here for $visit_creature.keeper_days <<if $visit_creature.keeper_days === 1>>day<<else>>days<</if>>. They've gained $visit_creature.keeper_exp EXP and gained $visit_creature.keeper_level <<if $visit_creature.keeper_level === 1>>Level<<else>>Levels<</if>>.
<</if>>\
</div>\
</div>\
</div>\
</div>\
<</if>>\<<if $missionLog.mallory.num === 0>>\
<<silently>>\
* Variables *
<<set $missionName to setup.malloryMisLine[$missionLog.mallory.num].name>>
* Display *
<</silently>>\
<<switch $reward_page>>\
<<case 1>>\
<div class="section">\
<div class="titlebox">\
$missionName
</div>\
<div class="picbox-intro">\
[img[images/town/mallory/body_1.jpg]]
</div>\
<div class="textbox-intro">\
As you enter the guild, you hear someone calling out to you.
<span class="npc-dialogue">$pc_name! Come join me on my break and tell me the good news.</span>
You go over and sit across the table from her. She seemed to be enjoying some beer on her break. You wonder to yourself if that is a normal thing to do while working here, but no matter. She seems happy to see you and has obviously heard something in regard to her request.
<span class="pc-dialogue">Your new bloods weren't anything special. They quickly gave up and were punished just like you asked. Now, let's talk about that reward you mentioned.</span>
<span class="npc-dialogue">Not so fast! I want to hear all about how you punished them. The girls were too ashamed to tell me how they were caught. I've been dying to know, so you need to tell me before you get anything.</span>
<span class="pc-dialogue">Are you sure you want to know?</span>
<span class="npc-dialogue">Yes! Now, hurry and tell me before my break ends.</span>
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[Next|Mallory Reward]]>><<set $reward_page++>><</button>></span>
</div>\
</div>\
<<case 2>>\
<div class="section">\
<div class="titlebox">\
$missionName
</div>\
<div class="picbox-intro">\
[img[images/town/mallory/body_3.jpg]]
</div>\
<div class="textbox-intro">\
You lean forward and explain nonchalantly how the adventurers struggled against your creatures and traps. The sounds they made as they were being violated, and how they gave into their desires and, basically, threw themselves at your feet, pussies dripping wet. As you explained how you fucked each and every one of them, Mallory's jaw hung open in shock. After you finally finished giving her all the details about how things went, she stood up with a blank look on her face.
<span class="npc-dialogue">I knew what goes on during the raids, but nobody ever told me about it in such great detail before.</span>
<span class="pc-dialogue">Well, isn't that what you asked for?</span>
<span class="npc-dialogue">I suppose I did, but how can I go back to work with all those vivid images in my head?</span>
<span class="pc-dialogue">I could help, but it will cost you.</span>
<span class="npc-dialogue">You know something that would help me?!</span>
<span class="pc-dialogue">Uhhh, yeah. Are you sure you want me to help after causing the problem?</span>
<span class="npc-dialogue">You should take responsibility for making me feel this way and fix it right away!</span>
<span class="pc-dialogue">Alright, but we should go somewhere more secluded.</span>
<span class="npc-dialogue">Okay, okay, just hurry so I can go back to work.</span>
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Mallory Reward]]>><<set $reward_page-->><</button>></span> <span id="forward"><<button [[Next|Mallory Reward]]>><<set $reward_page++>><</button>></span>
</div>\
</div>\
<<case 3>>\
<div class="section">\
<div class="titlebox">\
$missionName
</div>\
<div class="imagebox">\
[img[images/town/mallory/sex_2.jpg]]
</div>\
<div class="textbox-center">\
She shows you to the back office. You move around her and lean her over the desk. She looks confused as to what your intent is but does not resist. She is uncomfortable being aroused, which she clearly is based on her flushed face and the wet stain you found on her panties as you lean down to inspect them. As you slowly rub the wet spot with two fingers, her back arches in shock and pleasure. Removing her underwear and pushing her on the desk, you insert your cock in her and begin pushing your hips against her ass. She tries to cover her mouth as she moans with each thrust you make into her, but even her muffled cries can be heard outside the room. You decide you need to finish this quickly and begin to pound your throbbing cock harder until you feel her clench around you and climax. You continue until you fill her up with your seed, breathing heavily as she remains on the desk, cum dripping down her thigh.
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Mallory Reward]]>><<set $reward_page-->><</button>></span> <span id="forward"><<button [[Next|Mallory Reward]]>><<set $reward_page++>><</button>></span>
</div>\
</div>\
<<case 4>>\
<div class="section">\
<div class="titlebox">\
$missionName
</div>\
<div class="picbox-intro">\
[img[images/town/mallory/body_4.jpg]]
</div>\
<div class="textbox-intro">\
<span class="pc-dialogue">Uhhh so, about my reward...</span>
She did not say anything, instead looking back at you and telling you to leave with her eyes. You nod and mention you'll be back later before slipping out the door. She remained in the office for another 20 minutes before finally being able to return to work.
She didn't want to admit it, but $pc_name knew what he was doing when he said he could cure her of her horniness. Although, she still has to finish her shift with his semen inside her...
<div class="text-center-bold">You gained <span class="le"><<- setup.malloryMisLine[$missionLog.mallory.num].lust_reward>> Lust Essence</span> and a new Blessing: <<hovertip '<<- setup.malloryMisLine[$missionLog.mallory.num].blessing_reward.tooltip>>'>>@@.special;<<- setup.malloryMisLine[$missionLog.mallory.num].blessing_reward.name>>@@<</hovertip>></div>
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Mallory Reward]]>><<set $reward_page-->><</button>></span> <span id="forward"><<button [[Next|Town Menu]]>><<set $pc_lust += setup.malloryMisLine[$missionLog.mallory.num].lust_reward>><<set $pc_blessing_list.push(setup.malloryMisLine[$missionLog.mallory.num].blessing_reward.name)>><<set $missionLog.mallory.num++>><<set $missionLog.mallory.unlocked to false>><<set $missionLog.mallory.started to false>><<set $missionLog.mallory.completed to false>><<set $missionLog.mallory.int to 0>><<unset $reward_page, $missionName>><</button>></span>
</div>\
</div>\
<</switch>>\
<</if>>\<<silently>>\
* Variables *
<<set _pc_exp_min to 85>>
<<set _pc_exp_max to 95>>
<<set _pc_exp_love_mod to 2.25>>
<<set _pc_exp_love_cap to 30>>
<<set _pc_exp_libido_mod to 1.5>>
<<set _pc_exp_libido_cap to 15>>
<<set _pc_exp_sex_mod to 1.5>>
<<set _pc_exp_sex_cap to 15>>
<<set _slave_love_exp to 6>>
<<set _slave_obedience_exp to 3>>
<<set _slave_libido_exp to 4>>
<<set _slave_sex_exp to 4>>
<<set _love_trigger to false>>
<<set _obedience_trigger to false>>
<<set _libido_trigger to false>> checks for stat increases for slave
<<set _sexskill_trigger to false>> checks if any sex skills increased and holds them in a list
<<set _sexskill_trigger_list to []>>
<<set _supportive_trigger to false>> set to true if slave has Supportive Trait
<<set _sex_options to ["blowjob", "footjob", "handjob", "titjob"]>>
* Choose Service *
<<set _highest to 0>>
<<set _sex to "">>
<<for _z = 0; _z < _sex_options; _z++>>
<<if $slave_room_list[$morning_slave][_sex_options][_z] > _highest>>
<<set _highest to $slave_room_list[$morning_slave][_sex_options][_z]>>
<<set _sex to _sex_options[_z]>>
<<elseif $slave_room_list[$morning_slave][_sex_options][_z] === _highest && _highest > 0>>
<<set _rng to random(1)>>
<<if _rng === 1>>
<<set _highest to $slave_room_list[$morning_slave][_sex_options][_z]>>
<<set _sex to _sex_options[_z]>>
<</if>>
<</if>>
<</for>>
<<if _sex === "">>
<<set _sex to _sex_options.random()>>
<</if>>
* EXP Gained *
SET BASE EXP GAINED
<<set _exp_gained to random(_pc_exp_min, _pc_exp_max)>>
ADD SLAVE BONUS
<<set _exp_gained += Math.round((Math.clamp($slave_room_list[$morning_slave].love * _pc_exp_love_mod, 0, _pc_exp_love_cap)) + (Math.clamp($slave_room_list[$morning_slave].libido * _pc_exp_libido_mod, 0, _pc_exp_libido_cap)) + (Math.clamp($slave_room_list[$morning_slave][_sex] * _pc_exp_sex_mod, 0, _pc_exp_sex_cap)))>>
Slave Bonus: _exp_gained
CARING
<<if $slave_room_list[$morning_slave].trait_names.includes("Caring")>>
TRIGGERED
<<set _exp_gained += Math.round(_exp_gained * setup.caring.float)>>
<</if>>
LOVER
<<if $slave_room_list[$morning_slave].trait_names.includes("Lover")>>
TRIGGERED
<<set _exp_gained *= setup.lover.mult>>
<</if>>
CLINGY
<<if $slave_room_list[$morning_slave].trait_names.includes("Clingy")>>
TRIGGERED
<<set _exp_gained += Math.round(_exp_gained * setup.clingy.exp_float)>>
<</if>>
NEGATIVE TRAITS
RUDE
<<if $slave_room_list[$morning_slave].trait_names.includes("Rude")>>
TRIGGERED
<<set _exp_gained -= Math.round(_exp_gained * setup.rude.float)>>
<</if>>
GODDESS DEVOTION
<<if $pc_blessing_list.includes("Goddess's Devotion")>>
<<for _z = 0; _z < $pc_blessing_list.length; _z++>>
<<if $pc_blessing_list[_z].id === "Goddess's Devotion">>
<<set _exp_gained += Math.round(_exp_gained * $pc_blessing_list[_z].float)>>
<<break>>
<</if>>
<</for>>
<</if>>
ADD EXP
<<PCLevelUp _exp_gained>>
* Love Gained *
<<SlaveLoveGrowth $slave_room_list[$morning_slave] _slave_love_exp>>
* Obedience Gained *
<<SlaveObedienceGrowth $slave_room_list[$morning_slave] _slave_obedience_exp>>
* Libido Gained *
<<SlaveLibidoGrowth $slave_room_list[$morning_slave] _slave_libido_exp>>
* Sex Skill Gained *
<<SexSkillGrowth $slave_room_list[$morning_slave] _slave_sex_exp _sex>>
* Supportive Trait *
<<if $slave_room_list[$morning_slave].trait_names.includes("Supportive")>>
<<set $pc_cur_mana += setup.supportive.int>>
<<set _supportive_trigger to true>>
<</if>>
* Update Stats *
PLAYER STATS
<<set $pc_sex_stats[_sex]++>>
<<set $pc_sex_stats.total++>>
CURRENT SLAVE STATS
<<set $slave_room_list[$morning_slave].total_jobs++>>
<<set $slave_room_list[$morning_slave].total_exp += _exp_gained>>
ALL SLAVE STATS
<<set $slaves_sex_stats[_sex]++>>
<<set $slaves_sex_stats.total++>>
<<set $slaves_task_stats.service++>>
<<set $slaves_exp_given += _exp_gained>>
* Assign Picture *
<<set _pic to $slave_room_list[$morning_slave].slave_pack[_sex].random()>>
* Set Text *
<<set _text to "PLACEHOLDER">>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Morning Gratitude
</div>\
<div class="imagebox">\
_pic
</div>\
<div class="textbox">\
_text
<li>You gained _exp_gained EXP</li>\
<<if _levelup_trigger === true>>\
<li>You gained _times_leveledup <<if _times_leveledup === 1>>level<<else>>levels<</if>></li>\
<</if>>\
<<if $pc_level === $pc_levelcap>>\
<li>You've reached the max level in this Rank</li>\
<</if>>\
<<if _love_trigger === true && _obedience_trigger === true && _libido_trigger === true>>\
<li>Her <span style="color:darkred">Love</span>, <span style="color:cyan">Obedience</span>, and <span style="color:fuchsia">Libido</span> stats have increased</li>\
<<elseif _love_trigger === true && _obedience_trigger === true>>\
<li>Her <span style="color:darkred">Love</span> and <span style="color:cyan">Obedience</span> stats have increased</li>\
<<elseif _love_trigger === true && _libido_trigger === true>>\
<li>Her <span style="color:darkred">Love</span> and <span style="color:fuchsia">Libido</span> stats have increased</li>\
<<elseif _obedience_trigger === true && _libido_trigger === true>>\
<li>Her <span style="color:cyan">Obedience</span> and <span style="color:fuchsia">Libido</span> stats have increased</li>\
<<elseif _love_trigger === true>>\
<li>Her <span style="color:darkred">Love</span> stat has increased</li>\
<<elseif _obedience_trigger === true>>\
<li>Her <span style="color:cyan">Obedience</span> stat has increased</li>\
<<elseif _libido_trigger === true>>\
<li>Her <span style="color:fuchsia">Libido</span> stat has increased</li>\
<</if>>\
<<if _sexskill_trigger === true>>\
<<for _z = 0; _z < _sexskill_trigger_list.length; _z++>>\
<li>Her _sexskill_trigger_list[_z] skill has improved.</li>\
<</for>>\
<</if>>\
<<if _supportive_trigger === true>>\
<li>Your Mana has increased by <span style="color:skyblue"><<- setup.supportive.int>></span></li>\
<</if>>\
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[Start Day|Main Menu]]>><<unset $link, $cur_job, $next_job>><</button>></span>
</div>\
</div>\<<widget "d20Roll">>
Use to roll d20 and apply effects that changes roll chances. _args[0].name is raider
<<set _d20 to random(1, 20)>>
ROLLED A _d20
POTION OF FORTUNE
<<if _args[0].status_names.includes("Potion of Fortune")>>
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
<<if _args[0].statuses[_z].id === "Potion of Fortune">>
_d20 >= <<- 20 - _args[0].statuses[_z].amount>>
<<if _d20 >= 20 - _args[0].statuses[_z].amount>>
<<set _d20 to 20>>
POTION OF FORTUNE TRIGGERED!
<</if>>
BREAK LOOP
<<break>>
<</if>>
<</for>>
<</if>>
HIGH ROLLER BLESSING
<<if $pc_blessing_list.includes("High Roller") && $dungeon_threat >= setup.malloryBlessing_1.threat && _d20 <= setup.malloryBlessing_1.int>>
HIGH ROLLER TRIGGERED
<<set _d20 to 1>>
<</if>>
CURSED STATUS
<<if _args[0].status_names.includes("Cursed")>>
<<set _rng to random(1, 100)>>
<<if _rng <= setup.cursed.percent>>
CURSED TRIGGERED
<<set _d20 to 1>>
<</if>>
<</if>>
<</widget>><<widget "CalcSpellcheck">>
_args[0].name is cur_girl, _args[1] is spellcheck, _args[2] is source
* Increase Spellcheck *
DIABOLIC INTENT
<<if $pc_blessing_list.includes("Diabolic Intent") && _args[2] === "Creature">>
<<set _args[1] += (Math.round(_args[1] * setup.blessing_04_8.float)).clamp(1, 1000000)>>
<</if>>
* Calc Percent for Spellcheck *
<<set _spellcheck to (setup.check_mult * (_args[1] - _args[0].cur_reas + 100)).clamp(0, 100)>>
SPELLCHECK: _args[1] - REASON: _args[0].cur_reas
SPELLCHECK PERCENT IS _spellcheck
* ADD OR REMOVE SPELLCHECK *
* BLESSINGS *
* SPELLCHECK MODS *
*STATUSES*
BLESSED
<<if _args[0].status_names.includes("Blessed")>>
<<set _spellcheck -= Math.clamp(Math.round(_spellcheck * setup.blessed.float), 1, 1000000)>>
SPELLCHECK: _spellcheck
<</if>>
*BLESSINGS*
FINAL STAND
<<if $pc_blessing_list.includes("Final Stand") && _args[2] === "Player" && $next_room.room_type === "Treasure">>
FINAL STAND TRIGGERED!
<<set _spellcheck += (Math.round(_spellcheck * setup.blessing_02_11.float)).clamp(1, 1000000)>>
SPELLCHECK AFTER FINAL STAND IS _spellcheck
<</if>>
* CLAMP AND ROUND SPELLCHECK *
<<set _spellcheck to Math.clamp(Math.round(_spellcheck), setup.min_spellcheck, setup.max_spellcheck)>>
<</widget>>
<<widget "SimSpellcheck">>
_args[0].name is cur_girl and _args[1] is spellcheck
* ROLL SPELLCHECK *
<<set _naive_trigger to false>>
NAIVE CHECK
<<if _args[0].trait_names.includes("Naive")>>
<<set _naive_rng to random(1, 100)>>
<<if setup.naive.percent >= _naive_rng>>
<<set _naive_trigger to true>>
<</if>>
<</if>>
* SPELLCHECK RESULTS *
<<set _rng to random(1, 100)>> _rng RNG VS _args[1] SPELLCHECK
<<d20Roll _args[0]>>
WELCOME MAT BLESSING
<<if $pc_blessing_list.includes("Welcome Mat") && _args[2] === "Trap" && $cur_room_num === 0 && !_text_triggers.blessing.welcome_mat.includes(_args[0].index) && _naive_trigger === false>>
ADD TO LIST
<<set _text_triggers.blessing.welcome_mat.push(_args[0].index)>>
<<if $pc_blessing_list.includes("Machine Mastery")>>
<<set _fail_int to setup.blessing_06_10.int * 2>>
<<else>>
<<set _fail_int to setup.blessing_06_10.int>>
<</if>>
SET D20 TO 1 IF ROLL FALLS UNDER AMOUNT
<<if _d20 <= _fail_int>>
WELCOME MAT TRIGGER!
<<set _d20 to 1>>
<</if>>
<</if>>
NAIVE TRIGGER
<<if _naive_trigger === true>>
<<set _text_triggers.trait.naive.push(_args[0].index)>>
<<set _text_triggers.check.spellcheck_failed.push(_args[0].index)>>
CRITICAL SUCCESS
<<elseif _d20 === 20>>
<<set _text_triggers.check.spellcheck_crit_passed.push(_args[0].index)>>
CRITICAL FAIL, WISE CANNOT CRIT FAIL
<<elseif _d20 === 1 && !_args[0].trait_names.includes("Wise")>>
<<set _text_triggers.check.spellcheck_crit_failed.push(_args[0].index)>>
FAILED IF SPELLCHECK GREATER THAN RNG
<<elseif _args[1] >= _rng>>
<<set _text_triggers.check.spellcheck_failed.push(_args[0].index)>>
PASSED
<<else>>
<<set _text_triggers.check.spellcheck_passed.push(_args[0].index)>>
<</if>>
INSPECTION COMPLETE EFFECT
<<if _args[2] === "Trap">>
<<if $this_room.effect_names.includes("Inspection Complete")>>
<<for _e = 0; _e < $this_room.effects.length; _e++>>
<<if $this_room.effects[_e].id === "Inspection Complete">>
<<set $this_room.effects[_e].int-->>
<<if $this_room.effects[_e].int <= 0>>
REMOVE EFFECT
<<set $this_room.cur_check -= $this_room.effects[_e].check_int>>
<<set _remove to $this_room.effects.deleteAt(_e)>>
<<set _removeName to $this_room.effect_names.delete("Inspection Complete")>>
<<else>>
UPDATE NAME
<<set $this_room.effects[_e].name to $this_room.effects[_e].id+" x"+$this_room.effects[_e].int>>
<</if>>
<<break>>
<</if>>
<</for>>
<</if>>
<</if>>
<</widget>><<widget "QuestGrinder">>
Creates Quests, assigning them gold, rep, and total stats amount
_args[0].name is quest
* Variables *
<<set _stat_per to {
gold: 0.05,
rep: 0.1,
exp: 0.2
}>>
<<set _obedienceMod to 2>>
SET STAT REQUIREMENTS
<<set _args[0].libido_req to random(_args[0].min_libido, _args[0].max_libido)>>
<<set _args[0].str_req to random(_args[0].min_str, _args[0].max_str)>>
<<set _args[0].intel_req to random(_args[0].min_intel, _args[0].max_intel)>>
<<set _args[0].total_stats to _args[0].libido_req + _args[0].str_req + _args[0].intel_req>>
SET GOLD REWARD
<<set _args[0].gold to random(_args[0].min_gold, _args[0].max_gold)>> BASE GOLD: _args[0].gold
<<set _args[0].gold += Math.round(_args[0].total_stats * _args[0].gold * _stat_per.gold)>> AFTER STATS: _args[0].gold
DIFFICULTY MOD
<<set _args[0].gold to Math.round(_args[0].gold * $diffGoldMod)>> FINAL GOLD: _args[0].gold
SET REPUTATION REWARD
<<set _args[0].reputation to random(_args[0].min_rep, _args[0].max_rep)>> BASE REP: _args[0].reputation
<<set _args[0].reputation += Math.round(_args[0].total_stats * _args[0].reputation * _stat_per.rep)>> AFTER STATS: _args[0].reputation
DIFFICULTY MOD
<<set _args[0].reputation to Math.round(_args[0].reputation * $diffRepMod)>> FINAL REP: _args[0].reputation
STRESS GAINED
<<set _args[0].stress to random(_args[0].min_stress, _args[0].max_stress)>> FINAL STRESS: _args[0].stress
EXP GAINED
<<set _args[0].obedience_exp += Math.trunc((_args[0].total_stats / _obedienceMod) * _args[0].obedience_exp * _stat_per.exp)>> FINAL OBED: _args[0].obedience_exp
<<set _args[0].libido_exp += Math.trunc(_args[0].libido_req * _args[0].libido_exp * _stat_per.exp)>> FINAL LIBIDO: _args[0].libido_exp
<<set _args[0].strength_exp += Math.trunc(_args[0].str_req * _args[0].strength_exp * _stat_per.exp)>> FINAL STR: _args[0].strength_exp
<<set _args[0].intelligence_exp += Math.trunc(_args[0].intel_req * _args[0].intelligence_exp * _stat_per.exp)>> FINAL INTEL: _args[0].intelligence_exp
TREASURE REWARD
<<set _rarityRNG to (randomFloat(0.999)).toFixed(3)>>
<<if _args[0].rare_rate > _rarityRNG && $global_treasure_stock.rare.length > 0>>
<<SetRareTreasure>>
<<elseif _args[0].uncommon_rate > _rarityRNG && $global_treasure_stock.uncommon.length > 0>>
<<SetUncommonTreasure>>
<<else>>
<<SetCommonTreasure>>
<</if>>
<<set _args[0].treasure to clone(_newTreasure)>>
TREASURE: <span @class="_args[0].treasure.rarity">_args[0].treasure.name</span>
ADD QUEST TO BOARD
<<set $quest_board_list.push(_args[0])>>
<</widget>><<silently>>\
* Variables *
<<GoddessTrapList>>
<<set _units_per_page to 8>> amount increased or decreased from display
<<set _units_per_area to 4>>
<<if $trap_page == null>>
<<set $trap_page to 0>>
<</if>>
<<set _start_pos to _units_per_page * $trap_page>> Set where to start the list based on what the page is
<<set _end_pos to _start_pos + _units_per_page>> Set where to end the list based on what the page is
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Goddess's Traps
</div>\
<div class="sidebutton-newroom">\
<<if $trap_page === 0>>\
<div class="tallbutton-off">\
<<button "<">><</button>>\
</div>\
<<else>>\
<div class="tallbutton">\
<span id="left"><<button [[<|Buy Trap]]>><<set $trap_page-->><</button>></span>
</div>\
<</if>>\
</div>\
<div class="cardcontainer-newroom">\
<div class="cardholder-newroom">\
<<for _i = _start_pos; _i < _end_pos - _units_per_area && _i < _goddessTrapList.length; _i++>>\
<<set _hotKey to (_i % 4) + 1>>\
<<set _shiftKey to "shift" + _hotKey>>\
<<silently>>\
SET BASE COST
<<set _cost to clone(_goddessTrapList[_i].cost)>>
ESSENCE OF ENTITLEMENT
<<if $pc_blessing_list.includes("Essence of Entitlement")>>
REDUCE COST
<<set _cost -= setup.blessing_01_11.int>>
<</if>>
SET COST
<<if $free_room_count > 0>>
<<set _cost to 0>>
<</if>>
<</silently>>\
<<capture _i, _hotKey, _shiftKey>>\
<div class="cellholder-newroom">\
<div class="cells-newroom">\
<div class="cell-title-newroom">\
_goddessTrapList[_i].name
</div>\
<div class="cell-pic-newroom">\
_goddessTrapList[_i].pic
</div>\
<div class="cell-text-newroom">\
<span @id="_shiftKey"><<button "[img[images/icons/desc_icon.png]]^^[_hotKey]^^" "Trap Preview">><<set $preview to _goddessTrapList[_i]>><<set $return to "Buy Trap">><</button>></span>\
<<if $pc_lust >= _cost>>\
<<button "_cost Lust Essence ^^_hotKey" "Ahri's Teachings">>\
<<silently>>\
REDUCE LE FROM COST
<<set $pc_lust -= _cost>>
<<set $pc_lust_spent += _cost>>
REDUCE FREE ROOM COUNT
<<if $free_room_count > 0 && _cost === 0>>
<<set $free_room_count-->>
<</if>>
GODDESS QUEST
<<set $goddessQuestUnlock += _cost>>
ADD CREATURE ROOM TO OWNED LIST
<<set $pc_trap_list.push(_goddessTrapList[_i].base_name)>>
SET NEXT PASSAGE ROOM
<<set $ahri_teachings to "Trap">>
UNSET
<<unset $trap_page>>
<</silently>>\
<</button>>
<<else>>\
<div class="offbutton">\
<<button "_cost Lust Essence">><</button>>
</div>\
<</if>>\
</div>\
</div>\
</div>\
<</capture>>\
<</for>>\
</div>\
<div class="cardholder-newroom">\
<<for _i = _start_pos + _units_per_area; _i < _end_pos && _i < _goddessTrapList.length; _i++>>\
<<set _hotKey to (_i % 4) + 5>>\
<<set _shiftKey to "shift"+_hotKey>>\
<<silently>>\
SET BASE COST
<<set _cost to clone(_goddessTrapList[_i].cost)>>
ESSENCE OF ENTITLEMENT
<<if $pc_blessing_list.includes("Essence of Entitlement")>>
REDUCE COST
<<set _cost -= setup.blessing_01_11.int>>
<</if>>
SET COST
<<if $free_room_count > 0>>
<<set _cost to 0>>
<</if>>
<</silently>>\
<<capture _i, _hotKey, _shiftKey>>\
<div class="cellholder-newroom">\
<div class="cells-newroom">\
<div class="cell-title-newroom">\
_goddessTrapList[_i].name
</div>\
<div class="cell-pic-newroom">\
_goddessTrapList[_i].pic
</div>\
<div class="cell-text-newroom">\
<span @id="_shiftKey"><<button "[img[images/icons/desc_icon.png]]^^[_hotKey]^^" "Trap Preview">><<set $preview to _goddessTrapList[_i]>><<set $return to "Buy Trap">><</button>></span>\
<<if $pc_lust >= _cost>>\
<<button "_cost Lust Essence ^^_hotKey" "Ahri's Teachings">>\
<<silently>>\
REDUCE LE FROM COST
<<set $pc_lust -= _cost>>
<<set $pc_lust_spent += _cost>>
REDUCE FREE ROOM COUNT
<<if $free_room_count > 0 && _cost === 0>>
<<set $free_room_count-->>
<</if>>
GODDESS QUEST
<<set $goddessQuestUnlock += _cost>>
ADD CREATURE ROOM TO OWNED LIST
<<set $pc_trap_list.push(_goddessTrapList[_i].base_name)>>
SET NEXT PASSAGE ROOM
<<set $ahri_teachings to "Trap">>
UNSET
<<unset $trap_page>>
<</silently>>\
<</button>>
<<else>>\
<div class="offbutton">\
<<button "_cost Lust Essence">><</button>>
</div>\
<</if>>\
</div>\
</div>\
</div>\
<</capture>>\
<</for>>\
</div>\
</div>\
<div class="sidebutton-newroom">\
<<if _end_pos >= _goddessTrapList.length>>\
<div class="tallbutton-off">\
<<button ">">><</button>>\
</div>\
<<else>>\
<div class="tallbutton">\
<span id="right"><<button [[>|Buy Trap]]>><<set $trap_page++>><</button>></span>
</div>\
<</if>>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Ahri's Quarters]]>><<unset $trap_page>><</button>></span>
<div>\
</div>\<<widget "CreatureTargetText">>
/* Displays Text for any Traits or effects that change the target of the creature to another Raider */
/* Bubble Butt Trait */
<<if _target_text_triggers.bubble_butt.includes(_args[0].index) && _args[1].attacks_all === false && $raiders.length > 1 && _args[0].attacked === true>>
<li>Her <<hovertip "<<-setup.bubble_butt.tooltip>>">>Bubble Butt<</hovertip>> caught the _args[1].name's interest.</li>
/* Perky Trait */
<<elseif _target_text_triggers.perky.includes(_args[0].index) && _args[1].attacks_all === false && $raiders.length > 1 && _args[0].attacked === true>>
<li>Her <<hovertip "<<-setup.perky.tooltip>>">>Perky<</hovertip>> breasts caught the _args[1].name's interest.</li>
/* Sweet Scent Trait */
<<elseif _target_text_triggers.sweet_scent.includes(_args[0].index) && _args[1].attacks_all === false && $raiders.length > 1 && _args[0].attacked === true>>
<li>Her wet pussy gave off a <<hovertip "<<-setup.sweet_scent.tooltip>>">>Sweet Scent<</hovertip>> that caught the _args[1].name's interest.</li>
<</if>>
<</widget>>
<<widget "DancerDanceText">>
<<if _args[2]>>
<<set _name to $raiders[_r].name>>
<<else>>
<<set _name to "She">>
<</if>>
<<if $raiders[_r].class === "Dancer">>
<<if $raiders[_r].dance === "Attack Buff">>
<li>_name performed the Dance of the Jaguar, increasing her party's @@.vig;Vigor@@ and @@.will;Willpower@@<<if $raiders[_r].trait_names.includes("Flow Weaver")>> and gained a stack of <<hovertip "<<- setup.flow.tooltip>>">>Flow<</hovertip>>.<<else>>.<</if>></li>
<<elseif $raiders[_r].dance === "Defense Buff">>
<li>_name performed the Dance of the Serpent, increasing her party's @@.end;Endurance@@ and @@.pers;Perseverance@@<<if $raiders[_r].trait_names.includes("Flow Weaver")>> and gained a stack of <<hovertip "<<- setup.flow.tooltip>>">>Flow<</hovertip>>.<<else>>.<</if>></li>
<<elseif $raiders[_r].dance === "Tolerance Buff">>
<li>_name performed the Dance of the Mermaid, increasing her party's @@.toler;Tolerance@@<<if $raiders[_r].trait_names.includes("Flow Weaver")>> and gained a stack of <<hovertip "<<- setup.flow.tooltip>>">>Flow<</hovertip>>.<<else>>.<</if>></li>
<<elseif $raiders[_r].dance === "Awareness Buff">>
<li>_name performed the Dance of the Eagle, increasing her party's @@.aware;Awareness@@<<if $raiders[_r].trait_names.includes("Flow Weaver")>> and gained a stack of <<hovertip "<<- setup.flow.tooltip>>">>Flow<</hovertip>>.<<else>>.<</if>></li>
<</if>>
<</if>>
<</widget>>
<<widget "RaiderAtkText">>
/* Use to display Raider attack text in creature rooms */
/* Brainwashed */
<<if _text_triggers.status.brainwashed_noAtk_trig.includes(_args[0].index)>>
<<set _brainwashed_strings to ["She is <<hovertip '<<-setup.brainwashed.tooltip>>'>>Brainwashed<</hovertip>> and wandered around aimlessly instead of attacking.", "She stared at the _args[1].name with empty eyes because she was <<hovertip '<<-setup.brainwashed.tooltip>>'>>Brainwashed<</hovertip>>.", "She stumbled around after dropping her weapon because she was <<hovertip '<<-setup.brainwashed.tooltip>>'>>Brainwashed<</hovertip>>.", "After being <<hovertip '<<-setup.brainwashed.tooltip>>'>>Brainwashed<</hovertip>>, she felt no intention to fight the _args[1].name."]>>
<<set _brainwashed_text to _brainwashed_strings.random()>>
<li>_brainwashed_text</li>
/* Alchemist */
<<elseif _args[0].class === "Alchemist">>
<li><<if _text_triggers.check.atk_crit.includes(_args[0].index)>><strong>Critical Hit! </strong><<elseif _text_triggers.check.atk_fail.includes(_args[0].index)>><strong>Critical Fail! </strong><</if>>She shot poisoned-tipped arrows at the _args[1].name using her crossbow, dealing <span style="color:orange">_args[0].dmg_dealt Physical</span> damage.</li>
/* Hunter */
<<elseif _args[0].class === "Hunter">>
<li><<if _text_triggers.check.atk_crit.includes(_args[0].index)>><strong>Critical Hit! </strong><<elseif _text_triggers.check.atk_fail.includes(_args[0].index)>><strong>Critical Fail! </strong><</if>>She attacked the _args[1].name with a volley of arrows using her powerful bow, dealing <span style="color:orange">_args[0].dmg_dealt Physical</span> damage.</li>
/* Knight */
<<elseif _args[0].class === "Knight">>
<li><<if _text_triggers.check.atk_crit.includes(_args[0].index)>><strong>Critical Hit! </strong><<elseif _text_triggers.check.atk_fail.includes(_args[0].index)>><strong>Critical Fail! </strong><</if>>She fended off the _args[1].name with her sword and shield, dealing <span style="color:orange">_args[0].dmg_dealt Physical</span> damage.</li>
/* Priestess */
<<elseif _args[0].class === "Priestess">>
<li><<if _text_triggers.check.atk_crit.includes(_args[0].index)>><strong>Critical Hit! </strong><<elseif _text_triggers.check.atk_fail.includes(_args[0].index)>><strong>Critical Fail! </strong><</if>>She used holy magic to attack the _args[1].name, dealing <span style="color:skyblue">_args[0].dmg_dealt Magical</span> damage.</li>
/* Sorcerer */
<<elseif _args[0].class === "Sorcerer">>
<li><<if _text_triggers.check.atk_crit.includes(_args[0].index)>><strong>Critical Hit! </strong><<elseif _text_triggers.check.atk_fail.includes(_args[0].index)>><strong>Critical Fail! </strong><</if>>She blasted the _args[1].name with fire and ice spells, dealing <span style="color:skyblue">_args[0].dmg_dealt Magical</span> damage.</li>
/* Thief */
<<elseif _args[0].class === "Thief">>
<li><<if _text_triggers.check.atk_crit.includes(_args[0].index)>><strong>Critical Hit! </strong><<elseif _text_triggers.check.atk_fail.includes(_args[0].index)>><strong>Critical Fail! </strong><</if>>She dashed around the room and sliced the _args[1].name with her dagger, dealing <span style="color:orange">_args[0].dmg_dealt Physical</span> damage.</li>
/* Warrior */
<<elseif _args[0].class === "Warrior">>
<li><<if _text_triggers.check.atk_crit.includes(_args[0].index)>><strong>Critical Hit! </strong><<elseif _text_triggers.check.atk_fail.includes(_args[0].index)>><strong>Critical Fail! </strong><</if>>She slammed down her weapon into the _args[1].name, dealing <span style="color:orange">_args[0].dmg_dealt Physical</span> damage.</li>
/* Witch */
<<elseif _args[0].class === "Witch">>
<li><<if _text_triggers.check.atk_crit.includes(_args[0].index)>><strong>Critical Hit! </strong><<elseif _text_triggers.check.atk_fail.includes(_args[0].index)>><strong>Critical Fail! </strong><</if>>She summoned dark magic to use against the _args[1].name, dealing <span style="color:skyblue">_args[0].dmg_dealt Magical</span> damage.</li>
/* Dancer */
<<elseif _args[0].class === "Dancer">>
<li><<if _text_triggers.check.atk_crit.includes(_args[0].index)>><strong>Critical Hit! </strong><<elseif _text_triggers.check.atk_fail.includes(_args[0].index)>><strong>Critical Fail! </strong><</if>>She drew magic through her dance to send a wave of energy at the _args[1].name, dealing <span style="color:skyblue">_args[0].dmg_dealt Magical</span> damage.</li>
/* Brawler */
<<elseif _args[0].class === "Brawler">>
<<set _first_atk to _args[0].dmg_dealt - _args[0].brawler_2nd_atk>>
/* Set count for number of critical hits and fails */
<<set _num_crits to _text_triggers.check.atk_crit.count(_args[0].index)>>
<<set _num_fails to _text_triggers.check.atk_fail.count(_args[0].index)>>
/* Output Text */
<li>
<<if _num_crits === 2>>
<strong>Two Critical Hits! </strong>
<<elseif _num_fails === 2>>
<strong>Two Critical Fails! </strong>
<<elseif _num_crits === 1 && _num_fails === 1>>
<strong>Critical Hit and Critical Fail! </strong>
<<elseif _num_crits === 1>>
<strong>Critical Hit! </strong>
<<elseif _num_fails === 1>>
<strong>Critical Fail! </strong>
<</if>>
<<if _first_atk === _args[0].brawler_2nd_atk>>
She ran up to the _args[1].name and threw two fast punches, dealing <span style="color:orange">_first_atk</span> damage each, for a total of <span style="color:orange">_args[0].dmg_dealt Physical</span> damage.
<<else>>
She ran up to the _args[1].name and threw two fast punches, dealing <span style="color:orange">_first_atk</span> and <span style="color:orange">_args[0].brawler_2nd_atk</span> damage, for a total of <span style="color:orange">_args[0].dmg_dealt Physical</span> damage.
<</if>>
</li>
<</if>>
/* Submissive Text */
<<if _text_triggers.trait.submissive.includes(_args[0].index)>>
<li>Her damage was greatly reduced because she felt <<hovertip "<<-setup.submissive.tooltip>>">>Submissive<</hovertip>> towards the _args[1].name.</li>
<</if>>
<</widget>>
<<widget "RaiderFetishText">>
/* Display any info regarding kinks or turn-offs triggered by room */
/* Amorous Kink Trait */
<<if _text_triggers.trait.amorous_kink.includes(_args[0].index)>>
<<for _z = 0; _z < _args[0].traits.length; _z++>>
<<if _args[0].traits[_z].name === "Amorous">>
<<set _fetish to _args[0].traits[_z].new_kink>>
<<break>>
<</if>>
<</for>>
<li>The _fetish Fetish triggered her <<hovertip "<<-setup.amorous.tooltip>>">>Amorous<</hovertip>> feelings and became a new Kink.</li>
<</if>>
/* Amorous Turn-Off Trait */
<<if _text_triggers.trait.amorous_turnoff.includes(_args[0].index)>>
<<for _z = 0; _z < _args[0].traits.length; _z++>>
<<if _args[0].traits[_z].name === "Amorous">>
<<set _fetish to _args[0].traits[_z].new_turnoff>>
<<break>>
<</if>>
<</for>>
<li>The _fetish Fetish did not trigger her <<hovertip "<<-setup.amorous.tooltip>>">>Amorous<</hovertip>> feelings and became a new Turn-Off.</li>
<</if>>
/* Display Kinks Triggered */
<<if _args[0].kink_trigger.length === 1>>
<li>Her _args[0].kink_trigger Kink increased the amount of @@.sex;Sexual@@ damage taken.</li>
<<elseif _args[0].kink_trigger.length === 2>>
<li>Her _args[0].kink_trigger[0] and _args[0].kink_trigger[1] Kinks increased the amount of @@.sex;Sexual@@ damage taken.</li>
<<elseif _args[0].kink_trigger.length > 2>>
<<set _last_kink to _args[0].kink_trigger.pop()>>
<li>Her _args[0].kink_trigger, and _last_kink Kinks increased the amount of @@.sex;Sexual@@ damage taken.</li>
<</if>>
/* Display Turn-Offs Triggered */
<<if _args[0].turnoff_trigger.length === 1>>
<li>Her _args[0].turnoff_trigger Turn-Off decreased the amount of @@.sex;Sexual@@ damage taken.</li>
<<elseif _args[0].turnoff_trigger.length === 2>>
<li>Her _args[0].turnoff_trigger[0] and _args[0].turnoff_trigger[1] Turn-Offs decreased the amount of @@.sex;Sexual@@ damage taken.</li>
<<elseif _args[0].turnoff_trigger.length > 2>>
<<set _last_turnoff to _args[0].turnoff_trigger.pop()>>
<li>Her _args[0].turnoff_trigger, and _last_turnoff Turn-Offs decreased the amount of @@.sex;Sexual@@ damage taken.</li>
<</if>>
/* Edger Trait */
<<if _text_triggers.trait.edger.includes(_args[0].index)>>
<li>She resisted Climaxing because she is an <<hovertip "<<-setup.edger.tooltip>>">>Edger<</hovertip>>.</li>
<</if>>
/* Edging Status */
<<if _text_triggers.status.edging.includes(_args[0].index)>>
<li>She's on the <<hovertip "<<-setup.edging.tooltip>>">>Edge<</hovertip>> of Climaxing!</li>
<</if>>
/* Flat Trait */
<<if _text_triggers.trait.flat.includes(_args[0].index)>>
<li>She gained significantly less @@.lust;Lust@@ because of her <<hovertip "<<-setup.flat.tooltip>>">>Flat<</hovertip>> figure.</li>
<</if>>
/* Thicc Trait */
<<if _text_triggers.trait.thicc.includes(_args[0].index)>>
<li>She gained significantly more @@.lust;Lust@@ because of her <<hovertip "<<-setup.thicc.tooltip>>">>Thicc<</hovertip>> curves.</li>
<</if>>
/* Petite Trait */
<<if _text_triggers.trait.petite.includes(_args[0].index)>>
<li>She gained significantly more @@.lust;Lust@@ because of her <<hovertip "<<-setup.petite.tooltip>>">>Petite<</hovertip>> size.</li>
<</if>>
/* Voluptuous Trait */
<<if _text_triggers.trait.voluptuous.includes(_args[0].index)>>
<li>She gained significantly more @@.lust;Lust@@ because of her <<hovertip "<<-setup.voluptuous.tooltip>>">>Voluptuous<</hovertip>> breasts.</li>
<</if>>
/* Stimulated Status Triggered */
<<if _text_triggers.status.stimulated_trig.includes(_args[0].index)>>
<li>She took significantly more @@.sexual;Sexual@@ damage because her body was <<hovertip "<<-setup.stimulated.tooltip>>">>Stimulated<</hovertip>>.</li>
<</if>>
/* Mark Of Lust Status */
<<if _text_triggers.status.markoflust_trig.includes(_args[0].index)>>
<li>Her <<hovertip "<<-setup.mark_of_lust.tooltip>>">>Mark of Lust<</hovertip>> greatly reduced her @@.toler;Tolerance@@ to increase the pleasure she felt before disappearing from her body.</li>
<</if>>
/* Squirter Trait, Increased Lust */
<<if _text_triggers.trait.squirted.includes(_args[0].index)>>
<<set _num to 0>>
<<for _z = 0; _z < _args[0].traits.length; _z++>>
<<if _args[0].traits[_z].name === "Squirter">>
<<set _num to _args[0].traits[_z].amount>>
<<break>>
<</if>>
<</for>>
<<set _squirtFetishes to []>>
<<for _z = 0; _z < _args[1].fetishes.length; _z++>>
<<if setup.squirter.fetishes.includes(_args[1].fetishes[_z])>>
<<set _squirtFetishes.push(_args[1].fetishes[_z])>>
<</if>>
<</for>>
<<set _fetish to _squirtFetishes.random()>>
<<switch _fetish>>
<<case "Cunnilingus">>
<li>She squirted from getting her pussy eaten out, increasing her @@.lust;Lust@@ by @@.lust;_num@@.</li>
<<case "Masturbation">>
<li>She squirted from getting her pussy rubbed, increasing her @@.lust;Lust@@ by @@.lust;_num@@.</li>
<<case "Pussy">>
<li>She squirted from getting her pussy penetrated, increasing her @@.lust;Lust@@ by @@.lust;_num@@.</li>
<</switch>>
/* Squirter Trait, Gained Wet Status */
<<elseif _text_triggers.trait.squirter.includes(_args[0].index)>>
<<set _squirtFetishes to []>>
<<for _z = 0; _z < _args[1].fetishes.length; _z++>>
<<if setup.squirter.fetishes.includes(_args[1].fetishes[_z])>>
<<set _squirtFetishes.push(_args[1].fetishes[_z])>>
<</if>>
<</for>>
<<set _fetish to _squirtFetishes.random()>>
<<switch _fetish>>
<<case "Cunnilingus">>
<li>She became <<hovertip "<<-setup.wet.tooltip>>">>Wet<</hovertip>> from getting her pussy eaten.</li>
<<case "Masturbation">>
<li>She became <<hovertip "<<-setup.wet.tooltip>>">>Wet<</hovertip>> from getting her pussy rubbed.</li>
<<case "Pussy">>
<li>She became <<hovertip "<<-setup.wet.tooltip>>">>Wet<</hovertip>> from getting her pussy penetrated.</li>
<</switch>>
<</if>>
/* Wild Trait, Increased Lust */
<<if _text_triggers.trait.wild_pos.includes(_args[0].index)>>
<<set _num to 0>>
<<for _z = 0; _z < _args[0].traits.length; _z++>>
<<if _args[0].traits[_z].name === "Wild">>
<<set _num to _args[0].traits[_z].amount>>
<<break>>
<</if>>
<</for>>
<li>Her <<hovertip "<<-setup.wild.tooltip>>">>Wild<</hovertip>> side was turned on by the _args[1].name and increased the amount of @@.lust;Lust@@ gained by @@.lust;_num@@.</li>
/* Wild Trait, Decreased Lust */
<<elseif _text_triggers.trait.wild_neg.includes(_args[0].index)>>
<<set _num to 0>>
<<for _z = 0; _z < _args[0].traits.length; _z++>>
<<if _args[0].traits[_z].name === "Wild">>
<<set _num to _args[0].traits[_z].amount>>
<<break>>
<</if>>
<</for>>
<li>Her <<hovertip "<<-setup.wild.tooltip>>">>Wild<</hovertip>> side was turned off by the _args[1].name and decreased the amount of @@.lust;Lust@@ gained by @@.lust;_num@@.</li>
<</if>>
/* Reserved Trait, Increased Lust */
<<if _text_triggers.trait.reserved_pos.includes(_args[0].index)>>
<<set _num to 0>>
<<for _z = 0; _z < _args[0].traits.length; _z++>>
<<if _args[0].traits[_z].name === "Reserved">>
<<set _num to _args[0].traits[_z].amount>>
<<break>>
<</if>>
<</for>>
<li>Her <<hovertip "<<-setup.reserved.tooltip>>">>Reserved<</hovertip>> nature made her more comfortable around the _args[1].name and increased the amount of @@.lust;Lust@@ she gained by @@.lust;_num@@.</li>
/* Reserved Trait, Decreased Lust */
<<elseif _text_triggers.trait.reserved_neg.includes(_args[0].index)>>
<<set _num to 0>>
<<for _z = 0; _z < _args[0].traits.length; _z++>>
<<if _args[0].traits[_z].name === "Reserved">>
<<set _num to _args[0].traits[_z].amount>>
<<break>>
<</if>>
<</for>>
<li>Her <<hovertip "<<-setup.reserved.tooltip>>">>Reserved<</hovertip>> nature made her uncomfortable around the _args[1].name and decreased the amount of @@.lust;Lust@@ gained by @@.lust;_num@@.</li>
<</if>>
/* Masochist */
<<if _text_triggers.trait.masochist.includes(_args[0].index)>>
<<set _atk_type to (_args[1].attack_type).toLowerCase()>>
<<for _z = 0; _z < _args[0].traits.length; _z++>>
<<if _args[0].traits[_z].name === "Masochist">>
<<set _num to _args[0].traits[_z].amount>>
<<break>>
<</if>>
<</for>>
<li><span @class="_atk_type">_num _args[1].attack_type</span> damage taken increased her @@.lust;Lust@@ instead.</li>
<</if>>
<</widget>>
<<widget "PostCombatText">>
/* Display any effects that happened after raider took damage */
/* Pregnant Status */
<<if _text_triggers.status.anus_pregnant.includes(_args[0].index)>>
<li>Her Anus was <<hovertip "<<-setup.pregnant.tooltip>>">>Impregnated<</hovertip>> by the _args[1].name.</li>
<<elseif _text_triggers.status.breasts_pregnant.includes(_args[0].index)>>
<li>Her Breasts were <<hovertip "<<-setup.pregnant.tooltip>>">>Impregnated<</hovertip>> by the _args[1].name.</li>
<<elseif _text_triggers.status.womb_pregnant.includes(_args[0].index)>>
<li>Her Womb was <<hovertip "<<-setup.pregnant.tooltip>>">>Impregnated<</hovertip>>.</li>
<</if>>
/* Gokkun Trait */
<<if _text_triggers.trait.gokkun.includes(_args[0].index)>>
<<for _z = 0; _z < _args[0].traits.length; _z++>>
<<if _args[0].traits[_z].name === "Gokkun">>
<<set _heal to _args[0].traits[_z].heal_amount>>
<<break>>
<</if>>
<</for>>
<li>After swallowing, she recovered <span style="color:lime">_heal</span> Health.</li>
<</if>>
/* Soaked Trait */
<<if _text_triggers.trait.soaked.includes(_args[0].index)>>
<li>Her pussy became <<hovertip "<<-setup.soaked.tooltip>>">>Soaked<</hovertip>>.</li>
<</if>>
/* Drenched Trait */
<<if _text_triggers.trait.drenched.includes(_args[0].index)>>
<li>Her pussy became <<hovertip "<<-setup.drenched.tooltip>>">>Drenched<</hovertip>>.</li>
<</if>>
/* Sticky Status */
<<if _text_triggers.status.sticky.includes(_args[0].index)>>
/* Find Status */
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
<<if _args[0].statuses[_z].id === setup.sticky.id>>
/* Sticky Text */
<li>She gained _args[0].statuses[_z].gain <<hovertip "<<-setup.sticky.tooltip>>">>Sticky<</hovertip>>.</li>
/* BREAK LOOP */
<<break>>
<</if>>
<</for>>
<</if>>
/* Poisoned Status */
<<if _text_triggers.status.poisoned.includes(_args[0].index)>>
/* Find Status */
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
<<if _args[0].statuses[_z].id === setup.poisoned.id>>
<li>She gained _args[0].statuses[_z].gain <<hovertip "<<-setup.poisoned.tooltip>>">>Poisoned<</hovertip>>.</li>
/* BREAK LOOP */
<<break>>
<</if>>
<</for>>
<</if>>
/* Fantasizer */
<<if _text_triggers.trait.fantasizer.includes(_args[0].index)>>
<li>Her <<hovertip "<<-setup.aroused.tooltip>>">>Arousal<</hovertip>> increased while fighting the _args[1].name.</li>
<</if>>
/* Aroused Status */
<<if _text_triggers.status.aroused.includes(_args[0].index)>>
/* Find Status */
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
<<if _args[0].statuses[_z].id === setup.aroused.id>>
<li>She gained _args[0].statuses[_z].gain <<hovertip "<<-setup.aroused.tooltip>>">>Aroused<</hovertip>>.</li>
/* BREAK LOOP */
<<break>>
<</if>>
<</for>>
<</if>>
/* Intoxicated Status */
<<if _text_triggers.status.intoxicated.includes(_args[0].index)>>
/* Find Status */
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
<<if _args[0].statuses[_z].id === setup.intoxicated.id>>
<li>She gained _args[0].statuses[_z].gain <<hovertip "<<-setup.intoxicated.tooltip>>">>Intoxicated<</hovertip>>.</li>
/* BREAK LOOP */
<<break>>
<</if>>
<</for>>
<</if>>
/* Lactation Status */
<<if _text_triggers.status.lactation.includes(_args[0].index)>>
/* Find Status */
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
<<if _args[0].statuses[_z].id === setup.lactation.id>>
<li>She gained _args[0].statuses[_z].gain <<hovertip "<<-setup.lactation.tooltip>>">>Lactation<</hovertip>>.</li>
/* BREAK LOOP */
<<break>>
<</if>>
<</for>>
<</if>>
/* Futanari Status */
<<if _text_triggers.status.futanari.includes(_args[0].index)>>
/* Find Status */
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
<<if _args[0].statuses[_z].id === setup.futanari.id>>
<li>She gained _args[0].statuses[_z].gain <<hovertip "<<-setup.futanari.tooltip>>">>Futanari<</hovertip>>.</li>
/* BREAK LOOP */
<<break>>
<</if>>
<</for>>
<</if>>
/* Brainwashed Status Gained or Lost */
<<if _text_triggers.status.brainwashed.includes(_args[0].index)>>
<li>She became <<hovertip "<<-setup.brainwashed.tooltip>>">>Brainwashed<</hovertip>>.</li>
<<elseif _text_triggers.status.brainwashed_trig.includes(_args[0].index)>>
<li>After wandering around aimlessly, she is no longer <<hovertip "<<-setup.brainwashed.tooltip>>">>Brainwashed<</hovertip>>.</li>
<</if>>
/* Stimulated Status Gained */
<<if _text_triggers.status.stimulated.includes(_args[0].index)>>
<li>She became <<hovertip "<<-setup.stimulated.tooltip>>">>Stimulated<</hovertip>>.</li>
<</if>>
/* Stripped Status */
<<if _text_triggers.status.stripped.includes(_args[0].index)>>
<li>Her clothes were damaged and she became <<hovertip "<<-setup.stripped.tooltip>>">>Stripped<</hovertip>>.</li>
<</if>>
/* Intimidated Status */
<<if _text_triggers.status.intimidated.includes(_args[0].index)>>
<li>She was shaken up and became <<hovertip "<<-setup.intimidated.tooltip>>">>Intimidated<</hovertip>>.</li>
<</if>>
/* Cursed Status */
<<if _text_triggers.status.cursed.includes(_args[0].index)>>
<li>She became <<hovertip "<<-setup.cursed.tooltip>>">>Cursed<</hovertip>>.</li>
<</if>>
/* Mark of Lust Status Gained */
<<if _text_triggers.status.markoflust.includes(_args[0].index)>>
<li>She was branded with the <<hovertip "<<-setup.mark_of_lust.tooltip>>">>Mark of Lust<</hovertip>> on her abdomen.</li>
<</if>>
/* Horny, Wet, Perverted Statuses */
/* Gained 3 */
<<if _text_triggers.status.horny.includes(_args[0].index) && _text_triggers.status.wet.includes(_args[0].index) && _text_triggers.status.perverted.includes(_args[0].index)>>
<li>She became <<hovertip "<<-setup.horny.tooltip>>">>Horny<</hovertip>>, <<hovertip "<<-setup.wet.tooltip>>">>Wet<</hovertip>>, and <<hovertip "<<-setup.perverted.tooltip>>">>Perverted<</hovertip>>.</li>
/* Gained 2 */
<<elseif _text_triggers.status.horny.includes(_args[0].index) && _text_triggers.status.wet.includes(_args[0].index)>>
<li>She became <<hovertip "<<-setup.horny.tooltip>>">>Horny<</hovertip>> and <<hovertip "<<-setup.wet.tooltip>>">>Wet<</hovertip>>.</li>
<<elseif _text_triggers.status.horny.includes(_args[0].index) && _text_triggers.status.perverted.includes(_args[0].index)>>
<li>She became <<hovertip "<<-setup.horny.tooltip>>">>Horny<</hovertip>> and <<hovertip "<<-setup.perverted.tooltip>>">>Perverted<</hovertip>>.</li>
<<elseif _text_triggers.status.wet.includes(_args[0].index) && _text_triggers.status.perverted.includes(_args[0].index)>>
<li>She became <<hovertip "<<-setup.wet.tooltip>>">>Wet<</hovertip>> and <<hovertip "<<-setup.perverted.tooltip>>">>Perverted<</hovertip>>.</li>
/* Gained 1 */
<<elseif _text_triggers.status.horny.includes(_args[0].index)>>
<li>She became <<hovertip "<<-setup.horny.tooltip>>">>Horny<</hovertip>>.</li>
<<elseif _text_triggers.status.wet.includes(_args[0].index)>>
<li>She became <<hovertip "<<-setup.wet.tooltip>>">>Wet<</hovertip>>.</li>
<<elseif _text_triggers.status.perverted.includes(_args[0].index)>>
<li>She became <<hovertip "<<-setup.perverted.tooltip>>">>Perverted<</hovertip>>.</li>
<</if>>
/* Lost Virginity Trait */
<<if _text_triggers.trait.virgin.includes(_args[0].index)>>
<li>She lost her <<hovertip "<<-setup.virgin.tooltip>>">>Virginity<</hovertip>> to the _args[1].name.</li>
<</if>>
/* Relentless Trait */
<<if _text_triggers.trait.relentless.includes(_args[0].index)>>
<li>Her <<hovertip "<<-setup.relentless.tooltip>>">>Relentless<</hovertip>> drive increased her @@.vig;Vigor@@.</li>
<</if>>
/* Trophy Collector Trait */
<<if _text_triggers.trait.trophy_collector.includes(_args[0].index)>>
<li>She claimed a <<hovertip "<<-setup.trophy_collector.tooltip>>">>Trophy<</hovertip>> after taking down the _args[1].name.</li>
<</if>>
/* Capture and Defeat Text */
<<if _args[0].status_names.includes(setup.captured.id) && _args[0].cur_hp <= 0>>
<li>_args[1].defeat_entry</li>
<<elseif _args[0].status_names.includes(setup.captured.id)>>
<li>_args[1].capture_entry</li>
<</if>>
/* Teraphobia Trait */
<<if _text_triggers.trait.teraphobia.includes(_args[0].index)>>
<li>Her <<hovertip "<<-setup.teraphobia.tooltip>>">>Teraphobia<</hovertip>> proved too much to overcome and she Abandoned the Raid.</li>
<</if>>
/* Entomophobia Trait */
<<if _text_triggers.trait.entomophobia.includes(_args[0].index)>>
<li>Her <<hovertip "<<-setup.entomophobia.tooltip>>">>Entomophobia<</hovertip>> proved too much to overcome and she Abandoned the Raid.</li>
<</if>>
/* Zoophobia Trait */
<<if _text_triggers.trait.zoophobia.includes(_args[0].index)>>
<li>Her <<hovertip "<<-setup.zoophobia.tooltip>>">>Zoophobia<</hovertip>> proved too much to overcome and she Abandoned the Raid.</li>
<</if>>
<</widget>>
<<widget "CreatureRoomText">>
/* Total Damage Dealt */
<<set _total_dmg to 0>>
<<set _total_sex to 0>>
<<set _high_dmg to 0>>
<<set _high_sex to 0>>
<<set _atk_type to (_args[0].attack_type).toLowerCase()>>
<<for _z = 0; _z < $raiders.length; _z++>>
<<set _total_dmg += $raiders[_z].dmg_taken>>
<<set _total_sex += $raiders[_z].sex_taken>>
<<if $raiders[_z].dmg_taken > _high_dmg>>
<<set _high_dmg to clone($raiders[_z].dmg_taken)>>
<</if>>
<<if $raiders[_z].sex_taken > _high_sex>>
<<set _high_sex to clone($raiders[_z].sex_taken)>>
<</if>>
<</for>>
/* Output Text */
<<if _text_triggers.blessing.mending_entrance === true>>
<li><<- _args[0].prefix.toUpperFirst()>> recovered some @@.health;Health@@ after being summoned.</li>
<</if>>
<<if $raiders.length > 1>>
<<if _total_dmg > _high_dmg && _total_sex > _high_sex>>
/* Output Both */
<li><<- _args[0].prefix.toUpperFirst()>> did a total of <span @class="_atk_type">_total_dmg _args[0].attack_type</span> damage and <span class="lust">_total_sex Sexual</span> damage to the party.</li>
<<elseif _total_dmg > _high_dmg>>
/* Output only Physical/Magical Dmg */
<li><<- _args[0].prefix.toUpperFirst()>> did a total of <span @class="_atk_type">_total_dmg _args[0].attack_type</span> damage to the party.</li>
<<elseif _total_sex > _high_sex>>
/* Output only Sexual Dmg */
<li><<- _args[0].prefix.toUpperFirst()>> did a total of <span class="lust">_total_sex Sexual</span> damage to the party.</li>
<</if>>
<</if>>
/* Captured Text */
<<if _text_triggers.status.captured.length === $raiders.length && $raiders.length > 1>>
<li>All the Raiders were Captured.</li>
<<elseif _text_triggers.status.captured.length === $raiders.length && $raiders.length === 1>>
<li>The Raider was Captured.</li>
<<elseif _text_triggers.status.captured.length > 1>>
<li>_text_triggers.status.captured.length Raiders were Captured.</li>
<</if>>
/* Abandoned Text */
<<if _text_triggers.status.abandoned.length === $raiders.length && $raiders.length > 1>>
<li>All the Raiders Abandoned the Raid.</li>
<<elseif _text_triggers.status.abandoned.length === 1>>
<li>The Raider Abandoned the Raid.</li>
<<elseif _text_triggers.status.abandoned.length > 1>>
<li>_text_triggers.status.abandoned.length Raiders Abandoned the Raid.</li>
<</if>>
/* EXP Gained */
<<if _creature_exp_gained >= 1 && _args[0].summoned === false>>
<li><<- _args[0].prefix.toUpperFirst()>> gained _creature_exp_gained EXP from the battle.</li>
<<elseif _args[0].summoned === false>>
<li><<- _args[0].prefix.toUpperFirst()>> has reached the max level for this Dungeon Rank.</li>
<</if>>
/* Levels Gained */
<<if _gained_level > 1>>
<li><<- _args[0].prefix.toUpperFirst()>> gained _gained_level levels.</li>
<<elseif _gained_level === 1>>
<li><<- _args[0].prefix.toUpperFirst()>> gained _gained_level level.</li>
<</if>>
/* Enchantress's Protection */
<<if _text_triggers.effect.protection === true>>
<<for _z = 0; _z < _args[0].effects.length; _z++>>
<<if _args[0].effects[_z].id === "Enchantress's Protection">>
<<set _raiderName to $raiders[_args[0].effects[_z].raider].name>>
<li><<- _args[0].prefix.toUpperFirst()>>'s Enchantress's Protection blocked _raiderName's attack.</li>
<<break>>
<</if>>
<</for>>
<</if>>
/* Damage Shielded */
<<for _z = 0; _z < _shield_blocked.length; _z++>>
<<if _shield_blocked[_z].shield > 0>>
<li>The _shield_blocked[_z].id absorbed _shield_blocked[_z].blocked damage.</li>
<<else>>
<li>The _shield_blocked[_z].id faded away after absorbing _shield_blocked[_z].blocked damage.</li>
<</if>>
<</for>>
<<if _creature_damage_taken > 0>>
<li><<- _args[0].prefix.toUpperFirst()>> took <span style="color:red">_creature_damage_taken</span> damage.</li>
<<else>>
<li><<- _args[0].prefix.toUpperFirst()>> took no damage.</li>
<</if>>
/* Creature Health is 0 */
<<if _args[0].cur_hp === 0 && _args[0].summoned === false>>
<li><span style="color:red"><<- _args[0].prefix.toUpperFirst()>> ran out of @@.health;Health@@ and cannot fight anymore tonight.</span></li>
<<elseif _args[0].cur_hp === 0 && _args[0].summoned === true>>
<li><span style="color:red"><<- _args[0].prefix.toUpperFirst()>> ran out of @@.health;Health@@ and cannot be summoned anymore tonight.</span></li>
<</if>>
<</widget>>
<<widget "TrapRoomText">>
/* Enchantress's Hindrance */
<<if _text_triggers.effect.hindrance === true>>
<li>Its Enchantress's Hindrance reduced each Raider's @@.aware;Awareness@@ and @@.reas;Reason@@ by 50%.</li>
<</if>>
/* Times Raiders Failed Trapchecks */
/* Count Times Triggered */
<<set _failedCount to _text_triggers.check.trapcheck_failed.length + _text_triggers.check.trapcheck_crit_failed.length>>
<<set _passedCount to _text_triggers.check.trapcheck_passed.length + _text_triggers.check.trapcheck_crit_passed.length>>
<<set _totalCount to _failedCount + _passedCount>>
/* Set Name */
<<if $raiders.length === 1>>
<<set _name to "Raider">>
<<else>>
<<set _name to "Raiders">>
<</if>>
/* Output Text */
<<if _totalCount > 1>>
<<if _failedCount === 0>>
<li>The _name passed all _totalCount @@.trap;Trapchecks@@.</li>
<<else>>
<li>The _name failed _failedCount of _totalCount @@.trap;Trapchecks@@.</li>
<</if>>
<<elseif _failedCount === _totalCount>>
<li>The _name failed the @@.trap;Trapcheck@@.</li>
<<elseif _passedCount === _totalCount>>
<li>The _name passed the @@.trap;Trapcheck@@.</li>
<</if>>
/* Total Damage Dealt */
<<set _total_dmg to 0>>
<<set _total_sex to 0>>
<<set _high_dmg to 0>>
<<set _high_sex to 0>>
<<set _atk_type to (_args[0].attack_type).toLowerCase()>>
<<for _z = 0; _z < $raiders.length; _z++>>
<<set _total_dmg += $raiders[_z].dmg_taken>>
<<set _total_sex += $raiders[_z].sex_taken>>
<<if $raiders[_z].dmg_taken > _high_dmg>>
<<set _high_dmg to clone($raiders[_z].dmg_taken)>>
<</if>>
<<if $raiders[_z].sex_taken > _high_sex>>
<<set _high_sex to clone($raiders[_z].sex_taken)>>
<</if>>
<</for>>
/* Output Text */
<<if $raiders.length > 1>>
<<if _total_dmg > _high_dmg && _total_sex > _high_sex>>
/* Output Both */
<li>The Raiders took a total of <span @class="_atk_type">_total_dmg _args[0].attack_type</span> damage and <span class="lust">_total_sex Sexual</span> damage from the trap.</li>
<<elseif _total_dmg > _high_dmg>>
/* Output only Physical/Magical Dmg */
<li>The Raiders took a total of <span @class="_atk_type">_total_dmg _args[0].attack_type</span> damage from the trap.</li>
<<elseif _total_sex > _high_sex>>
/* Output only Sexual Dmg */
<li>The Raiders took a total of <span class="lust">_total_sex Sexual</span> damage from the trap.</li>
<</if>>
<</if>>
/* Captured Text */
<<if _text_triggers.status.captured.length === $raiders.length && $raiders.length > 1>>
<li>All the Raiders were Captured.</li>
<<elseif _text_triggers.status.captured.length === $raiders.length && $raiders.length === 1>>
<li>The Raider was Captured.</li>
<<elseif _text_triggers.status.captured.length > 1>>
<li>_text_triggers.status.captured.length Raiders were Captured.</li>
<</if>>
/* Abandoned Text */
<<if _text_triggers.status.abandoned.length === $raiders.length && $raiders.length > 1>>
<li>All the Raiders Abandoned the Raid.</li>
<<elseif _text_triggers.status.abandoned.length === 1>>
<li>The Raider Abandoned the Raid.</li>
<<elseif _text_triggers.status.abandoned.length > 1>>
<li>_text_triggers.status.abandoned.length Raiders Abandoned the Raid.</li>
<</if>>
<</widget>>
<<widget "EffectEndingText">>
/* Show Effects that are ending after this turn */
<<for _e = 0; _e < _ended_effects.length; _e++>>
<li>_ended_effects[_e].effect_end</li>
<</for>>
<</widget>>
<<widget "SpellRoomText">>
/* Times Casted Spell */
<<if _args[0].cast === 1>>
<li>This is the first time you've casted this spell</li>
<<else>>
<li>You've casted this spell _args[0].cast times.</li>
<</if>>
/* Total Damage Dealt */
<<set _total_dmg to 0>>
<<set _total_sex to 0>>
<<set _high_dmg to 0>>
<<set _high_sex to 0>>
<<set _atk_type to (_args[0].attack_type).toLowerCase()>>
<<for _z = 0; _z < $raiders.length; _z++>>
<<set _total_dmg += $raiders[_z].dmg_taken>>
<<set _total_sex += $raiders[_z].sex_taken>>
<<if $raiders[_z].dmg_taken > _high_dmg>>
<<set _high_dmg to clone($raiders[_z].dmg_taken)>>
<</if>>
<<if $raiders[_z].sex_taken > _high_sex>>
<<set _high_sex to clone($raiders[_z].sex_taken)>>
<</if>>
<</for>>
/* Output Text */
<<if $raiders.length > 1>>
<<if _total_dmg > _high_dmg && _total_sex > _high_sex>>
/* Output Both */
<li>The Raiders took a total of <span @class="_atk_type">_total_dmg _args[0].attack_type</span> damage and <span class="lust">_total_sex Sexual</span> damage from your spell.</li>
<<elseif _total_dmg > _high_dmg>>
/* Output only Physical/Magical Dmg */
<li>The Raiders took a total of <span @class="_atk_type">_total_dmg _args[0].attack_type</span> damage from your spell.</li>
<<elseif _total_sex > _high_sex>>
/* Output only Sexual Dmg */
<li>The Raiders took a total of <span class="lust">_total_sex Sexual</span> damage from your spell.</li>
<</if>>
<</if>>
<</widget>>
<<widget "BlessingTriggerText">>
/* Shows Blessing Triggers for Creature, Traps, and Spells */
/* Treasure Guardian Text */
<<if _text_triggers.blessing.treasure_guardian_text === true>>
<<for _z = 0; _z < _args[0].effects.length; _z++>>
<<if _args[0].effects[_z].id === "Treasure Guardian">>
<li><<- _args[0].prefix.toUpperFirst()>> is your Treasure Guardian.</li>
<</if>>
<</for>>
<</if>>
/* Spreading Savagery Blessing */
<<if _text_triggers.blessing.spreading_savagery === true>>
<li><<- _args[0].prefix.toUpperFirst()>> and your other Creatures gained Savagery.</li>
<</if>>
/* Lewd Harvester Blessing */
<<if _text_triggers.blessing.lewd_harvester === true>>
<<set _num to 0>>
<<for _z = 0; _z < $raiders.length; _z++>>
<<if $raiders[_z].status_names.includes("Captured")>>
<<set _num++>>
<</if>>
<</for>>
<li>You restored <span class="mana">_num Mana</span> as a <<hovertip "<<- setup.blessing_00_2.tooltip>>">>Lewd Harvester<</hovertip>>.</li>
<</if>>
/* Shiny Ring Treasure */
<<set _treasureName to setup.common_treasure_08.name>>
<<set _color to setup.common_treasure_08.rarity>>
<<set _hovertip to setup.common_treasure_08.hovertip>>
<<if _text_triggers.treasure.shinyRing === true>>
<li>You've gained @@.gold;250 Gold@@ from a <<hovertip "_hovertip">><span @class='_color'>_treasureName</span><</hovertip>>.</li>
<<elseif $shinyRingTracker > 0 && _text_triggers.status.captured.length > 0>>
<li>You have Captured $shinyRingTracker <<if $shinyRingTracker === 1>>Raider<<else>>Raiders<</if>> for your <<hovertip "_hovertip">><span @class='_color'>_treasureName</span><</hovertip>>.</li>
<</if>>
/* Essence Ring Treasure */
<<set _treasureName to setup.rare_treasure_03.name>>
<<set _color to setup.rare_treasure_03.rarity>>
<<set _hovertip to setup.rare_treasure_03.hovertip>>
<<if _text_triggers.treasure.essenceRing === true>>
<li>You've gained @@.le;1 Lust Essence@@ from a <<hovertip "_hovertip">><span @class='_color'>_treasureName</span><</hovertip>>.</li>
<<elseif $essenceRingTracker > 0 && _text_triggers.status.captured.length > 0>>
<li>You have Captured $essenceRingTracker <<if $essenceRingTracker === 1>>Raider<<else>>Raiders<</if>> for your <<hovertip "_hovertip">><span @class='_color'>_treasureName</span><</hovertip>>.</li>
<</if>>
<</widget>><<widget "BetweenRoomTriggers">>
<<set $between_triggers = {
status : {
aroused: [],
aroused_cured: [],
brainwashed_cured: [],
edging: [],
edging_cured: [],
intoxicated_cured: [],
parasite: [],
poisoned: [],
poisoned_cured: [],
sticky_cured: []
},
trait : {
composure: [],
concupiscent: [],
fit: [],
impatient: [],
nasty: [],
survivalist: []
},
potion : {
restoration: [],
calming: [],
restoration_consumed: [],
calming_consumed: []
},
potion_expired : {
restoration: [],
calming: [],
faith: [],
perception: [],
grit: [],
mettle: [],
numbing: [],
fiery: [],
fortune: [],
heroic: [],
potion_info: []
},
other : {
eroticdungeon: [],
eroticdungeon_info: []
}
}>>
<</widget>>
<<widget "BetweenRoomLink">>
Determines what happens next between rooms
<<if $update_next_room === true>>
UPDATE TRIGGER
<<set $update_next_room to false>>
RESET ALL TRIGGERS
<<set $exhibitionist_trigger to false>>
<<set $exhibitionist_list to []>>
<<set $absentminded_trigger to false>>
<<set $absentminded_raider to "">>
<<set $leaking_list to []>>
<<set $birth_event_list to []>>
<<set $fear_trigger to false>>
<<set $fear_list to []>>
<<for _z = 0; _z < $raiders.length; _z++>>
EXHIBITIONIST
<<if $raiders[_z].trait_names.includes("Exhibitionist") && !$raiders[_z].status_names.includesAny("Captured", "Abandoned")>>
PERCENT BASED ON LUST
<<set _percent to ((setup.exhibitionist.float - (($raiders[_z].max_lust - $raiders[_z].cur_lust) / $raiders[_z].max_lust)) * setup.exhibitionist.mod).clamp(1, setup.exhibitionist.mod)>> _percent
CALC PERCENT
<<set _percent to Math.round(setup.exhibitionist.base * _percent)>>
RNG CHECK
<<set _rng to random(1, 100)>>
<<if _percent >= _rng>>
<<set $exhibitionist_list.push($raiders[_z].index)>>
<<set $exhibitionist_trigger to true>>
<</if>>
<</if>>
ABSENTMINDED
<<if $raiders[_z].trait_names.includes("Absent Minded") && $absentminded_trigger === false && $absentminded_room >= 0 && !$raiders[_z].status_names.includesAny("Captured", "Abandoned")>>
FIND TRAIT
<<for _t = 0; _t < $raiders[_z].traits.length; _t++>>
<<if $raiders[_z].traits[_t].name === setup.absentminded.name>>
<<if $raiders[_z].traits[_t].cd <= 0>>
RNG CHECK
<<set _rng to random(1, 100)>>
<<if setup.absentminded.percent >= _rng>>
SET TRIGGER TO TRUE
<<set $absentminded_trigger to true>>
<<set $absentminded_raider to $raiders[_z].index>>
<</if>>
<</if>>
<</if>>
<</for>>
<</if>>
LACTATION & FUTANARI
<<if ($raiders[_z].status_names.includes("Lactation") || $raiders[_z].status_names.includes("Futanari")) && !$raiders[_z].status_names.includesAny("Captured", "Abandoned")>>
ADD TO LIST, TRIGGER EVENT LATER
<<set $leaking_list.push($raiders[_z].index)>>
<</if>>
PREGNANT
<<if $raiders[_z].status_names.includes("Pregnant") && !$raiders[_z].status_names.includesAny("Captured", "Abandoned")>>
<<for _e = 0; _e < $raiders[_z].statuses.length; _e++>>
<<if $raiders[_z].statuses[_e].id === setup.pregnant.id>>
<<if $raiders[_z].statuses[_e].cd <= 0>>
<<set _newEvent to {
raider_index: clone($raiders[_z].index),
birth_type: clone($raiders[_z].statuses[_e].location),
fetish: clone($raiders[_z].statuses[_e].fetish)
}>>
<<set $birth_event_list.push(_newEvent)>>
<</if>>
<</if>>
<</for>>
<</if>>
FEAR
<<if $raiders[_z].status_names.includes(setup.fear.id) && $raiders.length === 1 && !$raiders[_z].trait_names.includes("Courageous") && !$raiders[_z].status_names.includesAny("Captured", "Abandoned")>>
FIND STATUS
<<for _s = 0; _s < $raiders[_z].statuses.length; _s++>>
<<if $raiders[_z].statuses[_s].id === setup.fear.id>>
PERCENT CHANCE TO ABANDON
<<set _percent to Math.round($raiders[_z].statuses[_s].stack * setup.fear.percent)>>
CALC CHANCE
<<set _rng to random(1, 100)>>
<<if _percent >= _rng>>
ABANDONS DUNGEON
<<set $fear_list.push($raiders[_z].index)>>
<<set $fear_trigger to true>>
<</if>>
<</if>>
<</for>>
<</if>>
<</for>>
<</if>>
<<if $exhibitionist_trigger === true>>
<<set _link to "Exhibitionist Passage">>
<<elseif $fear_trigger === true>>
<<set _link to "Fear Passage">>
<<elseif $leaking_list.length > 0>>
<<set _link to "Lactation and Futanari Event">>
<<elseif $birth_event_list.length > 0>>
PULL FIRST EVENT
<<set _birthIndex to $birth_event_list[0].raider_index>>
FIND ALL OTHER BIRTHING EVENTS FROM THE SAME RAIDER
<<for _z = 0; _z < $birth_event_list.length; _z++>>
<<if $birth_event_list[_z].raider_index === _birthIndex>>
<<set $cur_birth_event.push(clone($birth_event_list[_z]))>>
<<set _remove to $birth_event_list.deleteAt(_z)>>
<<set _z-->>
<</if>>
<</for>>
<<set _link to "Birth Event">>
<<elseif $absentminded_trigger === true>>
<<set _link to "Absent Minded Passage">>
<<elseif $is_tutoring === true && $next_room.room_type === "Treasure">>\
<<set _link to "Tutorial">>
<<else>>
<<set _link to $next_room.passage>>
<</if>>
<</widget>><<silently>>\
* SETUP ROOM *
<<RoomSetup $raiders $this_room>>
<<TrapStats $this_room>>
<<set _nasty_trigger to []>>
<<set _kinky_trigger to []>> holds list of Raiders who gained traits
* SETUP RAIDER *
<<RaiderSetup $raiders>>
* PRE COMBAT EFFECTS *
<<PreCombat $raiders $this_room>>
* DANCER BUFF *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].class === "Dancer">>
<<DancerBuff $raiders[_i] $this_room>>
<</if>>
<</for>>
* TRAPCHECKS *
Each Raider faces 2 trapchecks
<<set _times_failed to 0>>
<<set _start_count to 2>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<set _check_count to clone(_start_count)>>
<<for _a = _check_count; _a > 0; _a-->>
<<set $this_room.total_attempts++>>
<<set $this_room.report.trap_attempts++>>
<<CalcTrapcheck $raiders[_i] $this_room.cur_check>>
<<SimTrapcheck $raiders[_i] _trapcheck>>
<</for>>
<</for>>
* TOTAL CHECKS FAILED *
<<set _times_failed to _text_triggers.check.trapcheck_failed.length + _text_triggers.check.trapcheck_crit_failed.length>> TIMES FAILED FOR THIS GROUP
<<set $this_room.total_triggers += _times_failed>> INCREASE TRIGGER COUNT STAT
<<set $this_room.report.trap_successes += _times_failed>> INCREASE REPORT TRIGGER COUNT
* UPDATE RAIDER REPORT *
<<if $raiders.length > 1>>
<<if _times_failed > 1>>
<<set _entry to "Her party triggered the trap " + _times_failed + " times.">>
<<elseif _times_failed === 1>>
<<set _entry to "Her party triggered the trap once.">>
<<else>>
<<set _entry to "Her party did not trigger the trap.">>
<</if>>
<<else>>
<<if _times_failed > 1>>
<<set _entry to "She triggered the trap " + _times_failed + " times.">>
<<elseif _times_failed === 1>>
<<set _entry to "She triggered the trap once.">>
<<else>>
<<set _entry to "She did not trigger the trap.">>
<</if>>
<</if>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<</for>>
* EFFECTS DEPENDING ON TIMES FAILED *
<<for _r = 0; _r < $raiders.length; _r++>>
* CONTAMINATION *
<<if $this_room.mode === "Contamination" && _times_failed > 0>>
<<if _times_failed >= 1>>
TRUE DAMAGE
<<set _atk to Math.trunc($this_room.cur_atk * $this_room.contamination_float)>>
<<NormalAttack $raiders[_r] $this_room _atk>>
<</if>>
<<if _times_failed >= 2>>
INFLICT POISON
<<set _poisoned_stacks to Math.trunc($this_room.poisoned_float * $this_room.cur_atk)>>
<<AddStacks $raiders[_r] setup.poisoned _poisoned_stacks true>>
INCREASE ROOM STAT
<<set $this_room.total_statuses++>>
<</if>>
<<if _times_failed >= 3>>
TRUE DAMAGE BASED OFF POISON STACKS
<<for _z = 0; $raiders[_r].statuses.length; _z++>>
FIND STATUS
<<if $raiders[_r].statuses[_z].id === setup.poisoned.id>>
<<set _atk2 to Math.trunc($raiders[_r].statuses[_z].stack * $this_room.contamination_mod)>>
<<break>>
<</if>>
<</for>>
<<NormalAttack $raiders[_r] $this_room _atk2>>
<</if>>
FIND POISONED GAINED FOR REPORT
<<if $raiders[_r].status_names.includes("Poisoned")>>
<<for _s = 0; _s < $raiders[_r].statuses.length; _s++>>
<<if $raiders[_r].statuses[_s].id === setup.poisoned.id>>
<<set _poisoned_gained to $raiders[_r].statuses[_s].gain>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _poisoned_gained > 0>>
<<set _entry to "She took "+$raiders[_r].dmg_taken+" damage and gained "+_poisoned_gained+" Poison.">>
<<else>>
<<set _entry to "She took "+$raiders[_r].dmg_taken+" damage.">>
<</if>>
<<elseif $this_room.mode === "Fixation" && _times_failed > 0>>
<<if _times_failed >= 1>>
SEXUAL DAMAGE
<<set _sex to Math.trunc($this_room.cur_sex * $this_room.fixation_float)>>
<<SexualAttack $raiders[_r] $this_room _sex>>
<</if>>
<<if _times_failed >= 2>>
INFLICT AROUSED
<<set _aroused_stacks to Math.trunc($this_room.aroused_float * $this_room.cur_sex)>>
<<AddStacks $raiders[_r] setup.aroused _aroused_stacks true>>
INCREASE ROOM STAT
<<set $this_room.total_statuses++>>
<</if>>
<<if _times_failed >= 3>>
DOUBLE AROUSED
<<for _z = 0; _z < $raiders[_r].statuses.length; _z++>>
FIND STATUS
<<if $raiders[_r].statuses[_z].id === setup.aroused.id>>
<<set _double_aroused to clone($raiders[_r].statuses[_z].stack)>>
<<AddStacks $raiders[_r] setup.aroused _double_aroused false>>
<<break>>
<</if>>
<</for>>
<</if>>
FIND AROUSED GAINED FOR REPORT
<<if $raiders[_r].status_names.includes("Aroused")>>
<<for _s = 0; _s < $raiders[_r].statuses.length; _s++>>
<<if $raiders[_r].statuses[_s].id === setup.aroused.id>>
<<set _aroused_gained to $raiders[_r].statuses[_s].gain>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _aroused_gained > 0>>
<<set _entry to "She took @@.sex;"+$raiders[_r].sex_taken+"@@ damage and gained "+_aroused_gained+" Arouse.">>
<<else>>
<<set _entry to "She took @@.sex;"+$raiders[_r].sex_taken+"@@ damage.">>
<</if>>
<<elseif $this_room.mode === "Intoxication" && _times_failed > 0>>
<<if _times_failed >= 1>>
INFLICT INTOXICATION
<<AddStacks $raiders[_r] setup.intoxicated $this_room.intoxicated_stacks true>>
INCREASE ROOM STAT
<<set $this_room.total_statuses++>>
<</if>>
<<if _times_failed >= 2>>
NASTY TRAIT
<<if !$raiders[_r].trait_names.includes("Nasty")>>
ADD NASTY
<<set _newTrait to clone(setup.nasty)>>
<<set $raiders[_r].traits.push(_newTrait)>>
<<set $raiders[_r].trait_names.push(_newTrait.name)>>
<<set _delete to $raiders[_r].turnoffs.delete(setup.nasty.fetishes)>>
<<set _delete to $raiders[_r].fetishes.delete(setup.nasty.fetishes)>>
<<set $raiders[_r].kinks to $raiders[_r].kinks.concatUnique(setup.nasty.fetishes)>>
<<set _nasty_trigger.push($raiders[_r].index)>>
<</if>>
KINKY TRAIT
<<if !$raiders[_r].trait_names.includes("Kinky")>>
ADD NASTY
<<set _newTrait to clone(setup.kinky)>>
<<set $raiders[_r].traits.push(_newTrait)>>
<<set $raiders[_r].trait_names.push(_newTrait.name)>>
<<set _newFetishes to $raiders[_r].fetishes.pluckMany(setup.kinky.int)>>
<<set $raiders[_r].kinks to $raiders[_r].kinks.concat(_newFetishes)>>
<<set _kinky_trigger.push($raiders[_r].index)>>
<</if>>
<</if>>
<<if _times_failed >= 3>>
STRONGER INTOXICATION
<<for _z = 0; $raiders[_r].statuses.length; _z++>>
FIND STATUS
<<if $raiders[_r].statuses[_z].id === setup.intoxicated.id>>
ENCHANCE STATUS!
<<set $raiders[_r].statuses[_z].float to $this_room.intoxicated_float>>
<<set $raiders[_r].statuses[_z].tooltip to "Deals @@.good;15%@@ less damage, gains @@.good;15%@@ more @@.lust;Lust@@, and decreases @@.aware;Awareness@@ and @@.reas;Reason@@ by @@.good;15%@@ per Intoxicated stack. Loses a stack between floors. Max 5 stacks.">>
<<set _intoxicated_bonus_text to true>>
<<set _names to ["Wasted", "Hammered", "Sloshed", "Plastered"]>>
<<set $raiders[_r].statuses[_z].specialName to clone(_names.random())>>
<<set $raiders[_r].statuses[_z].name to $raiders[_r].statuses[_z].specialName + " x" + $raiders[_r].statuses[_z].stack>>
<<break>>
<</if>>
<</for>>
<</if>>
FIND INXOICATED GAINED FOR REPORT
<<if $raiders[_r].status_names.includes("Intoxicated")>>
<<for _s = 0; _s < $raiders[_r].statuses.length; _s++>>
<<if $raiders[_r].statuses[_s].id === setup.intoxicated.id>>
<<set _intoxicated_gained to $raiders[_r].statuses[_s].gain>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _intoxicated_gained > 0 && _nasty_trigger.includes($raiders[_r].index) && _kinky_trigger.includes($raiders[_r].index)>>
<<set _entry to "She gained "+_intoxicated_gained+" Intoxication and became Nasty and Kinky.">>
<<elseif _intoxicated_gained > 0 && _nasty_trigger.includes($raiders[_r].index)>>
<<set _entry to "She gained "+_intoxicated_gained+" Intoxication and became Nasty.">>
<<elseif _intoxicated_gained > 0 && _kinky_trigger.includes($raiders[_r].index)>>
<<set _entry to "She gained "+_intoxicated_gained+" Intoxication and became Kinky.">>
<<elseif _nasty_trigger.includes($raiders[_r].index) && _kinky_trigger.includes($raiders[_r].index)>>
<<set _entry to "She became Nasty and Kinky.">>
<<elseif _intoxicated_gained > 0>>
<<set _entry to "She gained "+_intoxicated_gained+" Intoxication.">>
<<elseif _nasty_trigger.includes($raiders[_r].index)>>
<<set _entry to "She became Nasty.">>
<<elseif _kinky_trigger.includes($raiders[_r].index)>>
<<set _entry to "She became Kinky.">>
<</if>>
<</if>>
<<if _times_failed > 0>>
UPDATE RAIDER REPORT
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_r].report.log.push(_lastLog)>>
<</if>>
<</for>>
* POST COMBAT EFFECTS *
<<for _r = 0; _r < $raiders.length; _r++>>
<<PostCombat $raiders[_r] $this_room>>
<</for>>
* CHOOSE PICTURE *
SETUP PIC ARRAY
<<set _picArray to clone($this_room.raider_pics)>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<if _times_failed >= 2>>
* FAIL MORE THAN 2 TIMES *
<<set $raiders[_i].pic to _picArray[$raiders[_i].body_type].pluck()>>
<</if>>
<</for>>
* END OF COMBAT REPORT *
<<PostCombatReport $raiders $this_room>>
* CLEAN UP *
<<CleanUp $raiders $this_room>>
* DISPLAY INFO *
<<set _cardholderID to "cardholder-raid-"+$raiders.length+"raiders">>
<<set _cardinfoID to "cardinfo-raid-"+$raiders.length+"raiders">>
<<set _picboxID to "picbox-raid-"+$raiders.length+"raiders">>
<<set _textboxID to "textbox-raid-"+$raiders.length+"raiders">>
<</silently>>\
<div class="section">\
<<NextRoomButton>>\
<div class="cardholder-raid-playerside">\
<div class="cardinfo-raid-trap">\
<div class="roomtitle-raid-player">\
Floor $cur_room_num
</div>\
<div class="picbox-raid-player">\
$this_room.pic
</div>\
<div class="namebox-raid-player">\
<strong>$this_room.name</strong>
---- $this_room.check_type: $this_room.cur_check ----
</div>\
<div class="textbox-raid-player">\
<ul>\
<<TrapRoomText $this_room>>
<<if _times_failed >= 3 && $this_room.mode === "Fixation">>\
<li>Each Raiders' <<hovertip "<<-setup.aroused.tooltip>>">>Aroused<</hovertip>> stacks doubled.</li>\
<<elseif _times_failed >= 3 && $this_room.mode === "Intoxication">>\
<li>Each Raiders' <<hovertip "<<-setup.intoxicated.tooltip>>">>Intoxicated<</hovertip>> Status became more potent.</li>\
<<elseif _times_failed >= 3 && $this_room.mode === "Contamination">>\
<li>Each Raider took significant more damage.</li>\
<</if>>\
<<BlessingTriggerText $this_room>>
<<EffectEndingText $this_room>>
</ul>\
</div>\
</div>\
</div>\
<div class="cardholder-raid-raiderside">\
<<for _r = 0; _r < $raiders.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_textboxID">\
<ul>\
<<DancerDanceText $raiders[_r] $this_room>>
<<set _fail_count to _text_triggers.check.trapcheck_crit_failed.count($raiders[_r].index) + _text_triggers.check.trapcheck_failed.count($raiders[_r].index)>>\
<<if _fail_count === 0>>\
<li><<if _text_triggers.check.trapcheck_crit_passed.includes($raiders[_r].index)>><strong>Critical Success!</strong> <</if>>She navigated her way through the corridor without triggering the trap.</li>\
<<elseif _fail_count === 1>>\
<li><<if _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)>><strong>Critical Failure!</strong> <</if>>As she headed down the hallway, she accidentally triggered a pressure plate.</li>\
<<elseif _fail_count > 1>>\
<li><<if _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)>><strong>Critical Failure!</strong> <</if>>While walking down the corridor, she triggered the trap _fail_count times.</li>\
<</if>>
<<if $raiders[_r].dmg_taken > 0>>\
<li>After breathing in the poison gas, she took $raiders[_r].dmg_taken True damage.</li>\
<<elseif $raiders[_r].sex_taken > 0>>\
<li>After breathing in the aphrodisiac gas, she took @@.sex;$raiders[_r].sex_taken Sexual@@ damage.</li>\
<<RaiderFetishText $raiders[_r] $this_room>>
<<elseif _nasty_trigger.includes($raiders[_r].index) && _kinky_trigger.includes($raiders[_r].index)>>\
<li>After breathing in the intoxicating gas, she became <<hovertip '<<- setup.nasty.tooltip>>'>>Nasty<</hovertip>> and <<hovertip '<<- setup.kinky.tooltip>>'>>Kinky<</hovertip>>.</li>\
<<elseif _nasty_trigger.includes($raiders[_r].index)>>
<li>After breathing in the intoxicating gas, she became <<hovertip '<<- setup.nasty.tooltip>>'>>Nasty<</hovertip>>.</li>\
<<elseif _kinky_trigger.includes($raiders[_r].index)>>\
<li>After breathing in the intoxicating gas, she became <<hovertip '<<- setup.kinky.tooltip>>'>>Kinky<</hovertip>>.</li>\
<</if>>\
<<PostCombatText $raiders[_r] $this_room>>
</ul>\
</div>\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\<<widget "CastingSpell">>
_args[0].name is spell, _args[1] is mana cost
TUTORIAL
<<if $is_tutoring === true>>
<<if $raid_tutorial === 1>>
<<set $raid_tutorial++>>
<</if>>
<</if>>
DISABLE BRAINWASHED TRIG
<<set _noBrainTrig to true>>
UPDATE NEXT ROOM TRIGGER
<<set $update_next_room to true>>
REDUCE MANA
<<set $pc_cur_mana -= _args[1]>>
INCREASE PLAYER STATS
<<set $pc_cast_spells++>>
INCREASE SPELL COUNT
<<set _args[0].cast++>>
PATRICIA UNLOCK MISSION
<<if $missionLog.patricia.num === 0 && $missionLog.patricia.unlocked === false && $dungeon_rank >= setup.patriciaMisLine[$missionLog.patricia.num].rank>>
<<set $missionLog.patricia.int++>>
<<if $missionLog.patricia.int >= setup.patriciaMisLine[$missionLog.patricia.num].spell_goal>>
<<set $missionLog.patricia.unlocked to true>>
<<set $newMission_bool to true>>
<</if>>
<</if>>
SETS SUPPORTING ROLE TRIGGER TO TRUE AFTER CASTING SUPPORT SPELL
<<if _args[0].type === "Supportive" && _args[1] === 0 && $spell_blessing_bool.supporting_role === true>>
<<set $spell_blessing_bool.supporting_role to false>>
<</if>>
SETS SPELL SLINGER TRIGGER TO TRUE AFTER CASTING INFLICTION SPELL
<<if _args[0].type === "Infliction" && _args[1] === 0 && $spell_blessing_bool.spell_slinger === true>>
<<set $spell_blessing_bool.spell_slinger to false>>
<</if>>
<</widget>>
<<silently>>\
* Variables *
<<set _floor_names to ["Floor One", "Floor Two", "Floor Three", "Floor Four", "Floor Five", "Floor Six", "Floor Seven", "Floor Eight", "Floor Nine", "Floor Ten", "Floor Eleven", "Floor Twelve"]>> Display name for each room
* Calc Rate Buff *
OVERLOAD SPELL
<<if $overloadSpellBool === true>>
SPELL OVERLOADED
<<set $pc_spellbook[$spell_index].cur_shield += (Math.round($pc_spellbook[$spell_index].cur_shield * setup.blessing_02_12.float)).clamp(1, 1000000)>>
PREVENT OVERLOADING SPELL AGAIN
<<set $overloadSpellBool to false>>
<</if>>
*Display*
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<span id="back"><<button [[Back|View Spells]]>><<unset $mana_cost, $spell_index>><</button>></span>
</div>\
<div class="titlebox">\
$pc_spellbook[$spell_index].title
</div>\
<div class="tableholder-manager">\
<<for _i = 0; _i < $dungeon_floor_list.length; _i++>>\
<<set _hotKey to _i + 1>>\
<div class="cell-manager">\
<div class="cell-textholder-manager">\
<<- _floor_names[_i]>>
<<if $dungeon_floor_list[_i].room_type === "Creature" && $pc_cur_mana >= $mana_cost>>\
<<silently>>\
CHECK IF ROOM HAS EFFECT AND IF ITS LESS THAN AMOUNT GIVEN
<<set _bool to true>>
<<if $dungeon_floor_list[_i].effect_names.includes($pc_spellbook[$spell_index].id)>>
<<for _z = 0; _z < $dungeon_floor_list[_i].effects.length; _z++>>
<<if $dungeon_floor_list[_i].effects[_z].id === $pc_spellbook[$spell_index].id>>
<<if $dungeon_floor_list[_i].effects[_z].shield >= $pc_spellbook[$spell_index].cur_shield>>
<<set _bool to false>>
<</if>>
<<break>>
<</if>>
<</for>>
<</if>>
<</silently>>\
<<if $dungeon_floor_list[_i].cur_hp > 0 && _bool === true>>\
<<capture _i, _hotKey>>\
<span @id="_hotKey"><<button "Cast ^^_hotKey^^" "View Spells">>\
<<silently>>\
REMOVE OLD SHIELD
<<if $dungeon_floor_list[_i].effect_names.includes($pc_spellbook[$spell_index].id)>>
<<for _z = 0; _z < $dungeon_floor_list[_i].effects.length; _z++>>
<<if $dungeon_floor_list[_i].effects[_z].id === $pc_spellbook[$spell_index].id>>
<<set _delete to $dungeon_floor_list[_i].effects.deleteAt(_z)>>
<<set _deleteName to $dungeon_floor_list[_i].effect_names.delete($pc_spellbook[$spell_index].id)>>
<<break>>
<</if>>
<</for>>
<</if>>
CREATE EFFECT
<<set _newBuff to clone(setup.creature_effect)>>
<<set _newBuff.id to $pc_spellbook[$spell_index].id>>
<<set _newBuff.effect_types to $pc_spellbook[$spell_index].effect_types>>
<<set _newBuff.pres_int to $pc_spellbook[$spell_index].cur_res>>
<<set _newBuff.mres_int to $pc_spellbook[$spell_index].cur_res>>
<<set _newBuff.shield to $pc_spellbook[$spell_index].cur_shield>>
<<set _newBuff.effect_end to $pc_spellbook[$spell_index].effect_end>>
<<set _newBuff.duration to $pc_spellbook[$spell_index].cur_duration>>
<<set _newBuff.icon to setup.effect_icons.spell>>
UPDATE NAME AND TOOLTIP
<<set _newBuff.name to _newBuff.id +" ("+_newBuff.shield+")">>
<<set _newBuff.tooltip to "This Creature is shielded by your Black Shield and its @@.pres;Physical Resistance@@ and @@.mres;Magical Resistance@@ are increased by "+$pc_spellbook[$spell_index].cur_res+" while the shield persists.">>
ADD EFFECT
<<set $dungeon_floor_list[_i].effects.push(_newBuff)>>
<<set $dungeon_floor_list[_i].effect_names.push(_newBuff.id)>>
CASTING SPELL WIDGET
<<CastingSpell $pc_spellbook[$spell_index] $mana_cost>>
UNSET
<<unset $mana_cost, $spell_index>>
<</silently>>\
<</button>></span>\
<</capture>>\
<<else>>\
<div class="offbutton">\
<<button "Cast">><</button>>
</div>\
<</if>>\
<<else>>\
<div class="offbutton">\
<<button "Cast">><</button>>
</div>\
<</if>>\
</div>\
<div class="cell-picholder-manager">\
$dungeon_floor_list[_i].pic
</div>\
</div>\
<</for>>\
</div>\
</div>\
<<widget "AddStatus">>
_args[0].name gains _args[1].id status
trigger text: _args[2]
ADDS NON STACKING STATUS AND TRIGGERS TEXT IF ADDED
ADD STATUS
<<if !_args[0].status_names.includes(_args[1].id)>>
<<if _args[1].id === setup.wet.id && _args[0].trait_names.includes(setup.dry.id)>>
CANNOT GAIN WET STATUS
<<set _dry_text.push(_args[0].index)>>
<<else>>
<<set _newStatus to clone(_args[1])>>
<<set _args[0].statuses.push(_newStatus)>>
<<set _args[0].status_names.push(_newStatus.id)>>
<<if _args[2]>>
TEXT TRIGGER
<<set _text_triggers.status[_newStatus.trigger].push(_args[0].index)>>
<</if>>
TRIGGER STATUS EFFECTS
<<switch _args[1].id>>
<<case "Brainwashed">>
FIND STATUS
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
<<if _args[0].statuses[_z].id === "Brainwashed">>
REDUCE AWARENESS AND REASON
<<set _args[0].cur_aware -= (Math.round(_args[0].cur_aware * _args[0].statuses[_z].float)).clamp(1, 1000000)>>
<<set _args[0].cur_reas -= (Math.round(_args[0].cur_aware * _args[0].statuses[_z].float)).clamp(1, 1000000)>>
<<break>>
<</if>>
<</for>>
<<case "Perverted">>
<<if _args[0].status_names.includes("Twisted")>>
<<set _args[0].cur_reas += (Math.round(_args[0].cur_reas * setup.perverted.float)).clamp(1, 1000000)>>
<<set _args[0].cur_aware += (Math.round(_args[0].cur_aware * setup.perverted.float)).clamp(1, 1000000)>>
<<else>>
<<set _args[0].cur_reas -= (Math.round(_args[0].cur_reas * setup.perverted.float)).clamp(1, 1000000)>>
<<set _args[0].cur_aware -= (Math.round(_args[0].cur_aware * setup.perverted.float)).clamp(1, 1000000)>>
<</if>>
<<case "Stripped">>
<<set _args[0].cur_end -= (Math.round(_args[0].cur_end * setup.stripped.float)).clamp(1, 1000000)>>
<<set _args[0].cur_pers -= (Math.round(_args[0].cur_pers * setup.stripped.float)).clamp(1, 1000000)>>
<<set _args[0].cur_toler -= (Math.round(_args[0].cur_toler * setup.stripped.float)).clamp(1, 1000000)>>
<</switch>>
<</if>>
<</if>>
<</widget>>
<<widget "AddStacks">>
_args[2] stacks of _args[1].id status are inflicted to _args[0].name
trigger text: _args[3]
ADD STATUS IF THEY DONT ALREADY HAVE
<<if !_args[0].status_names.includes(_args[1].id)>>
<<set _newStatus to clone(_args[1])>>
<<set _args[0].statuses.push(_newStatus)>>
<<set _args[0].status_names.push(_newStatus.id)>>
<</if>>
ADD STACKS TO STATUS
<<for _s = 0; _s < _args[0].statuses.length; _s++>>
<<if _args[0].statuses[_s].id === _args[1].id>>
<<if _args[0].statuses[_s].stack < _args[0].statuses[_s].max_stack>>
ADD STACKS
<<set _args[0].statuses[_s].stack += _args[2]>>
<<set _args[0].statuses[_s].gain += _args[2]>>
OTHER EFFECTS
OPHIDIAN CHOKER TREASURE
<<if $treasureroom_inventory.count("Ophidian Choker") > 0 && _args[1].id === setup.poisoned.id>>
INCREASE POISONED STACKS GAINED
<<set _args[0].statuses[_s].stack += setup.uncommon_treasure_01.int * $treasureroom_inventory.count("Ophidian Choker")>>
<<set _args[0].statuses[_s].gain += setup.uncommon_treasure_01.int * $treasureroom_inventory.count("Ophidian Choker")>>
<</if>>
HEART PENDANT TREASURE
<<if $treasureroom_inventory.count("Heart Pendant") > 0 && _args[1].id === setup.aroused.id>>
INCREASE AROUSED STACKS GAINED
<<set _args[0].statuses[_s].stack += setup.uncommon_treasure_03.int * $treasureroom_inventory.count("Heart Pendant")>>
<<set _args[0].statuses[_s].gain += setup.uncommon_treasure_03.int * $treasureroom_inventory.count("Heart Pendant")>>
<</if>>
CLAMP
<<set _args[0].statuses[_s].stack to Math.clamp(_args[0].statuses[_s].stack, 0, _args[0].statuses[_s].max_stack)>>
UPDATE NAME
<<set _args[0].statuses[_s].name to _args[1].id+" x" + _args[0].statuses[_s].stack>>
<<if _args[3] === true>>
TEXT TRIGGER
<<set _text_triggers.status[_args[0].statuses[_s].trigger].push(_args[0].index)>>
<</if>>
<</if>>
<<break>>
<</if>>
<</for>>
<</widget>>
<<widget "PregnantCheck">>
_args[0].name is raider, _args[1].name is room, _args[2] is impregnation rate
PREGNANT CHECK
CHECK IF RAIDER IS PREGNANT IN THAT LOCATION
<<set _list to []>>
<<if _args[0].status_names.includes(setup.pregnant.id)>>
<<for _q = 0; _q < _args[0].statuses.length; _q++>>
<<if _args[0].statuses[_q].id === setup.pregnant.id>>
<<set _list.push(_args[0].statuses[_q].location)>>
HER _args[0].statuses[_q].location ARE IMPREGNANTED ALREADY
<</if>>
<</for>>
<</if>>
<<if !_list.includes(_args[1].pregnant_target)>>
FERTILE PREGNANT RATE
<<if _args[0].trait_names.includes("Fertile")>>
<<set _amount to Math.trunc(_args[2] * setup.fertile.float)>>
<<set _pregnant_rate to _args[2] + _amount>>
NORMAL PREGNANT RATE
<<else>>
<<set _pregnant_rate to _args[2]>>
<</if>>
MARK OF FERTILITY
<<if _args[0].status_names.includes("Mark of Fertility")>>
<<set _pregnant_rate to setup.mark_of_fertility.percent>>
<<set _mark_fertile_text.push(_cur_girl.index)>>
REMOVE MARK
<<for _e = 0; _e < _args[0].statuses.length; _e++>>
<<if _args[0].statuses[_e].id === setup.mark_of_fertility.id>>
<<set _delete to _args[0].statuses.deleteAt(_e)>>
<<break>>
<</if>>
<</for>>
<</if>>
<<set _rng to random(1, 100)>>
<<if _pregnant_rate >= _rng>>
_args[0].name BECAME PREGNANT IN HER _args[1].pregnant_target
<<set _status to clone(setup.pregnant)>>
<<set _status.name to _args[1].pregnant_target + " Impregnated">>
<<set _status.location to _args[1].pregnant_target>>
<<set _status.cd to random(_args[1].min_pregnant, _args[1].max_pregnant)>>
ADD FETISH
<<switch _args[1].pregnant_target>>
<<case "Anus">>
<<set _status.fetish to "Ass">>
<<set _text_triggers.status.anus_pregnant.includes(_args[0].index)>>
<<case "Breasts">>
<<set _status.fetish to "Breasts">>
<<set _text_triggers.status.breasts_pregnant.includes(_args[0].index)>>
<<case "Womb">>
<<set _status.fetish to "Pussy">>
<<set _text_triggers.status.womb_pregnant.includes(_args[0].index)>>
<</switch>>
PUSH STATUS
<<set _args[0].statuses.push(_status)>>
<<set _args[0].status_names.push(_status.id)>>
UPDATE RAIDER REPORT
<<switch _args[1].pregnant_target>>
<<case "Anus">>
<<set _entry to "Her anus was impregnated.">>
<<set _text_triggers.status.anus_pregnant.push(_args[0].index)>>
<<case "Breasts">>
<<set _entry to "Her breasts were impregnated.">>
<<set _text_triggers.status.breasts_pregnant.push(_args[0].index)>>
<<case "Womb">>
<<set _entry to "Her womb was impregnated.">>
<<set _text_triggers.status.womb_pregnant.push(_args[0].index)>>
<</switch>>
<<set _lastLog to _args[0].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set _args[0].report.log.push(_lastLog)>>
<<else>>
_args[1].name DID NOT IMPREGNANT _args[0].name
<</if>>
<</if>>
<</widget>>
<<widget "RemoveStatus">>
_args[0].name is Raider, _args[1].id is Status
<<if _args[0].status_names.includes(_args[1].id)>>
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
<<if _args[1].id === _args[0].statuses[_z].id && (_args[1].id === setup.stimulated.id || _args[1].id === setup.brainwashed.id)>>
<<if _args[0].statuses[_z].permanent_bool === false>>
<<set _remove to _args[0].statuses.deleteAt(_z)>>
<<set _remove to _args[0].status_names.delete(_args[1].id)>>
<<break>>
<<else>>
STATUS IS PERMANENT
<</if>>
<<elseif _args[1].id === _args[0].statuses[_z].id>>
<<set _remove to _args[0].statuses.deleteAt(_z)>>
<<set _remove to _args[0].status_names.delete(_args[1].id)>>
<<break>>
<</if>>
<</for>>
<</if>>
<</widget>>
<<if $spell_targeting === true>>\
<<silently>>\
*Variables*
<<set _spell_percent_list to []>> Holds all the spell percent for each raider
* Overload Spellcheck *
<<if $overloadSpellBool === true>>
<<set $pc_spellbook[$spell_index].cur_check += (Math.round($pc_spellbook[$spell_index].cur_check * setup.blessing_02_12.float)).clamp(1, 1000000)>>
<</if>>
* Setup Raiders *
<<RaiderSetup $raiders>>
*Calc Percent for each Raider*
<<for _i = 0; _i < $raiders.length; _i++>>
ADD PERCENT BASED ON RAIDERS MISSING HEALTH
<<set _checkMod to (((setup.lure_spell.float - (($raiders[_i].max_lust - $raiders[_i].cur_lust) / $raiders[_i].max_lust)) * setup.lure_spell.mod).clamp(1, setup.lure_spell.mod)).clamp(1, setup.lure_spell.mod)>> _checkMod
SET SPELLCHECK
<<set _base_check to Math.round($pc_spellbook[$spell_index].cur_check * _checkMod)>> BASE SPELLCHECK: _base_check
CALC CHANCE
<<CalcSpellcheck $raiders[_i] _base_check "Player">>
SET RAIDERS SPELL PERCENT
<<set _spell_percent_list.push(clone(_spellcheck))>>
<</for>>
* Display Info *
<<set _cardholderID to "cardholder-"+$raiders.length+"girls">>
<<set _cardinfoID to "cardinfo-"+$raiders.length+"girls">>
<<set _picboxID to "picbox-"+$raiders.length+"girls">>
<<set _textboxID to "textbox-"+$raiders.length+"girls">>
<<set _linkboxID to "linkbox-targeting-"+$raiders.length+"girls">>
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<span id="back"><<button [[Back|View Spells]]>><<unset $mana_cost>><</button>></span>
</div>\
<div class="titlebox">\
Choose a Target
</div>\
<<for _r = 0; _r < $raiders.length; _r++>>\
<<set _hotKey to _r + 1>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
<div @class="_textboxID">\
Name: $raiders[_r].name
Class: $raiders[_r].subclass.name $raiders[_r].class
Role: $raiders[_r].role
Traits: <<for _i = 0; _i < $raiders[_r].traits.length; _i++>>\
<<if $raiders[_r].traits[_i].type === "Special">>\
<span style="color:gold"><<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>></span><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<<else>>\
<<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<</if>>\
<</for>>
Kinks: <<if $raiders[_r].kinks.length === 0>>None<<else>>$raiders[_r].kinks<</if>>
Turn-Offs: <<if $raiders[_r].turnoffs.length === 0>>None<<else>>$raiders[_r].turnoffs<</if>>
Statuses: <<if $raiders[_r].statuses.length == 0>>\
None
<<else>>\
<<for _i = 0; _i < $raiders[_r].statuses.length; _i++>>\
<<hovertip "$raiders[_r].statuses[_i].tooltip">>$raiders[_r].statuses[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].statuses.length>>, <</if>><</for>><</if>>
</div>\
</div>\
<div @class="_linkboxID">\
<<if _spell_percent_list[_r] <= 39>>\
<<set _color to "bad">>\
<<elseif _spell_percent_list[_r] <= 69>>\
<<set _color to "neutral">>\
<<else>>\
<<set _color to "good">>\
<</if>>\
$pc_spellbook[$spell_index].name Success Rate: <span @class="_color">_spell_percent_list[_r]%</span> \
<<capture _r, _hotKey>>\
<span @id="_hotKey"><<button "Target Raider ^^_hotKey^^" $pc_spellbook[$spell_index].passage>><<unset $spell_targeting>><<set $target to _r>><<set $spell_percent to _spell_percent_list[_r]>><</button>></span>
<</capture>>\
</div>\
</div>\
<</for>>\
</div>\
<<else>>\
<<silently>>\
* Cast Spell *
<<CastingSpell $pc_spellbook[$spell_index] $mana_cost>>
* Setup Raiders *
<<RaiderSetup $raiders>>
CALC CHANCE
<<SimSpellcheck $raiders[$target] $spell_percent "Player">>
<<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[$target].index) || _text_triggers.check.spellcheck_failed.includes($raiders[$target].index)>>
UPDATE CAST BOOL
<<set $pc_spellbook[$spell_index].cast_bool to false>>
SET GIF
<<set _gif to $pc_spellbook[$spell_index].gif>>
UPDATE GIRL INFO
<<set $raiders[$target].captured_by to $pc_spellbook[$spell_index].name>>
<<AddStatus $raiders[$target] setup.captured true>>
UPDATE REPORT
<<set _entry to "You casted Lure, making her run harmlessly to your prison cells.">>
<<set _lastLog to $raiders[$target].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[$target].report.log.push(_lastLog)>>
SET RAIDER REPORT RESULT
<<set _result to "She was Captured by your Lure Spell.">>
SET GENERAL CAPTURE PICS
<<GeneralCaptureImgs>>
<<set $raiders[$target].report.result to _result>>
<<set $raiders[$target].report.result_pic to _raiderCaptureImgs[$raiders[$target].body_type].random()>>
PUSH REPORT TO LIST
<<set $raider_report_list.push($raiders[$target].report)>>
<<else>>
UPDATE REPORT
<<set _entry to "You casted Lure, but it failed.">>
<<set _lastLog to $raiders[$target].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[$target].report.log.push(_lastLog)>>
SET GIF
<<set _gif to setup.spell_failed_gif_list.random()>>
<</if>>
*Display*
<</silently>>\
<div class="section">\
<<NextSpellButton>>\
<div class="titlebox">\
$pc_spellbook[$spell_index].name Spell
</div>\
<div class="imagebox">\
_gif
</div>\
<div class="textbox-center">\
<<if _text_triggers.check.spellcheck_crit_failed.includes($raiders[$target].index)>>\
<strong>Critical Failure!</strong> PLACEHOLDER
<<elseif _text_triggers.check.spellcheck_failed.includes($raiders[$target].index)>>\
FAILED PLACEHOLDER
<<elseif _text_triggers.check.spellcheck_crit_passed.includes($raiders[$target].index)>>\
<strong>Critical Success!</strong> PASSED PLACEHOLDER
<<else>>\
PASSED PLACEHOLDER
<</if>>
<<if _text_triggers.blessing.resourceful_sorcerer === true && $modifiers.blessing.resourceful_sorcerer === 1>>\
<li>You recovered the spell's @@.mana;Mana Cost@@ after it failed.</li>\
<<elseif _text_triggers.blessing.resourceful_sorcerer === true && $modifiers.blessing.resourceful_sorcerer < 1>>\
<li>You recovered half of the spell's @@.mana;Mana Cost@@ after it failed.</li>\
<</if>>\
</div>\
</div>\
<</if>>\<<widget "PostCombatReport">>
_args[0].length is raider party size and _args[1].name is current room
<<if $is_tutoring !== true>>
<<for _z = 0; _z < _args[0].length; _z++>>
<<if _args[0][_z].status_names.includes(setup.captured.id)>>
<<if _args[1].summoned === true>>
<<if $cur_room_num === 0>>
SET RAIDER LOG RESULT
<<set _result to "She was Captured by the " + _args[1].name + " you summoned at the dungeon's entrance.">>
<<set _args[0][_z].report.result to clone(_result)>>
<<set _args[0][_z].report.result_pic to _args[0][_z].pic>>
PUSH LOG
<<set $raider_report_list.push(_args[0][_z].report)>>
<<else>>
SET RAIDER LOG RESULT
<<set _result to "She was Captured by the " + _args[1].name + " you summoned after Floor " + $cur_room_num + ".">>
<<set _args[0][_z].report.result to clone(_result)>>
<<set _args[0][_z].report.result_pic to _args[0][_z].pic>>
PUSH LOG
<<set $raider_report_list.push(_args[0][_z].report)>>
<</if>>
<<else>>
SET RAIDER LOG RESULT
<<set _result to "She was Captured by the " + _args[1].name + " on Floor " + _args[1].room_num + ".">>
<<set _args[0][_z].report.result to clone(_result)>>
<<set _args[0][_z].report.result_pic to _args[0][_z].pic>>
PUSH LOG
<<set $raider_report_list.push(_args[0][_z].report)>>
<</if>>
<<elseif _args[1].room_type === "Creature" && _args[1].cur_hp <= 0>>
<<if _args[0].length > 1>>
<<set _entry to "Her party was able to defeat the "+_args[1].name+" and moved to the next Floor.">>
<<else>>
<<set _entry to "She defeated the "+_args[1].name+" and moved to the next Floor.">>
<</if>>
<<set _lastLog to _args[0][_z].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set _args[0][_z].report.log.push(_lastLog)>>
<<elseif _args[1].room_type === "Creature">>
<<set _entry to "She fought pass the "+_args[1].name+" and moved to the next Floor.">>
<<set _lastLog to _args[0][_z].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set _args[0][_z].report.log.push(_lastLog)>>
<<elseif _args[1].room_type === "Trap" && _args[1].base_name != "Puzzle Room">>
<<set _entry to "She escaped the "+_args[1].name+" and moved to the next Floor.">>
<<set _lastLog to _args[0][_z].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set _args[0][_z].report.log.push(_lastLog)>>
<</if>>
<</for>>
<</if>>
<</widget>><<silently>>\
* SETUP ROOM *
<<set _summon to clone($summon)>>
<<set _spell_index to clone($spell_index)>>
<<set _target to clone($spell_targeting)>>
<<unset $summon, $target, $spell_index>>
<<SummonRoomSetup $raiders _summon>>
* SETUP RAIDER *
<<RaiderSetup $raiders _summon>>
* PRE COMBAT EFFECTS *
<<PreCombat $raiders _summon>>
* DANCER BUFF *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].class === "Dancer">>
<<DancerBuff $raiders[_i] _summon>>
<</if>>
<</for>>
* GAIN FETISHES *
<<set _newFetishes to _summon.addition_fetishes.randomMany(_summon.int)>>
<<set _summon.fetishes to _summon.fetishes.concat(_newFetishes)>>
* RAIDERS ATTACK *
<<for _i = 0; _i < $raiders.length; _i++>>
<<RaiderAttack $raiders[_i] _summon>>
<</for>>
* CREATURE NORMAL & SEXUAL ATTACK *
<<set $raiders[_target].attacked to true>>
<<for _i = 0; _i < $raiders.length; _i++>>
$raiders[_i].attacked
<<if $raiders[_i].attacked === true>>
<<NormalAttack $raiders[_i] _summon _summon.atk>>
<<SexualAttack $raiders[_i] _summon _summon.sex>>
UPDATE RAIDER REPORT
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage.">>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<</if>>
<</for>>
* POST COMBAT EFFECTS *
<<for _r = 0; _r < $raiders.length; _r++>>
<<PostCombat $raiders[_r] _summon>>
<</for>>
* CHOOSE RAIDER PICTURES *
SETUP RAIDER PICS ARRAY
<<set _picArray to clone(_summon.raider_pics)>>
<<for _i = 0; _i < $raiders.length; _i++>>
* Attacked Pictures *
<<if $raiders[_i].attacked === true>>
<<set $raiders[_i].pic to _picArray[$raiders[_i].body_type].pluck()>>
<</if>>
<</for>>
* CREATURE EXP & DAMAGE *
<<CreaturePostCombat $raiders _summon>>
* END OF COMBAT REPORT *
<<PostCombatReport $raiders _summon>>
* CLEAN UP *
<<CleanUp $raiders _summon>>
* DISPLAY INFO *
<<set _cardholderID to "cardholder-raid-"+$raiders.length+"raiders">>
<<set _cardinfoID to "cardinfo-raid-"+$raiders.length+"raiders">>
<<set _picboxID to "picbox-raid-"+$raiders.length+"raiders">>
<<set _textboxID to "textbox-raid-"+$raiders.length+"raiders">>
<</silently>>\
<div class="section">\
<<NextSpellButton>>\
<div class="cardholder-raid-playerside">\
<div class="cardinfo-raid-summon">\
<div class="roomtitle-raid-player">\
Between Floors
</div>\
<div class="picbox-raid-player">\
_room_image
</div>\
<div class="namebox-raid-player">\
<strong>_summon.name</strong>
---- Health: _summon.cur_hp / _summon.max_hp ----
</div>\
<div class="textbox-raid-player">\
<ul>\
<li>You summoned Imps with the _newFetishes[0] and _newFetishes[1] Fetishes.</li>\
<<CreatureRoomText _summon>>
<<BlessingTriggerText _summon>>
<<EffectEndingText _summon>>
</ul>\
</div>\
</div>\
</div>\
<div class="cardholder-raid-raiderside">\
<<for _r = 0; _r < $raiders.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_textboxID">\
<ul>\
<<RaiderAtkText $raiders[_r] _summon>>\
<<if $raiders[_r].attacked === true>>\
<li>The Imps surrounded her, focusing on all their favorite places and dealing <span style="color:orange">$raiders[_r].dmg_taken</span> Physical damage and <span style="color:fuchsia">$raiders[_r].sex_taken</span> Sexual damage to her.</li>\
<<RaiderFetishText $raiders[_r] _summon>>
<</if>>\
<<PostCombatText $raiders[_r] _summon>>
</ul>\
</div>\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\<<if $spell_targeting === true>>\
<<silently>>\
* Display Info *
<<set _cardholderID to "cardholder-"+$raiders.length+"girls">>
<<set _cardinfoID to "cardinfo-"+$raiders.length+"girls">>
<<set _picboxID to "picbox-"+$raiders.length+"girls">>
<<set _textboxID to "textbox-"+$raiders.length+"girls">>
<<set _linkboxID to "linkbox-targeting-"+$raiders.length+"girls">>
<</silently>>\
<div class="exit-link-right">\
<<button [[Back|View Spells]]>><<unset $mana_cost, $spell_index>><</button>>
</div>\
<div class="titlebox">\
Choose a Target
</div>\
<<for _r = 0; _r < $raiders.length; _r++>>\
<<set _hotKey to _r + 1>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
<div @class="_textboxID">\
Name: $raiders[_r].name
Class: $raiders[_r].subclass.name $raiders[_r].class
Role: $raiders[_r].role
Traits: <<for _i = 0; _i < $raiders[_r].traits.length; _i++>>\
<<if $raiders[_r].traits[_i].type === "Special">>\
<span style="color:gold"><<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>></span><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<<else>>\
<<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<</if>>\
<</for>>
Kinks: <<if $raiders[_r].kinks.length === 0>>None<<else>>$raiders[_r].kinks<</if>>
Turn-Offs: <<if $raiders[_r].turnoffs.length === 0>>None<<else>>$raiders[_r].turnoffs<</if>>
Statuses: <<if $raiders[_r].statuses.length == 0>>\
None
<<else>>\
<<for _i = 0; _i < $raiders[_r].statuses.length; _i++>>\
<<hovertip "$raiders[_r].statuses[_i].tooltip">>$raiders[_r].statuses[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].statuses.length>>, <</if>><</for>><</if>>
</div>\
</div>\
<div @class="_linkboxID">\
<<capture _r, _hotKey>>\
<span @id="_hotKey"><<button "Target Raider ^^_hotKey^^" $pc_spellbook[$spell_index].passage>><<set $spell_targeting to _r>><</button>></span>\
<</capture>>\
</div>\
</div>\
<</for>>\
<<else>>\
<<silently>>\
* Variables *
* Set Summoned Creature *
<<for _s = 0; _s < setup.summon_list.length; _s++>>
<<if setup.summon_list[_s].base_name === $pc_spellbook[$spell_index].summon_creature>>
<<set $summon to clone(setup.summon_list[_s])>>
<<break>>
<</if>>
<</for>>
* Set Summon Creatures Stats *
<<set _level to Math.clamp(Math.trunc($pc_level * $pc_spellbook[$spell_index].level_float), 1, $pc_level)>>
<<set $summon.level to clone(_level)>>
<<set $summon.summoned to true>> prevents creature from gaining exp
<<for _z = _level; _z > 0; _z-->>
<<set $summon.max_hp += $summon.lvl_hp>>
<<set $summon.atk += $summon.lvl_atk>>
<<set $summon.pres += $summon.lvl_pres>>
<<set $summon.mres += $summon.lvl_mres>>
<<set $summon.sex += $summon.lvl_sex>>
<</for>>
SUMMON MODIFIER
<<set _blessing to $pc_blessing_list.delete("Summoner's Aid I", "Summoner's Aid II", "Summoner's Aid III")>>
<<if _blessing. length > 0>>
<<for _z = 0; _z < setup.allBlessingList.mastery.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.mastery[_z].name)>>
INCREASE STATS
<<set $summon.max_hp += (Math.trunc($summon.max_hp * setup.allBlessingList.mastery[_z].float)).clamp(1, 1000000)>>
<<set $summon.atk += (Math.trunc($summon.atk * setup.allBlessingList.mastery[_z].float)).clamp(1, 1000000)>>
<<set $summon.pres += (Math.trunc($summon.pres * setup.allBlessingList.mastery[_z].float)).clamp(1, 1000000)>>
<<set $summon.mres += (Math.trunc($summon.mres * setup.allBlessingList.mastery[_z].float)).clamp(1, 1000000)>>
<<set $summon.sex += (Math.trunc($summon.sex * setup.allBlessingList.mastery[_z].float)).clamp(1, 1000000)>>
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
END LOOP
<<break>>
<</if>>
<</for>>
<</if>>
SET CURRENT HP AFTER STAT MODS
<<set $summon.cur_hp to Math.round($summon.max_hp * $pc_spellbook[$spell_index].hp_percent)>>
UPDATE CURRENT STATS
<<set $summon.cur_max_hp to clone($summon.max_hp)>>
<<set $summon.cur_atk to clone($summon.atk)>>
<<set $summon.cur_pres to clone($summon.pres)>>
<<set $summon.cur_mres to clone($summon.mres)>>
<<set $summon.cur_sex to clone($summon.sex)>>
* Set Img *
<<set $summon.pic to $summon.creature_pics.random()>>
* Description *
<<CreatureDescription $summon>>
* Display *
<</silently>>\
<div class="section">\
<div class="cardholder-picside">\
<div class="picbox-inforoom-purple">\
<div class="titlebox-abovepic">\
Summoning Creature
</div>\
<div class="textboxlarge-abovepic">\
<strong>$summon.name</strong>
</div>\
<div class="textbox-abovepic">\
Lvl. <strong>$summon.level</strong>
</div>\
<div class="textbox-abovepic">\
<span class="mana">$mana_cost Mana</span>
</div>\
<div class="picbox-inforoom">\
$summon.pic
</div>\
<div class="statusbox-belowpic">\
</div>\
</div>\
</div>\
<div class="cardholder-infoside">\
<div class="textbox-inforoom-purple">\
<div class="description-stats-summon">\
$summon.description
</div>\
<div class="table-stats">\
<div class="cell-stats">\
<u>Creature Type</u>
$summon.creature_types
</div>\
<div class="cell-stats">\
<span style="color:lime"><u>Health</u>
$summon.cur_hp / $summon.max_hp</span>
</div>\
<div class="cell-stats">\
<<if $summon.attack_type === "Physical">>\
<span style="color:orange"><u>Physical Attack</u>
$summon.atk</span>
<<elseif $summon.attack_type === "Magical">>\
<span style="color:deepskyblue"><u>Magical Attack</u>
$summon.atk</span>
<</if>>\
</div>\
<div class="cell-stats">\
<span style="color:fuchsia"><u>Sexual Attack</u>
$summon.sex</span>
</div>\
<div class="cell-stats">\
<span style="color:yellow"><u>Physical Resistance</u>
$summon.pres</span>
</div>\
<div class="cell-stats">\
<span style="color:rebeccapurple"><u>Magical Resistance</u>
$summon.mres</span>
</div>\
<div class="longcell-stats">\
<u><strong>Fetishes</strong></u>
<<if $summon.fetishes.length === 0>>\
None
<<else>>\
$summon.fetishes
<</if>>\
</div>\
<div class="shortcell-stats">\
<u>Raiders Encountered</u>
$pc_spellbook[$spell_index].total_raiders
</div>\
<div class="shortcell-stats">\
<u>Raiders Captured</u>
$pc_spellbook[$spell_index].total_captures
</div>\
<div class="shortcell-stats">\
<u>Times Defeated</u>
$pc_spellbook[$spell_index].total_deaths
</div>\
<div class="shortcell-stats">\
<u>Damage Dealt</u>
$pc_spellbook[$spell_index].total_dmgdealt
</div>\
<div class="shortcell-stats">\
<u>Lust Increased</u>
$pc_spellbook[$spell_index].total_sexdealt
</div>\
<div class="shortcell-stats">\
<u>Damage Taken</u>
$pc_spellbook[$spell_index].total_dmgtaken
</div>\
</div>\
</div>\
<div class="linkbox-inforoom">\
<div class="linkbox-text">\
Summon $summon.name to attack $raiders[$spell_targeting].name, the $raiders[$spell_targeting].class?
<span id="forward"><<button [[Yes|$summon.passage]]>><<CastingSpell $pc_spellbook[$spell_index] $mana_cost>><<unset $mana_cost>><</button>></span> <span id="back"><<button [[No|Summon Creature Spell]]>><<set $spell_targeting to true>><<unset $summon>><</button>></span>
</div>\
</div>\
</div>\
</div>\
<</if>>\<<silently>>\
* Variables *
* Set Summoned Creature *
<<for _s = 0; _s < setup.summon_list.length; _s++>>
<<if setup.summon_list[_s].base_name === $summon_spell.summon_creature>>
<<set $summon to clone(setup.summon_list[_s])>>
<<break>>
<</if>>
<</for>>
* Set Summon Creatures Stats *
<<set _level to Math.clamp(Math.trunc($pc_level * $summon_spell.level_float), 1, $pc_level)>>
<<set $summon.level to clone(_level)>>
<<set $summon.summoned to true>> prevents creature from gaining exp
<<for _z = _level; _z > 0; _z-->>
<<set $summon.max_hp += $summon.lvl_hp>>
<<set $summon.atk += $summon.lvl_atk>>
<<set $summon.pres += $summon.lvl_pres>>
<<set $summon.mres += $summon.lvl_mres>>
<<set $summon.sex += $summon.lvl_sex>>
<</for>>
* Summon Modifiers *
SUMMONERS AID
<<set _blessing to $pc_blessing_list.delete("Summoner's Aid I", "Summoner's Aid II", "Summoner's Aid III")>>
<<if _blessing. length > 0>>
<<for _z = 0; _z < setup.allBlessingList.mastery.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.mastery[_z].name)>>
INCREASE STATS
<<set $summon.max_hp += (Math.trunc($summon.max_hp * setup.allBlessingList.mastery[_z].float)).clamp(1, 1000000)>>
<<set $summon.atk += (Math.trunc($summon.atk * setup.allBlessingList.mastery[_z].float)).clamp(1, 1000000)>>
<<set $summon.pres += (Math.trunc($summon.pres * setup.allBlessingList.mastery[_z].float)).clamp(1, 1000000)>>
<<set $summon.mres += (Math.trunc($summon.mres * setup.allBlessingList.mastery[_z].float)).clamp(1, 1000000)>>
<<set $summon.sex += (Math.trunc($summon.sex * setup.allBlessingList.mastery[_z].float)).clamp(1, 1000000)>>
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
END LOOP
<<break>>
<</if>>
<</for>>
<</if>>
* Set Cur HP *
<<set $summon.cur_hp to $summon.max_hp>>
* Set Img *
<<set $summon.pic to $summon.creature_pics.random()>>
* Description *
<<CreatureDescription $summon>>
* Display *
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<span id="back"><<button "Back" `previous()`>><<unset $summon_spell, $summon>><</button>></span>
</div>\
<div class="cardholder-picside">\
<div class="picbox-inforoom-purple">\
<div class="titlebox-abovepic">\
Summoned Stats
</div>\
<div class="textboxlarge-abovepic">\
<strong>$summon.name</strong>
</div>\
<div class="textbox-abovepic">\
Lvl. <strong>$summon.level</strong>
</div>\
<div class="textbox-abovepic">\
<span class="mana">$summon_spell.mana Mana</span>
</div>\
<div class="picbox-inforoom">\
$summon.pic
</div>\
<div class="statusbox-belowpic">\
</div>\
</div>\
</div>\
<div class="cardholder-infoside">\
<div class="textbox-inforoom-purple">\
<div class="description-stats-summon">\
$summon.description
</div>\
<div class="table-stats">\
<div class="cell-stats">\
<u>Creature Type</u>
$summon.creature_types
</div>\
<div class="cell-stats">\
<span style="color:lime"><u>Health</u>
$summon.cur_hp / $summon.max_hp</span>
</div>\
<div class="cell-stats">\
<<if $summon.attack_type === "Physical">>\
<span style="color:orange"><u>Physical Attack</u>
$summon.atk</span>
<<elseif $summon.attack_type === "Magical">>\
<span style="color:deepskyblue"><u>Magical Attack</u>
$summon.atk</span>
<</if>>\
</div>\
<div class="cell-stats">\
<span style="color:fuchsia"><u>Sexual Attack</u>
$summon.sex</span>
</div>\
<div class="cell-stats">\
<span style="color:yellow"><u>Physical Resistance</u>
$summon.pres</span>
</div>\
<div class="cell-stats">\
<span style="color:rebeccapurple"><u>Magical Resistance</u>
$summon.mres</span>
</div>\
<div class="longcell-stats">\
<u><strong>Fetishes</strong></u>
<<if $summon.fetishes.length === 0>>\
None
<<else>>\
$summon.fetishes
<</if>>\
</div>\
<div class="shortcell-stats">\
<u>Raiders Encountered</u>
$summon_spell.total_raiders
</div>\
<div class="shortcell-stats">\
<u>Raiders Captured</u>
$summon_spell.total_captures
</div>\
<div class="shortcell-stats">\
<u>Times Defeated</u>
$summon_spell.total_deaths
</div>\
<div class="shortcell-stats">\
<u>Damage Dealt</u>
$summon_spell.total_dmgdealt
</div>\
<div class="shortcell-stats">\
<u>Lust Increased</u>
$summon_spell.total_sexdealt
</div>\
<div class="shortcell-stats">\
<u>Damage Taken</u>
$summon_spell.total_dmgtaken
</div>\
</div>\
</div>\
</div>\
</div>\<<silently>>\
* SETUP ROOM *
<<set _summon to clone($summon)>>
<<set _spell_index to clone($spell_index)>>
<<set _target to clone($spell_targeting)>>
<<unset $summon, $target, $spell_index>>
<<SummonRoomSetup $raiders _summon>>
* SETUP RAIDER *
<<RaiderSetup $raiders _summon>>
* PRE COMBAT EFFECTS *
<<PreCombat $raiders _summon>>
* DANCER BUFF *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].class === "Dancer">>
<<DancerBuff $raiders[_i] _summon>>
<</if>>
<</for>>
* RAIDERS ATTACK *
<<for _i = 0; _i < $raiders.length; _i++>>
<<RaiderAttack $raiders[_i] _summon>>
<</for>>
* CREATURE NORMAL & SEXUAL ATTACK *
<<set $raiders[_target].attacked to true>>
<<for _i = 0; _i < $raiders.length; _i++>>
$raiders[_i].attacked
<<if $raiders[_i].attacked === true>>
<<NormalAttack $raiders[_i] _summon _summon.atk>>
<<SexualAttack $raiders[_i] _summon _summon.sex>>
UPDATE RAIDER REPORT
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage.">>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<</if>>
<</for>>
* TENTACLES ATTACK *
<<set _tentacles to {
name: "Giant Octopus",
atk: Math.round(_summon.atk * _summon.tentacle_float),
sex: Math.round(_summon.sex * _summon.tentacle_float),
room_type: _summon.room_type,
creature_types: _summon.creature_types,
trap_types: _summon.trap_types,
effects: _summon.effects,
effect_names: _summon.effect_names,
fetishes: _summon.tentacle_fetishes,
capture_entry: "Just a few of the Giant Octopus's tentacles was enough to Capture her after bringing her to climax by playing with her tits.",
defeat_entry: "She was unable to fend off the Giant Octopus's tentacles and was Captured.",
}>>
<<set _tenta_targets to []>>
<<for _i = 0; _i < $raiders.length; _i++>>
$raiders[_i].attacked
<<if $raiders[_i].attacked === false>>
ADD RAIDER TO TENT LIST AND UPDATE ATTACKED BOOL
<<set _tenta_targets.push($raiders[_i].index)>>
<<set $raiders[_i].attacked to true>>
<<NormalAttack $raiders[_i] _tentacles _tentacles.atk>>
<<SexualAttack $raiders[_i] _tentacles _tentacles.sex>>
UPDATE RAIDER REPORT
<<set _entry to "She was attacked by one of it's tentacles and took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage.">>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<</if>>
<</for>>
* POST COMBAT EFFECTS *
<<for _r = 0; _r < $raiders.length; _r++>>
<<PostCombat $raiders[_r] _summon>>
<</for>>
* CHOOSE RAIDER PICTURES *
SETUP RAIDER PICS ARRAY
<<set _picArray to clone(_summon.raider_pics)>>
<<for _i = 0; _i < $raiders.length; _i++>>
* Attacked Pictures *
<<if _tenta_targets.includes($raiders[_i].index)>>
SET PIC FOR RAIDERS ATTACKED BY TENTACLE
<<set _file to "tenta_" + $raiders[_i].body_type>>
<<set $raiders[_i].pic to _picArray[_file].pluck()>>
<<elseif $raiders[_i].attacked === true>>
SET PIC FOR RAIDER TARGETED BY OCTOPUS
<<set $raiders[_i].pic to _picArray[$raiders[_i].body_type].pluck()>>
<</if>>
<</for>>
* CREATURE EXP & DAMAGE *
<<CreaturePostCombat $raiders _summon>>
* END OF COMBAT REPORT *
<<PostCombatReport $raiders _summon>>
* CLEAN UP *
<<CleanUp $raiders _summon>>
* DISPLAY INFO *
<<set _cardholderID to "cardholder-raid-"+$raiders.length+"raiders">>
<<set _cardinfoID to "cardinfo-raid-"+$raiders.length+"raiders">>
<<set _picboxID to "picbox-raid-"+$raiders.length+"raiders">>
<<set _textboxID to "textbox-raid-"+$raiders.length+"raiders">>
<</silently>>\
<div class="section">\
<<NextSpellButton>>\
<div class="cardholder-raid-playerside">\
<div class="cardinfo-raid-summon">\
<div class="roomtitle-raid-player">\
Between Floors
</div>\
<div class="picbox-raid-player">\
_room_image
</div>\
<div class="namebox-raid-player">\
<strong>_summon.name</strong>
---- Health: _summon.cur_hp / _summon.max_hp ----
</div>\
<div class="textbox-raid-player">\
<ul>\
<<CreatureRoomText _summon>>
<<BlessingTriggerText _summon>>
<<EffectEndingText _summon>>
</ul>\
</div>\
</div>\
</div>\
<div class="cardholder-raid-raiderside">\
<<for _r = 0; _r < $raiders.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_textboxID">\
<ul>\
<<RaiderAtkText $raiders[_r] _summon>>\
<<if $raiders[_r].attacked === true>>\
<<if _tenta_targets.includes($raiders[_r].index)>>\
<li>She was constrained by a few of the Giant Octopus's tentacles, dealing <span style="color:orange">$raiders[_r].dmg_taken</span> Physical damage and <span style="color:fuchsia">$raiders[_r].sex_taken</span> Sexual damage to her.</li>\
<<else>>\
<li>She had the attention of the Giant Octopus and the majority of its arms, dealing <span style="color:orange">$raiders[_r].dmg_taken</span> Physical damage and <span style="color:fuchsia">$raiders[_r].sex_taken</span> Sexual damage to her.</li>\
<</if>>\
<<if _tenta_targets.includes($raiders[_r].index)>>\
<<RaiderFetishText $raiders[_r] _tentacles>>
<<else>>\
<<RaiderFetishText $raiders[_r] _summon>>
<</if>>\
<</if>>\
<<if _tenta_targets.includes($raiders[_r].index)>>\
<<PostCombatText $raiders[_r] _tentacles>>
<<else>>\
<<PostCombatText $raiders[_r] _summon>>
<</if>>\
</ul>\
</div>\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\<<widget "ClassGrinder">>
Creates Class, assigning them EXP Gains, Cost, and Stress
_args[0].name is Class
* Variables *
<<set _durationMods to {
gold: 0.5,
stress: 0.25,
exp: 1.25,
obedience: 0.25
}>>
SET DURATION
<<set _args[0].duration to random(_args[0].min_duration, _args[0].max_duration)>>
<<set _duration to _args[0].duration - 1>> used for calc duration in other stats
SET STAT REQUIREMENTS
<<set _args[0].obedience_req to random(_args[0].min_obedience, _args[0].max_obedience)>>
<<set _args[0].libido_req to random(_args[0].min_libido, _args[0].max_libido)>>
<<set _args[0].str_req to random(_args[0].min_str, _args[0].max_str)>>
<<set _args[0].intel_req to random(_args[0].min_intel, _args[0].max_intel)>>
<<set _args[0].total_stats to _args[0].obedience_req + _args[0].libido_req + _args[0].str_req + _args[0].intel_req>>
SET GOLD COST
<<set _args[0].gold to Math.round(_args[0].base_gold + (_duration * (_args[0].base_gold * _durationMods.gold)))>> ADD GOLD BASED ON HOW LONG THE CLASS IS
SET STRESS GAINED
<<set _args[0].stress to random(_args[0].min_stress, _args[0].max_stress)>> BASE STRESS
<<set _args[0].stress += Math.round(_duration * (_args[0].stress * _durationMods.stress))>> ADD STRESS BASED ON DURATION OF CLASS
SET OBEDIENCE CHECK
<<set _args[0].base_obedience_check -= Math.round(_duration * (_args[0].base_obedience_check * _durationMods.obedience))>>
SET EXP GAINED
<<set _args[0].obedience_exp += Math.round(_duration * _args[0].obedience_req * _durationMods.exp)>>
<<set _args[0].libido_exp += Math.round(_duration * _args[0].libido_req * _durationMods.exp)>>
<<set _args[0].strength_exp += Math.round(_duration * _args[0].str_req * _durationMods.exp)>>
<<set _args[0].intelligence_exp += Math.round(_duration * _args[0].intel_req * _durationMods.exp)>>
ADD CLASS TO MARKET
<<set $slave_class_list.push(_args[0])>>
<</widget>><<silently>>\
* SETUP ROOM *
<<RoomSetup $raiders $this_room>>
<<CreatureStats $this_room>>
<<set _leeching_heal to 0>> Amount healed
<<set _leeching_text to false>> Displays text if true for leeching slugs
* SETUP RAIDER *
<<RaiderSetup $raiders>>
* PRE COMBAT EFFECTS *
<<PreCombat $raiders $this_room>>
* DANCER BUFF *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].class === "Dancer">>
<<DancerBuff $raiders[_i] $this_room>>
<</if>>
<</for>>
* POOLING SLUGS *
CHECK IF HAS TRAPCHECK
<<if $this_room.name === "Pooling Slugs">>
<<set _slug_trapcheck to Math.trunc($this_room.trapcheck_rate + ($this_room.cur_sex * $this_room.pooling_float))>>
<<set _atk to Math.round($this_room.cur_atk * $this_room.dmg_float)>>
<<set _sex to Math.round($this_room.cur_sex * $this_room.dmg_float)>>
<<set _num_of_traps to 2>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<set _failed_count to 0>>
<<for _a = 1; _a <= _num_of_traps; _a++>>
<<CalcTrapcheck $raiders[_i] _slug_trapcheck>>
<<SimTrapcheck $raiders[_i] _trapcheck>>
ATTACK FAILED RAIDERS
<<if _text_triggers.check.trapcheck_failed.count($raiders[_i].index) + _text_triggers.check.trapcheck_crit_failed.count($raiders[_i].index) > _failed_count>>
<<set _failed_count++>>
<<set $raiders[_i].attacked to true>>
<<NormalAttack $raiders[_i] $this_room _atk>>
<<SexualAttack $raiders[_i] $this_room _sex>>
PREGNANT CHECK
<<PregnantCheck $raiders[_i] $this_room $this_room.rate>>
STICKY STACKS
<<AddStacks $raiders[_i] setup.sticky $this_room.pooling_int true>>
<</if>>
<</for>>
<</for>>
* UPDATE RAIDER REPORT POOLING SLUGS*
<<for _i = 0; _i < $raiders.length; _i++>>
<<if _text_triggers.check.trapcheck_failed.count($raiders[_i].index) + _text_triggers.check.trapcheck_crit_failed.count($raiders[_i].index) === 2>>
FIND ACCURATE STICKY AMOUNT
<<if $raiders[_i].status_names.includes("Sticky")>>
<<for _z = 0; _z < $raiders[_i].statuses.length; _z++>>
<<if $raiders[_i].statuses[_z].id === "Sticky">>
<<set _sticky_gained to clone($raiders[_i].statuses[_z].gain)>>
<<break>>
<</if>>
<</for>>
<</if>>
<<set _entry to "After failing both her @@.trap;Trapchecks@@, she took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage and gained "+_sticky_gained+" Sticky.">>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<<elseif _text_triggers.check.trapcheck_failed.count($raiders[_i].index) + _text_triggers.check.trapcheck_crit_failed.count($raiders[_i].index) === 1>>
FIND ACCURATE STICKY AMOUNT
<<if $raiders[_i].status_names.includes("Sticky")>>
<<for _z = 0; _z < $raiders[_i].statuses.length; _z++>>
<<if $raiders[_i].statuses[_z].id === "Sticky">>
<<set _sticky_gained to clone($raiders[_i].statuses[_z].gain)>>
<<break>>
<</if>>
<</for>>
<</if>>
<<set _entry to "After failing one of her @@.trap;Trapchecks@@, she took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage and gained "+_sticky_gained+" Sticky.">>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<</if>>
<</for>>
<<else>>
* RAIDERS ATTACK *
<<for _i = 0; _i < $raiders.length; _i++>>
<<RaiderAttack $raiders[_i] $this_room>>
<</for>>
* CHOOSES TARGET *
<<CreatureChooseTarget $raiders $this_room>>
* NORMAL & SEXUAL ATTACK *
ATTACKS TWICE
<<set _num_of_atks to 2>>
<<set _atk to Math.round($this_room.cur_atk * $this_room.dmg_float)>>
<<set _sex to Math.round($this_room.cur_sex * $this_room.dmg_float)>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].attacked === true>>
<<if $this_room.name === "Giant Slug">>
GIANT SLUG ATTACKS FIRST
<<set _gatk to Math.round($this_room.cur_atk * $this_room.giant_float)>>
<<set _gsex to Math.round($this_room.cur_sex * $this_room.giant_float)>>
<<NormalAttack $raiders[_i] $this_room _gatk>>
<<SexualAttack $raiders[_i] $this_room _gsex>>
STRIPPED
<<AddStatus $raiders[_i] setup.stripped true>>
STICKY
<<set _sticky_stacks to random($this_room.giant_min, $this_room.giant_max)>>
<<AddStacks $raiders[_i] setup.sticky _sticky_stacks true>>
FIND ACCURATE STICKY AMOUNT
<<if $raiders[_i].status_names.includes("Sticky")>>
<<for _z = 0; _z < $raiders[_i].statuses.length; _z++>>
<<if $raiders[_i].statuses[_z].id === "Sticky">>
<<set _sticky_gained to clone($raiders[_i].statuses[_z].gain)>>
<<break>>
<</if>>
<</for>>
<</if>>
UPDATE RAIDER REPORT
<<if _text_triggers.status.stripped.includes($raiders[_i].index)>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage, gained "+_sticky_gained+" Sticky, and became Stripped from the "+$this_room.name+".">>
<<else>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage and gained "+_sticky_gained+" Sticky from the "+$this_room.name+".">>
<</if>>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
GIANT SLUG DAMAGE
<<set _giant_dmg_holder to clone($raiders[_i].dmg_taken)>>
<<set _giant_sex_holder to clone($raiders[_i].sex_taken)>>
<</if>>
<<for _a = _num_of_atks; _a > 0; _a-->>
<<NormalAttack $raiders[_i] $this_room _atk>>
<<SexualAttack $raiders[_i] $this_room _sex>>
PREGNANT CHECK
<<PregnantCheck $raiders[_i] $this_room $this_room.rate>>
LEECHING EFFECT
<<if $this_room.name === "Leeching Slugs">>
<<AddStacks $raiders[_i] setup.lactation $this_room.lactation_stacks true>>
<<if $raiders[_i].status_names.includes($this_room.leeching_status.id)>>
<<if !$this_room.effect_names.includes("Quenched")>>
LEECHING BUFF
<<set _newBuff to clone(setup.creature_effect)>>
<<set _newBuff.name to "Quenched">>
<<set _newBuff.id to "Quenched">>
<<set _newBuff.effect_types to ["Raid"]>>
<<set _newBuff.count to 0>>
<<set _newBuff.icon to clone(setup.effect_icons.creature)>>
<<set $this_room.effects.push(_newBuff)>>
<<set $this_room.effect_names.push(_newBuff.id)>>
<</if>>
<<for _e = 0; _e < $this_room.effects.length; _e++>>
<<if $this_room.effects[_e].id === "Quenched">>
UPDATE EFFECT
<<set $this_room.effects[_e].hp_int += $this_room.leeching_health>>
<<set $this_room.effects[_e].count++>>
<<set $this_room.effects[_e].name to "Quenched x"+$this_room.effects[_e].count>>
<<set $this_room.effects[_e].tooltip to "Increases @@.health;maximum Health by "+$this_room.effects[_e].hp+"@@ until the end of the night.">>
APPLY EFFECTS
<<set $this_room.cur_max_hp += $this_room.leeching_health>>
<<set $this_room.cur_hp += $this_room.leeching_health>>
<<set _leeching_text to true>>
<<break>>
<</if>>
<</for>>
RESTORE HEALTH
<<set _leeching_heal += Math.round($this_room.cur_max_hp * $this_room.leeching_float)>>
<</if>>
<</if>>
<</for>>
UPDATE RAIDER REPORT
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage.">>
<<if $this_room.name === "Giant Slug">>
<<set _dmg to $raiders[_i].dmg_taken - _giant_dmg_holder>>
<<set _sex to $raiders[_i].sex_taken - _giant_sex_holder>>
<<set _entry to "She took an additional @@.phy;"+_dmg+"@@ and @@.sex;"+_sex+"@@ damage from the "+$this_room.name+"'s brood.">>
<</if>>
<<if $this_room.name === "Leeching Slugs">>
<<if _text_triggers.status.lactation.includes($raiders[_i].index)>>
FIND ACCURATE LACTATION AMOUNT
<<if $raiders[_i].status_names.includes("Lactation")>>
<<for _z = 0; _z < $raiders[_i].statuses.length; _z++>>
<<if $raiders[_i].statuses[_z].id === "Lactation">>
<<set _lactation_gained to clone($raiders[_i].statuses[_z].gain)>>
<<break>>
<</if>>
<</for>>
<</if>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage and gained "+_lactation_gained+" Lactation.">>
<</if>>
<</if>>
<<else>>
<<set _entry to "She was not attacked.">>
<</if>>
UPDATE RAIDER REPORT
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<</for>>
<</if>>
* POST COMBAT EFFECTS *
<<for _r = 0; _r < $raiders.length; _r++>>
<<PostCombat $raiders[_r] $this_room>>
<</for>>
* SLUG EXP & DAMAGE *
<<CreaturePostCombat $raiders $this_room>>
LEECHING HEAL
<<if $this_room.cur_hp > 0>>
<<set $this_room.cur_hp += _leeching_heal>>
<<if $this_room.cur_hp > $this_room.cur_max_hp>>
<<set _leeching_heal to $this_room.cur_max_hp - $this_room.cur_hp>>
<<set $this_room.cur_hp to $this_room.cur_max_hp>>
<</if>>
<</if>>
* CHOOSE PICTURE *
SETUP PIC ARRAY
<<set _picArray to clone($this_room.raider_pics)>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].attacked === true>>
* Attacked Pictures *
<<set $raiders[_i].pic to _picArray[$raiders[_i].body_type].pluck()>>
<</if>>
<</for>>
* END OF COMBAT REPORT *
<<PostCombatReport $raiders $this_room>>
* CLEAN UP *
<<CleanUp $raiders $this_room>>
* DISPLAY INFO *
<<set _cardholderID to "cardholder-raid-"+$raiders.length+"raiders">>
<<set _cardinfoID to "cardinfo-raid-"+$raiders.length+"raiders">>
<<set _picboxID to "picbox-raid-"+$raiders.length+"raiders">>
<<set _textboxID to "textbox-raid-"+$raiders.length+"raiders">>
<</silently>>\
<div class="section">\
<<NextRoomButton>>\
<div class="cardholder-raid-playerside">\
<div class="cardinfo-raid-creature">\
<div class="roomtitle-raid-player">\
Floor $cur_room_num
</div>\
<div class="picbox-raid-player">\
_room_image
</div>\
<div class="namebox-raid-player">\
<strong>$this_room.name</strong>
---- Health: $this_room.cur_hp / $this_room.cur_max_hp ----
</div>\
<div class="textbox-raid-player">\
<ul>\
<<CreatureRoomText $this_room>>
<<if _leeching_text === true && $this_room.cur_hp != 0 && _leeching_heal > 0>>\
<li>They grew in size and restored @@.health;_leeching_heal Health@@ after drinking the Raider's milk.</li>\
<<elseif _leeching_text === true>>\
<li><li>They grew in size after drinking the Raider's milk.</li>\
<</if>>\
<<BlessingTriggerText $this_room>>
<<EffectEndingText $this_room>>
</ul>\
</div>\
</div>\
</div>\
<div class="cardholder-raid-raiderside">\
<<for _r = 0; _r < $raiders.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_textboxID">\
<ul>\
<<if $this_room.name === "Pooling Slugs">>\
<<if _text_triggers.check.trapcheck_crit_failed.count($raiders[_r].index) + _text_triggers.check.trapcheck_failed.count($raiders[_r].index) >= 2>>\
<li><<if _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)>><strong>Critical Failure!</strong> <</if>>She was looking around for threats and walked right into a pit of slime, twice, taking @@.phy;$raiders[_r].dmg_taken Physical@@ damage and @@.sex;$raiders[_r].sex_taken Sexual@@ damage from the $this_room.name lurking in the pool.</li>\
<<elseif _text_triggers.check.trapcheck_crit_failed.count($raiders[_r].index) + _text_triggers.check.trapcheck_failed.count($raiders[_r].index) === 1>>\
<li><<if _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)>><strong>Critical Failure!</strong> <</if>>She was careless and didn't think the puddle of slime was that deep, falling in and taking @@.phy;$raiders[_r].dmg_taken Physical@@ damage and @@.sex;$raiders[_r].sex_taken Sexual@@ damage from the $this_room.name hiding in the pit.</li>\
<<else>>\
<li><<if _text_triggers.check.trapcheck_crit_passed.includes($raiders[_r].index)>><strong>Critical Success!</strong> <</if>>She carefully navigated through the room of slime pits, avoiding falling into one.</li>\
<</if>>\
<<if _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_failed.includes($raiders[_r].index)>>\
<<RaiderFetishText $raiders[_r] $this_room>>
<</if>>\
<<else>>\
<<DancerDanceText $raiders[_r] $this_room>>
<<RaiderAtkText $raiders[_r] $this_room>>
<<if $raiders[_r].attacked === true>>\
<<if $this_room.name === "Slugs">>\
<li>The Slugs crawled up her legs and fell from the ceiling on her, dealing @@.phy;$raiders[_r].dmg_taken Physical@@ damage and @@.sex;$raiders[_r].sex_taken Sexual@@ damage.</li>\
<<elseif $this_room.name === "Giant Slug">>\
<<set _dmg to $raiders[_r].dmg_taken - _giant_dmg_holder>>\
<<set _sex to $raiders[_r].sex_taken - _giant_sex_holder>>\
<li>The Giant Slug pinned her down and melted through her clothes with its ooze, dealing @@.phy;_giant_dmg_holder Physical@@ damage and @@.sex;_giant_sex_holder Sexual@@ damage.</li>\
<li>The brood moved over her body after it was exposed, dealing an additional @@.phy;_dmg Physical@@ damage and @@.sex;_sex Sexual@@ damage.</li>\
<<elseif $this_room.name === "Leeching Slugs">>\
<li>The Leeching Slugs latched onto her Breasts with their maws, dealing @@.phy;$raiders[_r].dmg_taken Physical@@ damage and @@.sex;$raiders[_r].sex_taken Sexual@@ damage.</li>\
<</if>>\
<<RaiderFetishText $raiders[_r] $this_room>>
<</if>>\
<</if>>\
<<PostCombatText $raiders[_r] $this_room>>
</ul>\
</div>\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\<<silently>>\
* SETUP ROOM *
<<RoomSetup $raiders $this_room>>
<<TrapStats $this_room>>
<<set _ridingHorse to []>> holds indexs of all raiders on horse
<<set _riders to []>> holds raiders who were trapped on the horse
<<set _crit_failed to []>> holds raiders who crit failed their first trapcheck to get caught
<<set _masochist_trigger to []>> holds list of raiders who gained the masochist trait
* SETUP RAIDER *
<<RaiderSetup $raiders>>
* PRE COMBAT EFFECTS *
<<PreCombat $raiders $this_room>>
* DANCER BUFF *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].class === "Dancer">>
<<DancerBuff $raiders[_i] $this_room>>
<</if>>
<</for>>
* INITIAL TRAPCHECK *
<<for _r = 0; _r < $raiders.length; _r++>>
<<if _ridingHorse.length < 2>>
<<set $this_room.total_attempts++>>
<<set $this_room.report.trap_attempts++>>
<<CalcTrapcheck $raiders[_r] $this_room.cur_check>>
<<SimTrapcheck $raiders[_r] _trapcheck>>
<<if _text_triggers.check.trapcheck_failed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)>>
<<if _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)>>
<<set _crit_failed.push($raiders[_r].index)>>
<</if>>
<<set $this_room.total_triggers++>>
<<set $this_room.report.trap_successes++>>
SET ON HORSE
<<set _ridingHorse.push($raiders[_r].index)>>
<<set _riders.push(clone($raiders[_r]))>>
<</if>>
<</if>>
<</for>>
* UPDATE RAIDER REPORT *
<<for _r = 0; _r < $raiders.length; _r++>>
<<if _ridingHorse.includes($raiders[_r].index) && _ridingHorse.length === 2>>
<<set _entry to "She became stuck riding it with her teammate.">>
<<elseif !_ridingHorse.includes($raiders[_r].index) && _ridingHorse.length === 2>>
<<set _entry to "She was forced to watch her other two allies ride it.">>
<<elseif _ridingHorse.includes($raiders[_r].index)>>
<<set _entry to "She became trapped and forced to ride it.">>
<<else>>
<<set _entry to "She avoided getting caught by it.">>
<</if>>
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[_r].report.log.push(_lastLog)>>
<</for>>
* ADDITIONAL TRAPCHECKS *
<<set _patk to Math.trunc($this_room.cur_atk * $this_room.atk_float)>>
<<set _satk to Math.trunc($this_room.cur_sex * $this_room.sex_float)>>
<<for _t = 0; _t < $this_room.trapcheck_max; _t++>>
LESBIAN FETISH CHECK
<<if _ridingHorse.length === 2 && !$this_room.fetishes.includes("Lesbian")>>
ADDED LESBIAN
<<set $this_room.fetishes to $this_room.fetishes.concat($this_room.other_fetishes)>>
<<elseif _ridingHorse.length < 2 && $this_room.fetishes.includes("Lesbian")>>
REMOVED LESBIAN
<<set _remove to $this_room.fetishes.delete($this_room.other_fetishes)>>
<</if>>
TAKE DAMAGE AND CHECK FOR EFFECTS
<<for _r = 0; _r < $raiders.length; _r++>>
<<if _ridingHorse.includes($raiders[_r].index)>>
TAKE DAMAGE
<<NormalAttack $raiders[_r] $this_room _patk>>
<<SexualAttack $raiders[_r] $this_room _satk>>
CALC EFFECT CHANCE
<<if Math.trunc((($raiders[_r].cur_lust + $raiders[_r].sex_taken) / $raiders[_r].max_lust) * 100) >= $this_room.lust_percent>>
<<set _effectPercent to clone($this_room.bonus_percent)>>
BONUS CHANCE: _effectPercent
<<else>>
<<set _effectPercent to clone($this_room.percent)>>
NORMAL CHANCE: _effectPercent
<</if>>
REMOVE EFFECTS ALREADY HAVE
<<set _options to ["Wet", "Perverted", "Masochist"]>>
<<set _remove to _options.delete($raiders[_r].trait_names)>>
<<set _remove to _options.delete($raiders[_r].status_names)>>
<<set _rng to random(1, 100)>> RNG: _rng
ADD STATUS OR TRAIT
<<if _rng <= _effectPercent && _options.length > 0>>
<<set _pickEffect to _options.random()>>
<<switch _pickEffect>>
<<case "Wet">>
<<AddStatus $raiders[_r] setup.wet true>>
<<set _entry to "She became Wet while grinding on the horse.">>
<<case "Perverted">>
<<AddStatus $raiders[_r] setup.perverted true>>
<<set _entry to "She became Perverted from enjoying her experience on the horse.">>
<<case "Masochist">>
<<set _newTrait to clone(setup.masochist)>>
<<set $raiders[_r].traits.push(_newTrait)>>
<<set $raiders[_r].trait_names.push(_newTrait.name)>>
<<set _masochist_trigger.push($raiders[_r].index)>>
<<set _entry to "She became a Masochist on the horse as the pain became pleasure.">>
<</switch>>
ADD RAIDER ENTRY
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[_r].report.log.push(_lastLog)>>
<</if>>
<</if>>
<</for>>
TRAPCHECK TO ESCAPE
<<for _r = 0; _r < $raiders.length; _r++>>
<<if _ridingHorse.includes($raiders[_r].index)>>
<<set _Newtrapcheck to $this_room.cur_check - Math.trunc($this_room.cur_check * ($this_room.trapcheck_float * _t))>>
<<set $this_room.total_attempts++>>
<<set $this_room.report.trap_attempts++>>
<<CalcTrapcheck $raiders[_r] _Newtrapcheck>>
<<SimTrapcheck $raiders[_r] _Newtrapcheck>>
<<if _text_triggers.check.trapcheck_passed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_crit_passed.includes($raiders[_r].index)>>
ESCAPE!
<<set _escaped to _ridingHorse.delete($raiders[_r].index)>>
<<else>>
TRAPPED!
<<set $this_room.total_triggers++>>
<<set $this_room.report.trap_successes++>>
<</if>>
<</if>>
<</for>>
<<if _ridingHorse.length <= 0>>
END CHECKS
<<break>>
<</if>>
<</for>>
* CLEAN UP LESBIAN FETISH *
<<set _remove to $this_room.fetishes.delete($this_room.other_fetishes)>>
* UPDATE RAIDER REPORT *
<<for _r = 0; _r < $raiders.length; _r++>>
<<set _counter to _text_triggers.check.trapcheck_failed.count($raiders[_r].index) + _text_triggers.check.trapcheck_crit_failed.count($raiders[_r].index)>>
<<if _counter > 0>>
<<switch _counter>>
<<case 1 2>>
<<set _entry to "She was able to escape shortly after getting caught.">>
<<case 3 4>>
<<set _entry to "She was stuck on it for awhile, but managed to eventually get off it.">>
<<case 5>>
<<set _entry to "She ended up riding it until it finally stopped moving.">>
<</switch>>
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[_r].report.log.push(_lastLog)>>
<</if>>
<</for>>
* POST COMBAT *
<<for _i = 0; _i < $raiders.length; _i++>>
<<PostCombat $raiders[_i] $this_room>>
<</for>>
* RAIDER IMAGES *
SETUP PIC ARRAY
<<set _picArray to clone($this_room.raider_pics)>>
<<if _riders.length === 2>>
<<set _picInfo to "">>
<<for _z = 0; _z < _riders.length; _z++>>
<<if _riders[_z].body_type === "average">>
<<set _picInfo to _picInfo + "a">>
<</if>>
<</for>>
<<for _z = 0; _z < _riders.length; _z++>>
<<if _riders[_z].body_type === "busty">>
<<set _picInfo to _picInfo + "b">>
<</if>>
<</for>>
<<for _z = 0; _z < _riders.length; _z++>>
<<if _riders[_z].body_type === "slender">>
<<set _picInfo to _picInfo + "s">>
<</if>>
<</for>>
<<set _groupPic to _picArray.duo[_picInfo].pluck()>>
<<else>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<if _text_triggers.check.trapcheck_failed.includes($raiders[_i].index) || _text_triggers.check.trapcheck_crit_failed.includes($raiders[_i].index)>>
*Raider Triggered Trap *
<<set $raiders[_i].pic to _picArray[$raiders[_i].body_type].pluck()>>
<</if>>
<</for>>
<</if>>
<<PostCombatReport $raiders $this_room>>
* CLEAN UP *
<<CleanUp $raiders $this_room>>
*Display Info*
<<set _cardholderID to "cardholder-raid-"+$raiders.length+"raiders">>
<<set _cardinfoID to "cardinfo-raid-"+$raiders.length+"raiders">>
<<set _picboxID to "picbox-raid-"+$raiders.length+"raiders">>
<<set _textboxID to "textbox-raid-"+$raiders.length+"raiders">>
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<<NextRoomButton>>\
</div>\
<div class="cardholder-raid-playerside">\
<div class="cardinfo-raid-trap">\
<div class="roomtitle-raid-player">\
Floor $cur_room_num
</div>\
<div class="picbox-raid-player">\
$this_room.pic
</div>\
<div class="namebox-raid-player">\
<strong>$this_room.name</strong>
---- $this_room.check_type: $this_room.cur_check ----
</div>\
<div class="textbox-raid-player">\
<ul>\
<<TrapRoomText $this_room>>
<<BlessingTriggerText $this_room>>
<<EffectEndingText $this_room>>
</ul>\
</div>\
</div>\
</div>\
<<if _riders.length === 2>>\
<div class="cardholder-raid-raiderside">\
<div class="cardholder-raid-1raiders">\
<div class="cardinfo-raid-1raiders">\
<div class="textbox-raid-1raiders">\
<ul>\
<<for _r = 0; _r < $raiders.length; _r++>>\
<<DancerDanceText $raiders[_r] $this_room true>>
<</for>>\
<li>_riders[0].name and _riders[1].name ended up getting trapped on the same Wooden Horse as it began to move back and forth.</li>\
<<for _r = 0; _r < $raiders.length; _r++>>\
<<set _failCount to _text_triggers.check.trapcheck_failed.count($raiders[_r].index) + _text_triggers.check.trapcheck_crit_failed.count($raiders[_r].index)>>\
<<if _failCount > 0 && _failCount <= 2>>\
<li>$raiders[_r].name cut her time on the $this_room.name short, only taking @@.phy;$raiders[_r].dmg_taken Physical@@ damage and @@.sex;$raiders[_r].sex_taken Sexual@@ damage.</li>\
<<elseif _failCount > 0 && _failCount <= 4>>\
<li>$raiders[_r].name was tossed around on the $this_room.name for awhile before finally breaking free, taking @@.phy;$raiders[_r].dmg_taken Physical@@ damage and @@.sex;$raiders[_r].sex_taken Sexual@@ damage.</li>\
<<elseif _failCount > 0 && _failCount <= 5>>\
<li>$raiders[_r].name remain trapped on the $this_room.name for the entire ride, taking @@.phy;$raiders[_r].dmg_taken Physical@@ damage and @@.sex;$raiders[_r].sex_taken Sexual@@ damage.</li>\
<</if>>\
<<if _failCount > 0>>\
<<RaiderFetishText $raiders[_r] $this_room>>
<<if _masochist_trigger.includes($raiders[_r].index)>>\
<li>Her pain became pleasure and turned into a <<hovertip '<<- setup.masochist.tooltip>>'>>Masochist<</hovertip>>.</li>\
<</if>>\
<<PostCombatText $raiders[_r] $this_room>>
<</if>>\
<<if _failCount === 0>>\
<li>$raiders[_r].name could only watch both her allies as they rode the lewd device in front of her.</li>\
<<PostCombatText $raiders[_r] $this_room>>
<</if>>\
<</for>>\
</ul>\
</div>\
<div class="picbox-raid-1raiders">\
_groupPic
</div>\
</div>\
</div>\
</div>\
<<else>>\
<div class="cardholder-raid-raiderside">\
<<for _r = 0; _r < $raiders.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_textboxID">\
<ul>\
<<DancerDanceText $raiders[_r] $this_room>>
<<if _text_triggers.check.trapcheck_failed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)>>\
<li><<if _crit_failed.includes($raiders[_r].index)>><strong>Critical Failure!</strong> <</if>>She treaded carefully through the room, but failed to notice the panel hiding the $this_room.name as it sprung out from under her, strapping her on it.</li>\
<<elseif !_text_triggers.check.trapcheck_failed.includes($raiders[_r].index) && !_text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)>>\
<li><<if _text_triggers.check.trapcheck_crit_passed.includes($raiders[_r].index)>><strong>Critical Success!</strong> <</if>>She stayed alert and aware of any unusual stones and panels in the room, avoiding stepping too close to them.</li>\
<</if>>\
<<set _failCount to _text_triggers.check.trapcheck_failed.count($raiders[_r].index) + _text_triggers.check.trapcheck_crit_failed.count($raiders[_r].index)>>\
<<if _failCount > 0 && _failCount <= 2>>\
<li>She quickly escaped and dismounted from the $this_room.name, only taking @@.phy;$raiders[_r].dmg_taken Physical@@ damage and @@.sex;$raiders[_r].sex_taken Sexual@@ damage.</li>\
<<elseif _failCount > 0 && _failCount <= 4>>\
<li>She was stuck riding the $this_room.name for a bit before finally getting off, taking @@.phy;$raiders[_r].dmg_taken Physical@@ damage and @@.sex;$raiders[_r].sex_taken Sexual@@ damage.</li>\
<<elseif _failCount > 0 && _failCount <= 5>>\
<li>She was unable to free herself from the $this_room.name and rode it until it finally stopped and let her go, taking @@.phy;$raiders[_r].dmg_taken Physical@@ damage and @@.sex;$raiders[_r].sex_taken Sexual@@ damage.</li>\
<</if>>\
<<if _failCount > 0>>\
<<RaiderFetishText $raiders[_r] $this_room>>
<</if>>\
<<if _failCount === 0 && _text_triggers.check.trapcheck_failed.length + _text_triggers.check.trapcheck_crit_failed.length > 0>>\
<li>She watched her teammate ride the Wooden Horse after avoiding getting caught as well, unable to help.</li>\
<</if>>\
<<if _masochist_trigger.includes($raiders[_r].index)>>\
<li>Her pain became pleasure and turned into a <<hovertip '<<- setup.masochist.tooltip>>'>>Masochist<</hovertip>>.</li>\
<</if>>\
<<PostCombatText $raiders[_r] $this_room>>
<<if _riders.length === 0>>\
<li>She moved on without triggering the trap.</li>\
<</if>>\
</ul>\
</div>\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
</div>\
</div>\
<</for>>\
</div>\
<</if>>\
</div>\<<silently>>
* Variables *
<<set _cured_lactation to false>>
<<set _cured_futanari to false>>
* Set Raider *
<<set _id to $leaking_list.pluck()>>
<<for _r = 0; _r < $raiders.length; _r++>>
<<if $raiders[_r].index === _id>>
<<set _index to _r>>
<<break>>
<</if>>
<</for>>
<<if $raiders[_index].status_names.includesAll(setup.lactation.id, setup.futanari.id)>>
<<set _event to "both">>
<<elseif $raiders[_index].status_names.includes(setup.lactation.id)>>
<<set _event to "lactation">>
<<elseif $raiders[_index].status_names.includes(setup.futanari.id)>>
<<set _event to "futanari">>
<</if>>
* Calc Lust Gained *
<<set _dmg to 0>>
LACTATION DMG
<<if _event === "both" || _event === "lactation">>
<<for _z = 0; _z < $raiders[_index].statuses.length; _z++>>
<<if $raiders[_index].statuses[_z].id === setup.lactation.id>>
* Add Lust Gained *
<<set _dmg += (Math.trunc($raiders[_index].max_lust * (setup.lactation.lust_float * $raiders[_index].statuses[_z].stack))).clamp(1, 1000000)>>
* Reduce stacks and remove status if 0 stacks *
<<set $raiders[_index].statuses[_z].stack-->>
<<if $raiders[_index].statuses[_z].stack <= 0>>
<<set _cured_lactation to true>>
REMOVE STATUS
<<set _remove to $raiders[_index].statuses.deleteAt(_z)>>
<<set _removeName to $raiders[_index].status_names.delete(setup.lactation.id)>>
<<else>>
UPDATE NAME
<<set $raiders[_index].statuses[_z].name to "Lactation x"+$raiders[_index].statuses[_z].stack>>
<</if>>
<<break>>
<</if>>
<</for>>
<</if>>
FUTANARI
<<if _event === "both" || _event === "futanari">>
* Add Lust Gained *
<<for _z = 0; _z < $raiders[_index].statuses.length; _z++>>
<<if $raiders[_index].statuses[_z].id === setup.futanari.id>>
<<set _dmg += (Math.trunc($raiders[_index].max_lust * (setup.futanari.lust_float * $raiders[_index].statuses[_z].stack))).clamp(1, 1000000)>>
* Reduce stacks and remove status if 0 stacks *
<<set $raiders[_index].statuses[_z].stack-->>
<<if $raiders[_index].statuses[_z].stack <= 0>>
<<set _cured_futanari to true>>
REMOVE STATUS
<<set _remove to $raiders[_index].statuses.deleteAt(_z)>>
<<set _removeName to $raiders[_index].status_names.delete(setup.futanari.id)>>
<<else>>
UPDATE NAME
<<set $raiders[_index].statuses[_z].name to "Futanari x"+$raiders[_index].statuses[_z].stack>>
<</if>>
<<break>>
<</if>>
<</for>>
<</if>>
ADD LUST
<<set $raiders[_index].cur_lust to Math.clamp($raiders[_index].cur_lust + _dmg, 0, $raiders[_index].max_lust - 1)>>
EDGING
<<set _edging_text to false>>
<<if !$raiders[_index].status_names.includes("Edging") && ($raiders[_index].cur_lust >= $raiders[_index].max_lust - setup.edging.int_limit || ($raiders[_index].cur_lust / $raiders[_index].max_lust).toFixed(3) >= setup.edging.limit)>>
<<set $raiders[_index].status_names.push("Edging")>>
<<set $raiders[_index].statuses.push(clone(setup.edging))>>
<<set _edging_text to true>>
<</if>>
* Set Text & Pics*
<<switch _event>>
<<case "both">>
<<set _title to "Losing Control">>
<<set _text to "Before she could go to the next floor, she needed relieve by cumming from her futanari dick and squirting milk from her lactating breasts.">>
<<set _range to 1>> max number of images to choose from
<<set _num to random(_range)>>
<<set _pic to "[img[images/statuses/both/"+$raiders[_index].body_type+"/"+_num+".jpg]]">>
<<set _entry to "She gained @@.lust;"+_dmg+" Lust@@ from her futanari dick and lactating breasts.">>
<<case "lactation">>
<<set _title to "Leaking">>
<<set _text to "Before she could go to the next floor, she needed relieve by squirting milk from her lactating breasts.">>
<<set _range to 4>> max number of images to choose from
<<set _num to random(_range)>>
<<if _num === 4>>
<<set _pic to "[img[images/statuses/lactation/"+$raiders[_index].body_type+"/"+_num+".gif]]">>
<<else>>
<<set _pic to "[img[images/statuses/lactation/"+$raiders[_index].body_type+"/"+_num+".jpg]]">>
<</if>>
<<set _entry to "She gained @@.lust;"+_dmg+" Lust@@ from her lactating breasts.">>
<<case "futanari">>
<<set _title to "Curiosity">>
<<set _text to "Before she could go to the next floor, she needed relieve by cumming from her futanari dick.">>
<<set _range to 4>> max number of images to choose from
<<set _num to random(_range)>>
<<if _num === 4>>
<<set _pic to "[img[images/statuses/futanari/"+$raiders[_index].body_type+"/"+_num+".gif]]">>
<<else>>
<<set _pic to "[img[images/statuses/futanari/"+$raiders[_index].body_type+"/"+_num+".jpg]]">>
<</if>>
<<set _entry to "She gained @@.lust;"+_dmg+" Lust@@ from her futanari dick.">>
<</switch>>
<<set _lastLog to $raiders[_index].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_index].report.log.push(_lastLog)>>
* Set Next Link *
<<BetweenRoomLink>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
_title
</div>\
<div class="imagebox">\
_pic
</div>\
<div class="textbox">\
_text
<ul>\
<li>She gained @@.lust;_dmg Lust@@.</li>\
<<if _edging_text === true>>\
<li>She is on <<hovertip "<<- setup.edging.tooltip>>">>Edge<</hovertip>> of climaxing!</li>\
<</if>>\
<<if _cured_lactation === true && _cured_futanari === true>>\
<li>She is no longer leaking from her breasts and her vagina has returned to normal.</li>\
<<elseif _cured_lactation === true>>\
<li>She is no longer leaking from her breasts.</li>\
<<elseif _cured_futanari === true>>\
<li>Her vagina has returned to normal.</li>\
<</if>>\
</ul>\
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[Continue|_link]]>><</button>></span>
</div>\
</div>\<<silently>>
* Set Value *
<<set _connectionPrice to true>>
<<SlaveValueCalc $cur_slave "Selling">>
<</silently>>\
<div class="section">\
<div class="cardholder-picside">\
<div class="picbox-inforoom-violet">\
<div class="buttonbox-slaveroom">\
</div>\
<div class="titlebox-abovepic-slaveroom">\
Sell Raider
</div>\
<div class="textbox-abovepic-slaveroom">\
<strong>$cur_slave.name</strong>
</div>\
<div class="textbox-abovepic-slaveroom">\
Upkeep: <span class="gold">$cur_slave.upkeep Gold</span>
</div>\
<div class="picbox-slaveroom">\
$cur_slave.body_pic
</div>\
<div class="statusbox-belowpic-slaveroom">\
<<if $cur_slave.injured === true>>\
<<hovertip "<<-setup.slave_statuses.injured.tooltip>>">><<-setup.slave_statuses.injured.icon>><</hovertip>>\
<</if>>\
<<if $cur_slave.disobedient === true>>\
<<hovertip "<<-setup.slave_statuses.disobedient.tooltip>>">><<-setup.slave_statuses.disobedient.icon>><</hovertip>>\
<</if>>\
<<if $cur_slave.scolded_bool === true>>\
<<hovertip "<<-setup.slave_statuses.scolded.tooltip>>">><<-setup.slave_statuses.scolded.icon>><</hovertip>>\
<</if>>\
<<if $cur_slave.dayoff_bool === true>>\
<<hovertip "<<-setup.slave_statuses.dayoff.tooltip>>">><<-setup.slave_statuses.dayoff.icon>><</hovertip>>\
<</if>>\
</div>\
</div>\
</div>\
<div class="cardholder-infoside">\
<div class="textbox-inforoom-violet">\
<div class="status-textbox-slave">\
WORDS WORDS WORDS
</div>\
<div class="stats-container-slave">\
<div class="stats-titlebox-slave">\
Stats
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.love.tooltip>>">><<-setup.slave_stats.love.icon>><</hovertip>>
<<hovertip "Max Love: <<-$cur_slave.love_limit>>">><span style="color:crimson">$cur_slave.love</span><</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.obedience.tooltip>>">><<-setup.slave_stats.obedience.icon>><</hovertip>>
<<hovertip "Max Obedience: <<-$cur_slave.obedience_limit>>">><span style="color:cyan">$cur_slave.obedience</span><</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.libido.tooltip>>">><<-setup.slave_stats.libido.icon>><</hovertip>>
<<hovertip "Max Libido: <<-$cur_slave.libido_limit>>">><span style="color:fuchsia">$cur_slave.libido</span><</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.strength.tooltip>>">><<-setup.slave_stats.strength.icon>><</hovertip>>
<<hovertip "Max Strength: <<-$cur_slave.strength_limit>>">><span style="color:orange">$cur_slave.strength</span><</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.intelligence.tooltip>>">><<-setup.slave_stats.intelligence.icon>><</hovertip>>
<<hovertip "Max Intelligence: <<-$cur_slave.intelligence_limit>>">><span style="color:darkorchid">$cur_slave.intelligence</span><</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.stress.tooltip>>">><<-setup.slave_stats.stress.icon>><</hovertip>>
<strong><span style="color:slategray"><<- $cur_slave.cur_stress>></span></strong>
</div>\
<div class="stats-titlebox-slave">\
Traits
</div>\
<div class="stats-bigcell-slave">\
<<for _t = 0; _t < $cur_slave.traits.length; _t++>>\
<<print '<span style="color:'+$cur_slave.traits[_t].color+'"><<hovertip "$cur_slave.traits[_t].tooltip">>$cur_slave.traits[_t].name<</hovertip>></span>'>><<if _t + 1 < $cur_slave.traits.length>>, <</if>>\
<</for>>\
</div>\
</div>\
<div class="rec-skill-container-slave">\
<div class="rec-titlebox-slave">\
Sex Skills
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.handjob_tracker / $cur_slave.handjob_tracker_limit<br>Max: $cur_slave.handjob_limit">>Handjobs
$cur_slave.handjob<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.blowjob_tracker / $cur_slave.blowjob_tracker_limit<br>Max: $cur_slave.blowjob_limit">>Blowjobs
$cur_slave.blowjob<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.titjob_tracker / $cur_slave.titjob_tracker_limit<br>Max: $cur_slave.titjob_limit">>Titjobs
$cur_slave.titjob<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.footjob_tracker / $cur_slave.footjob_tracker_limit<br>Max: $cur_slave.footjob_limit">>Footjobs
$cur_slave.footjob<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.missionary_tracker / $cur_slave.missionary_tracker_limit<br>Max: $cur_slave.missionary_limit">>Missionary
$cur_slave.missionary<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.cowgirl_tracker / $cur_slave.cowgirl_tracker_limit<br>Max: $cur_slave.cowgirl_limit">>Cowgirl
$cur_slave.cowgirl<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.doggy_tracker / $cur_slave.doggy_tracker_limit<br>Max: $cur_slave.doggy_limit">>Doggy
$cur_slave.doggy<</hovertip>>
</div>\
<div class="skill-cell-slave">\
<<hovertip "EXP: $cur_slave.anal_tracker / $cur_slave.anal_tracker_limit<br>Max: $cur_slave.anal_limit">>Anal
$cur_slave.anal<</hovertip>>
</div>\
</div>\
</div>\
<div class="linkbox-stats">\
<div class="linkbox-text">\
<u><strong>Sell $cur_slave.name?</strong></u>
The Slave Market is offering you @@.gold;$cur_slave.value Gold@@ for $cur_slave.name. She will only remain in the Slave Market until the end of the next day.
<<silently>>\
SET LINKS
<<if $slave_girl_list.length === 1>>
<<set _link to "Daily Summary">>
<<else>>
<<set _link to "Slave List">>
<</if>>
<</silently>>\
<span id="forward"><<button [[Sell|_link]]>>\
<<silently>>\
SET BOOL TO FALSE
<<set $marketConnectionBool to false>>
REMOVE DISOBEDIENT
<<set $cur_slave.disobedient to false>>
CONNECTION SLAVE BOOl
<<set $cur_slave.connection_bool to true>> holds slave even if slave market is refreshed
ADD STRESS
<<set $cur_slave.cur_stress to random(setup.min_start_stress, setup.max_start_stress)>>
PUT IN SLAVE MARKET
<<set $slave_market_list.push($cur_slave)>>
REMOVE FROM OTHER ARRAYS
<<set _removed to $slave_girl_list.deleteAt($cur_slave_num)>>
<<set _removed to $captured_girl_list.deleteAt($cur_slave_num)>>
EARN GOLD
<<set $pc_gold += $cur_slave.value>>
<<set $marketConnectionAmount += $cur_slave.value>>
STATS
<<set $pc_slaves_sold++>>
<<set $pc_gold_earned_other += $cur_slave.value>>
<<if $cur_slave.value > $pc_highest_slave_sold>>
<<set $pc_highest_slave_sold to $cur_slave.value>>
<</if>>
UNSET VARIABLES
<<unset $cur_slave, $cur_slave_num>>
<</silently>>\
<</button>></span> <span id="back"><<button [[No|Slave List]]>><<unset $cur_slave, $cur_slave_num>><</button>></span>
</div>\
</div>\
</div>\
</div>\<<silently>>\
*Variables*
*Available Room Check*
<<set $open_room to "">>
<<for _i = 0; _i < $slave_room_list.length; _i++>>
<<if $slave_room_list[_i].room_type === "Empty">>
<<if $slave_room_list[_i].built === true>>
<<set $open_room to _i>>
<<break>>
<</if>>
<</if>>
<</for>>
*Display*
<</silently>>\
<div class="section">\
<div class="cardholder-picside">\
<div class="picbox-inforoom-violet">\
<div class="titlebox-abovepic-slaveroom">\
Slave Holding Cell
</div>\
<div class="textbox-abovepic-slaveroom">\
<strong>$holding_cell.name</strong>
</div>\
<div class="textbox-abovepic-slaveroom">\
Upkeep: <span class="gold">$holding_cell.upkeep Gold</span>
</div>\
<div class="picbox-slaveroom">\
$holding_cell.body_pic
</div>\
<div class="statusbox-belowpic-slaveroom">\
</div>\
</div>\
</div>\
<div class="cardholder-infoside">\
<div class="textbox-inforoom-violet">\
<div class="status-container-slave">\
<div class="status-titlebox-slave">\
Information
</div>\
<div class="status-textbox-slave">\
</div>\
</div>\
<div class="stats-container-slave">\
<div class="stats-titlebox-slave">\
Stats
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.love.tooltip>>">><<-setup.slave_stats.love.icon>><</hovertip>>
<<hovertip "Max Love: <<-$holding_cell.love_limit>>">><span style="color:crimson">$holding_cell.love</span><</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.obedience.tooltip>>">><<-setup.slave_stats.obedience.icon>><</hovertip>>
<<hovertip "Max Obedience: <<-$holding_cell.obedience_limit>>">><span style="color:cyan">$holding_cell.obedience</span><</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.libido.tooltip>>">><<-setup.slave_stats.libido.icon>><</hovertip>>
<<hovertip "Max Libido: <<-$holding_cell.libido_limit>>">><span style="color:fuchsia">$holding_cell.libido</span><</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.strength.tooltip>>">><<-setup.slave_stats.strength.icon>><</hovertip>>
<<hovertip "Max Strength: <<-$holding_cell.strength_limit>>">><span style="color:orange">$holding_cell.strength</span><</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.intelligence.tooltip>>">><<-setup.slave_stats.intelligence.icon>><</hovertip>>
<<hovertip "Max Intelligence: <<-$holding_cell.intelligence_limit>>">><span style="color:darkorchid">$holding_cell.intelligence</span><</hovertip>>
</div>\
<div class="stats-smallcell-slave">\
<<hovertip "<<- setup.slave_stats.stress.tooltip>>">><<-setup.slave_stats.stress.icon>><</hovertip>>
<strong><span style="color:slategray">$holding_cell.cur_stress</span></strong>
</div>\
<div class="stats-titlebox-slave">\
Traits
</div>\
<div class="stats-bigcell-slave">\
<<for _t = 0; _t < $holding_cell.traits.length; _t++>>\
<<print '<span style="color:'+$holding_cell.traits[_t].color+'"><<hovertip "$holding_cell.traits[_t].tooltip">>$holding_cell.traits[_t].name<</hovertip>></span>'>><<if _t + 1 < $holding_cell.traits.length>>, <</if>>\
<</for>>\
</div>\
</div>\
<div class="rec-skill-container-slave">\
<div class="rec-titlebox-slave">\
Sex Skills
</div>\
<div class="skill-cell-slave">\
Handjobs
$holding_cell.handjob
</div>\
<div class="skill-cell-slave">\
Blowjobs
$holding_cell.blowjob
</div>\
<div class="skill-cell-slave">\
Titjobs
$holding_cell.titjob
</div>\
<div class="skill-cell-slave">\
Footjobs
$holding_cell.footjob
</div>\
<div class="skill-cell-slave">\
Missionary
$holding_cell.missionary
</div>\
<div class="skill-cell-slave">\
Cowgirl
$holding_cell.cowgirl
</div>\
<div class="skill-cell-slave">\
Doggy
$holding_cell.doggy
</div>\
<div class="skill-cell-slave">\
Anal
$holding_cell.anal
</div>\
</div>\
</div>\
<div class="button-container-slave">\
<div class="button-box-slave">\
<<if $open_room !== "">>\
<div class="purplebutton">\
<span id="1"><<button "Assign Room ^^1^^" "Slave Room">><<set $slave_room_list[$open_room] to clone($holding_cell)>><<set $slave_room_list[$open_room].total_days++>><<set $holding_cell to "">><<set $cur_slave to $slave_room_list[$open_room]>><<set $cur_slave_num to $open_room>><<set $slaveroom_page to "skill">><<unset $open_room>><</button>></span>
</div>\
<<else>>\
<div class="slaveoffbutton">\
<<button "Assign Room">><</button>>
</div>\
<</if>>\
</div>\
<div class="button-box-slave">\
<div class="slaveoffbutton">\
<<button "Train">><</button>>
</div>\
</div>\
<div class="button-box-slave">\
<div class="slaveoffbutton">\
<<button "Discipline">><</button>>
</div>\
</div>\
<div class="button-box-slave">\
<div class="slaveoffbutton">\
<<button "Scold">><</button>>
</div>\
</div>\
<div class="button-box-slave">\
<div class="slaveoffbutton">\
<<button "Day Off">><</button>>
</div>\
</div>\
<div class="button-box-slave purplebutton">\
<span id="6"><<button "View Skill/Stat ^^6^^">>\
<<if $slaveroom_page === "record">>\
<<set $slaveroom_page to "skill">>\
<<replace '.rec-skill-container-slave' t8n>><div class="rec-titlebox-slave">Sex Skills</div><div class="skill-cell-slave">Handjobs<br>$holding_cell.handjob</div><div class="skill-cell-slave">Blowjobs<br>$holding_cell.blowjob</div><div class="skill-cell-slave">Titjobs<br>$holding_cell.titjob</div><div class="skill-cell-slave">Footjobs<br>$holding_cell.footjob</div><div class="skill-cell-slave">Missionary<br>$holding_cell.missionary</div><div class="skill-cell-slave">Cowgirl<br>$holding_cell.cowgirl</div><div class="skill-cell-slave">Doggy<br>$holding_cell.doggy</div><div class="skill-cell-slave">Anal<br>$holding_cell.anal</div>\
<</replace>>\
<<elseif $slaveroom_page === "skill">>\
<<set $slaveroom_page to "record">>\
<<replace '.rec-skill-container-slave' t8n>><div class="rec-titlebox-slave">Records</div><div class="rec-cell-slave"><u>Days Owned</u><br>$holding_cell.total_days</div><div class="rec-cell-slave"><u>Days Off</u><br>$holding_cell.total_daysoff</div><div class="rec-cell-slave"><u>Days Injured</u><br>$holding_cell.total_injured</div><div class="rec-cell-slave"><u>Jobs Done</u><br>$holding_cell.total_jobs</div><div class="rec-cell-slave"><u>Quests Completed</u><br>$holding_cell.total_quests</div><div class="rec-cell-slave"><u>Classes Passed</u><br>$holding_cell.total_classes</div><div class="rec-cell-slave"><u>Times Trained</u><br>$holding_cell.total_trainings</div><div class="rec-cell-slave"><u>Times Disciplined</u><br>$holding_cell.total_disciplinings</div><div class="rec-cell-slave"><u>Gold Earned</u><br>$holding_cell.total_gold</div><div class="rec-cell-slave"><u>Treasures Received</u><br>$holding_cell.total_treasures</div><div class="rec-cell-slave"><u>EXP Given</u><br>$holding_cell.total_exp</div><div class="rec-cell-slave"><u>Reputation Gained</u><br>$holding_cell.total_reputation</div>\
<</replace>>\
<</if>>\
<</button>></span>
</div>\
</div>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Slave Room Manager]]>><</button>></span>
</div>\<<silently>>\
* SETUP ROOM *
<<set _summon to clone($summon)>>
<<set _spell_index to clone($spell_index)>>
<<set _target to clone($spell_targeting)>>
<<unset $summon, $target, $spell_index>>
<<SummonRoomSetup $raiders _summon>>
* SETUP RAIDER *
<<RaiderSetup $raiders _summon>>
* PRE COMBAT EFFECTS *
<<PreCombat $raiders _summon>>
* DANCER BUFF *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].class === "Dancer">>
<<DancerBuff $raiders[_i] _summon>>
<</if>>
<</for>>
* RAIDERS ATTACK *
<<for _i = 0; _i < $raiders.length; _i++>>
<<RaiderAttack $raiders[_i] _summon>>
<</for>>
* CREATURE NORMAL & SEXUAL ATTACK *
<<set $raiders[_target].attacked to true>>
<<for _i = 0; _i < $raiders.length; _i++>>
$raiders[_i].attacked
<<if $raiders[_i].attacked === true>>
<<NormalAttack $raiders[_i] _summon _summon.atk>>
<<SexualAttack $raiders[_i] _summon _summon.sex>>
<<AddStacks $raiders[_i] setup.sticky _summon.sticky_stacks true>>
<</if>>
<</for>>
* POST COMBAT EFFECTS *
<<for _r = 0; _r < $raiders.length; _r++>>
<<PostCombat $raiders[_r] _summon>>
<</for>>
ADDITIONAL STICKY AND HORNY
<<set _additional_text to []>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].attacked === true>>
<<if $raiders[_i].cur_lust / $raiders[_i].max_lust >= _summon.lust_float>>
TRIGGER TEXT
<<set _additional_text.push($raiders[_i].index)>>
PUSH STATUS
<<AddStacks $raiders[_i] setup.sticky _summon.sticky_stacks true>>
HORNY STATUS
<<if !$raiders[_i].status_names.includesAny(_summon.additional_status.id)>>
<<AddStatus $raiders[_i] setup.horny true>>
<</if>>
<</if>>
<</if>>
<</for>>
* Update Raider Report *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].attacked === true>>
<<if $raiders[_i].status_names.includes("Sticky")>>
<<for _z = 0; _z < $raiders[_i].statuses.length; _z++>>
<<if $raiders[_i].statuses[_z].id === "Sticky">>
<<set _sticky_gained to clone($raiders[_i].statuses[_z].gain)>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _text_triggers.status.sticky.includes($raiders[_i].index) && _text_triggers.status.horny.includes($raiders[_i].index)>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage, gained "+_sticky_gained+" Sticky and became Horny.">>
<<elseif _text_triggers.status.sticky.includes($raiders[_i].index)>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage and gained "+_sticky_gained+" Sticky.">>
<<elseif _text_triggers.status.horny.includes($raiders[_i].index)>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage and became Horny.">>
<<else>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage.">>
<</if>>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<</if>>
<</for>>
* CHOOSE RAIDER PICTURES *
SETUP RAIDER PICS ARRAY
<<set _picArray to clone(_summon.raider_pics)>>
<<for _i = 0; _i < $raiders.length; _i++>>
* Attacked Pictures *
<<if $raiders[_i].attacked === true>>
<<set $raiders[_i].pic to _picArray[$raiders[_i].body_type].pluck()>>
<</if>>
<</for>>
* CREATURE EXP & DAMAGE *
<<CreaturePostCombat $raiders _summon>>
* END OF COMBAT REPORT *
<<PostCombatReport $raiders _summon>>
* CLEAN UP *
<<CleanUp $raiders _summon>>
* DISPLAY INFO *
<<set _cardholderID to "cardholder-raid-"+$raiders.length+"raiders">>
<<set _cardinfoID to "cardinfo-raid-"+$raiders.length+"raiders">>
<<set _picboxID to "picbox-raid-"+$raiders.length+"raiders">>
<<set _textboxID to "textbox-raid-"+$raiders.length+"raiders">>
<</silently>>\
<div class="section">\
<<NextSpellButton>>\
<div class="cardholder-raid-playerside">\
<div class="cardinfo-raid-summon">\
<div class="roomtitle-raid-player">\
Between Floors
</div>\
<div class="picbox-raid-player">\
_room_image
</div>\
<div class="namebox-raid-player">\
<strong>_summon.name</strong>
---- Health: _summon.cur_hp / _summon.max_hp ----
</div>\
<div class="textbox-raid-player">\
<ul>\
<<CreatureRoomText _summon>>
<<BlessingTriggerText _summon>>
<<EffectEndingText _summon>>
</ul>\
</div>\
</div>\
</div>\
<div class="cardholder-raid-raiderside">\
<<for _r = 0; _r < $raiders.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_textboxID">\
<ul>\
<<RaiderAtkText $raiders[_r] _summon>>\
<<if $raiders[_r].attacked === true>>\
<li>The Honey Bee covered her in honey and started rubbing her body against her, dealing <span style="color:orange">$raiders[_r].dmg_taken Physical</span> damage and <span style="color:fuchsia">$raiders[_r].sex_taken Sexual</span> damage to her.</li>\
<<if _additional_text.includes($raiders[_r].index)>>\
<li>She gave into the pleasure and spent more time in the honey bath.</li>\
<</if>>\
<<RaiderFetishText $raiders[_r] _summon>>
<</if>>\
<<PostCombatText $raiders[_r] _summon>>
</ul>\
</div>\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\<<silently>>\
* VARIABLES *
<<set _rageCount to 0>> amount of Rage gained this combat
<<set _trampled_list to []>> list of Raiders who were trampled over
<<set _insatiableBool to false>> set to true if has enough rage
* SETUP ROOM *
<<RoomSetup $raiders $this_room>>
UPDATE RAGE EFFECT
<<if $this_room.effect_names.includes("Rage") && $this_room.name === "Insatiable Minotaur">>
ONLY USED AFTER MINOTAUR UPGRADES TO INSATIABLE DURING COMBAT
<<for _e = 0; _e < $this_room.effects.length; _e++>>
<<if $this_room.effects[_e].id === "Rage">>
<<if $this_room.effects[_e].atk_float > 0>>
<<set $this_room.effects[_e].atk_float to 0>>
<<set $this_room.effects[_e].sex_float to $this_room.insatiable_float * $this_room.effects[_e].count>>
<</break>>
<</if>>
<</if>>
<</for>>
<</if>>
<<CreatureStats $this_room>>
* SETUP RAIDER *
<<RaiderSetup $raiders>>
* PRE COMBAT EFFECTS *
<<PreCombat $raiders $this_room>>
* DANCER BUFF *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].class === "Dancer">>
<<DancerBuff $raiders[_i] $this_room>>
<</if>>
<</for>>
* INSATIABLE HORNY EFFECT *
<<if $this_room.name === "Insatiable Minotaur">>
<<if $this_room.effect_names.includes("Rage")>>
<<for _e = 0; _e < $this_room.effects.length; _e++>>
<<if $this_room.effects[_e].id === "Rage">>
<<if $this_room.effects[_e].count >= $this_room.insatiable_int>>
<<set _insatiableBool to true>>
<<for _r = 0; _r < $raiders.length; _r++>>
<<AddStatus $raiders[_r] setup.horny true>>
<<if _text_triggers.status.horny.includes($raiders[_r].index)>>
UPDATE RAIDER REPORT
<<set _entry to "She become Horny from his pheromones.">>
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_r].report.log.push(_lastLog)>>
<</if>>
<</for>>
<<break>>
<</if>>
<</if>>
<</for>>
<</if>>
<</if>>
* RAIDERS ATTACK *
<<for _i = 0; _i < $raiders.length; _i++>>
CURRENT RAGE
<<if $this_room.effect_names.includes("Rage")>>
<<for _e = 0; _e < $this_room.effects.length; _e++>>
<<if $this_room.effects[_e].id === "Rage">>
<<set _dmgMod to $this_room.effects[_e].dmg_mod>>
<<break>>
<</if>>
<</for>>
<<else>>
<<set _dmgMod to 1>>
<</if>>
<<RaiderAttack $raiders[_i] $this_room _dmgMod>>
<<if $raiders[_i].dmg_dealt > 0>>
* MINOTAUR GAINS RAGE *
<<if !$this_room.effect_names.includes("Rage")>>
RAGE BUFF
<<set _newBuff to clone(setup.creature_effect)>>
<<set _newBuff.name to "Rage">>
<<set _newBuff.id to "Rage">>
<<set _newBuff.effect_type to ["Creature"]>>
<<set _newBuff.duration to "raid">>
<<set _newBuff.count to 0>>
<<set _newBuff.icon to setup.effect_icons.creature>>
<<set $this_room.effects.push(_newBuff)>>
<<set $this_room.effect_names.push(_newBuff.id)>>
<</if>>
ADD RAGE
<<for _e = 0; _e < $this_room.effects.length; _e++>>
<<if $this_room.effects[_e].id === "Rage">>
UNDYING EXTRA STACKS
<<if Math.trunc(($this_room.cur_hp / $this_room.max_hp) * 100) <= $this_room.undying_percent && $this_room.name === "Undying Minotaur">>
<<set $this_room.effects[_e].count += $this_room.undying_int>>
<<set _rageCount += $this_room.undying_int>>
ADDITIONAL STACK FROM BRAWLERS
<<if $raiders[_i].class === "Brawler">>
<<set $this_room.effects[_e].count += $this_room.undying_int>>
<<set _rageCount += $this_room.undying_int>>
<</if>>
<<else>>
NORMAL STACKS
<<set $this_room.effects[_e].count++>>
<<set _rageCount++>>
ADDITIONAL STACK FROM BRAWLERS
<<if $raiders[_i].class === "Brawler">>
<<set $this_room.effects[_e].count++>>
<<set _rageCount++>>
<</if>>
<</if>>
CLAMP RAGE
<<if $this_room.name === "Undying Minotaur">>
<<set $this_room.effects[_e].count to $this_room.effects[_e].count.clamp(1, $this_room.undying_max)>>
<<else>>
<<set $this_room.effects[_e].count to $this_room.effects[_e].count.clamp(1, $this_room.rage_max)>>
<</if>>
UPDATE NAME AND TOOLTIP
<<set $this_room.effects[_e].name to "Rage x"+$this_room.effects[_e].count>>
<<set _mod to $this_room.rage_mod * $this_room.effects[_e].count * 100>>
<<if $this_room.name === "Insatiable Minotaur">>
<<set _sex to $this_room.insatiable_float * $this_room.effects[_e].count * 100>>
<<set $this_room.effects[_e].tooltip to "@@.sex;Sexual Attack@@ is increased by @@.sex;"+_sex+"%@@ and all damage taken is reduced by "+_mod+"%. Max "+$this_room.rage_max+" stacks.">>
<<set $this_room.effects[_e].sex_float to $this_room.insatiable_float * $this_room.effects[_e].count>>
<<elseif $this_room.name === "Undying Minotaur">>
<<set _atk to $this_room.rage_atk * $this_room.effects[_e].count * 100>>
<<set $this_room.effects[_e].tooltip to "@@.phy;Physical Attack@@ is increased by @@.phy;"+_atk+"%@@ and all damage taken is reduced by "+_mod+"%. Max "+$this_room.undying_max+" stacks.">>
<<else>>
<<set _atk to $this_room.rage_atk * $this_room.effects[_e].count * 100>>
<<set $this_room.effects[_e].tooltip to "@@.phy;Physical Attack@@ is increased by @@.phy;"+_atk+"%@@ and all damage taken is reduced by "+_mod+"%. Max "+$this_room.rage_max+" stacks.">>
<<set $this_room.effects[_e].atk_float to $this_room.rage_atk * $this_room.effects[_e].count>>
<</if>>
<</if>>
<</for>>
<</if>>
<</for>>
* MINOTAUR CHOOSES TARGET *
CURRENT RAGE
<<if $this_room.effect_names.includes("Rage")>>
<<for _e = 0; _e < $this_room.effects.length; _e++>>
<<if $this_room.effects[_e].id === "Rage">>
<<set _rageNum to clone($this_room.effects[_e].count)>>
<<break>>
<</if>>
<</for>>
<<else>>
<<set _rageNum to 0>>
<</if>>
<<if $this_room.name === "Charging Minotaur" && _rageNum - _rageCount >= $this_room.charging_int>>
<<set _index to $raiders.length - 1>>
<<set $raiders[_index].attacked to true>>
<<else>>
<<CreatureChooseTarget $raiders $this_room>>
<</if>>
* MINOTAUR NORMAL & SEXUAL ATTACK *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].attacked === true>>
<<NormalAttack $raiders[_i] $this_room $this_room.cur_atk>>
<<SexualAttack $raiders[_i] $this_room $this_room.cur_sex>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage.">>
<<elseif $this_room.name === "Charging Minotaur" && _rageNum - _rageCount >= $this_room.charging_int>>
<<set _atk to $this_room.cur_atk * $this_room.charging_float>>
<<NormalAttack $raiders[_i] $this_room _atk>>
<<set $raiders[_i].attacked to true>>
<<set _trampled_list.push($raiders[_i].index)>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ while trying to protect her backline.">>
<<else>>
UPDATE RAIDER REPORT
<<set _entry to "She was not attacked.">>
<</if>>
UPDATE RAIDER REPORT
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<</for>>
* POST COMBAT EFFECTS *
<<for _r = 0; _r < $raiders.length; _r++>>
<<PostCombat $raiders[_r] $this_room>>
<</for>>
* MINOTAUR EXP & DAMAGE *
<<CreaturePostCombat $raiders $this_room>>
* CHOOSE PICTURE *
SETUP PIC ARRAY
<<set _picArray to clone($this_room.raider_pics)>>
<<for _i = 0; _i < $raiders.length; _i++>>
* Attacked Pictures *
<<if $raiders[_i].attacked === true && !_trampled_list.includes($raiders[_i].index)>>
<<set $raiders[_i].pic to _picArray[$raiders[_i].body_type].pluck()>>
<<elseif $raiders[_i].status_names.includes("Captured")>>
<<set $raiders[_i].pic to _picArray[$raiders[_i].body_type].pluck()>>
<</if>>
<</for>>
* END OF COMBAT REPORT *
<<PostCombatReport $raiders $this_room>>
* CLEAN UP *
<<CleanUp $raiders $this_room>>
* DISPLAY INFO *
<<set _cardholderID to "cardholder-raid-"+$raiders.length+"raiders">>
<<set _cardinfoID to "cardinfo-raid-"+$raiders.length+"raiders">>
<<set _picboxID to "picbox-raid-"+$raiders.length+"raiders">>
<<set _cardpicClass to "cardpic-raid-"+$raiders.length+"raiders">>
<<set _nameboxID to "namebox-raid-"+$raiders.length+"raiders">>
<<set _textboxID to "textbox-raid-"+$raiders.length+"raiders">>
<</silently>>\
<div class="section">\
<<NextRoomButton>>\
<div class="cardholder-raid-playerside">\
<div class="cardinfo-raid-creature">\
<div class="roomtitle-raid-player">\
Floor $cur_room_num
</div>\
<div class="picbox-raid-player">\
_room_image
</div>\
<div class="namebox-raid-player">\
<strong>$this_room.name</strong>
---- Health: $this_room.cur_hp / $this_room.cur_max_hp ----
</div>\
<div class="textbox-raid-player">\
<ul>\
<<CreatureRoomText $this_room>>
<<if _rageCount > 0>>\
<li>He gained _rageCount Rage.</li>\
<</if>>\
<<if _insatiableBool === true>>\
<li>His Rage produced pheromones that affected the party.</li>\
<</if>>\
<<BlessingTriggerText $this_room>>
<<EffectEndingText $this_room>>
</ul>\
</div>\
</div>\
</div>\
<div class="cardholder-raid-raiderside">\
<<for _r = 0; _r < $raiders.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_textboxID">\
<ul>
<<DancerDanceText $raiders[_r] $this_room>>
<<RaiderAtkText $raiders[_r] $this_room>>
<<if $raiders[_r].attacked === true>>\
<<if $this_room.name === "Minotaur">>\
<li>She was attacked and pinned down by the $this_room.name, dealing <span style="color:orange">$raiders[_r].dmg_taken</span> Physical damage and <span style="color:fuchsia">$raiders[_r].sex_taken</span> Sexual damage to her.</li>\
<<elseif $this_room.name === "Charging Minotaur">>\
<<if _trampled_list.includes($raiders[_r].index)>>\
<li>The $this_room.name plowed right through her and dealt <span style="color:orange">$raiders[_r].dmg_taken</span> Physical damage.</li>\
<<else>>\
<li>She was unable to avoid the $this_room.name stampede and took <span style="color:orange">$raiders[_r].dmg_taken</span> Physical damage and <span style="color:fuchsia">$raiders[_r].sex_taken</span> Sexual damage.</li>\
<</if>>\
<<elseif $this_room.name === "Undying Minotaur">>\
<li>The $this_room.name's raging attacks was overbearing, dealing <span style="color:orange">$raiders[_r].dmg_taken</span> Physical damage and <span style="color:fuchsia">$raiders[_r].sex_taken</span> Sexual damage to her.</li>\
<<elseif $this_room.name === "Insatiable Minotaur">>\
<li>She was the target of the $this_room.name's sexual aggression, dealing <span style="color:orange">$raiders[_r].dmg_taken</span> Physical damage and <span style="color:fuchsia">$raiders[_r].sex_taken</span> Sexual damage to her.</li>\
<</if>>\
<<RaiderFetishText $raiders[_r] $this_room>>
<</if>>\
<<PostCombatText $raiders[_r] $this_room>>
</ul>\
</div>\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\<<widget "CreatureStats">>
_args[0].name is Creature
This widget is used to determine stats by adding all the effects it currently has to its base stats, then truncing it to present a whole number
* Set Base Stats *
<<set _args[0].cur_max_hp to clone(Math.trunc(_args[0].max_hp))>>
<<set _args[0].cur_atk to clone(Math.trunc(_args[0].atk))>>
<<set _args[0].cur_sex to clone(Math.trunc(_args[0].sex))>>
<<set _args[0].cur_pres to clone(Math.trunc(_args[0].pres))>>
<<set _args[0].cur_mres to clone(Math.trunc(_args[0].mres))>>
* Update Effects *
<<if _args[0].effect_names.includes("Savagery")>>
SPREADING SAVAGERY
<<for _e = 0; _e < _args[0].effects.length; _e++>>
<<if _args[0].effects[_e].id === "Savagery">>
<<set _args[0].effects[_e].atk_int to setup.blessing_04_12.int * _args[0].effects[_e].stack>>
<<set _args[0].effects[_e].sex_int to setup.blessing_04_12.int * _args[0].effects[_e].stack>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _args[0].effect_names.includes("Goddess's Power")>>
GODDESS'S POWER
<<for _e = 0; _e < _args[0].effects.length; _e++>>
<<if _args[0].effects[_e].id === "Goddess's Power">>
<<if _args[0].effect_names.includes("Savagery")>>
<<for _s = 0; _s < _args[0].effects.length; _s++>>
<<if _args[0].effects[_s].id === "Savagery">>
<<if _args[0].effects[_s].stack >= setup.blessing_04_12.check>>
<<set _bool to true>>
<<else>>
<<set _bool to false>>
<</if>>
<<break>>
<</if>>
<</for>>
<<else>>
<<set _bool to false>>
<</if>>
<<if _bool === true>>
<<set _args[0].effects[_e].atk_float to _args[0].effects[_e].float * 2>>
<<set _args[0].effects[_e].sex_float to _args[0].effects[_e].float * 2>>
<<else>>
<<set _args[0].effects[_e].atk_float to clone(_args[0].effects[_e].float)>>
<<set _args[0].effects[_e].sex_float to clone(_args[0].effects[_e].float)>>
<</if>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _args[0].effect_names.includes("Goddess's Endurance")>>
GODDESS'S ENDURANCE
<<for _e = 0; _e < _args[0].effects.length; _e++>>
<<if _args[0].effects[_e].id === "Goddess's Endurance">>
<<if _args[0].effect_names.includes("Cloak of Darkness")>>
<<set _args[0].effects[_e].pres_float to _args[0].effects[_e].float * 2>>
<<set _args[0].effects[_e].mres_float to _args[0].effects[_e].float * 2>>
<<else>>
<<set _args[0].effects[_e].pres_float to _args[0].effects[_e].float>>
<<set _args[0].effects[_e].mres_float to _args[0].effects[_e].float>>
<</if>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _args[0].effect_names.includes("Kindred Protection")>>
KINDRED PROTECTION
<<for _e = 0; _e < _args[0].effects.length; _e++>>
<<if _args[0].effects[_e].id === "Kindred Protection">>
<<set _count to -1>> start at -1 to subtract counting itself
<<for _t = 0; _t < $dungeon_floor_list.length; _t++>>
<<if $dungeon_floor_list[_t].room_type === "Creature">>
<<if $dungeon_floor_list[_t].creature_types.includesAny(_args[0].creature_types)>>
SHARES CREATURE TYPE WITH $dungeon_floor_list[_t].name
<<set _count++>>
<<else>>
DID NOT SHARE A CREATURE TYPE WITH $dungeon_floor_list[_t].name
<<continue>>
<</if>>
<<else>>
<<continue>>
<</if>>
<</for>>
UPDATE EFFECT
<<set _float to (_args[0].effects[_e].cur_float * _count).clamp(0, 10)>>
<<set _args[0].effects[_e].pres_float to _float>>
<<set _args[0].effects[_e].mres_float to _float>>
<<set _args[0].effects[_e].name to _args[0].id + " x" + _count>>
<<- _args[0].effects[_e].name>> UPDATED
<<break>>
<</if>>
<</for>>
<</if>>
<<if _args[0].effect_names.includes("Kindred Protection")>>
KINDRED MONSTROSITY
<<for _e = 0; _e < _args[0].effects.length; _e++>>
<<if _args[0].effects[_e].id === "Kindred Monstrosity">>
<<set _count to -1>> start at -1 to subtract counting itself
<<for _t = 0; _t < $dungeon_floor_list.length; _t++>>
<<if $dungeon_floor_list[_t].room_type === "Creature">>
<<if $dungeon_floor_list[_t].creature_types.includesAny(_args[0].creature_types)>>
SHARES CREATURE TYPE WITH $dungeon_floor_list[_t].name
<<set _count++>>
<<else>>
DID NOT SHARE A CREATURE TYPE WITH $dungeon_floor_list[_t].name
<<continue>>
<</if>>
<<else>>
<<continue>>
<</if>>
<</for>>
UPDATE EFFECT
<<set _float to (_args[0].effects[_e].cur_float * _count).clamp(0, 10)>>
<<set _args[0].effects[_e].atk_float to _float>>
<<set _args[0].effects[_e].sex_float to _float>>
<<set _args[0].effects[_e].name to _args[0].id + " x" + _count>>
<<- _args[0].effects[_e].name>> UPDATED
<<break>>
<</if>>
<</for>>
<</if>>
* Temporary Effects *
* Add Flat Stats *
<<for _e = 0; _e < _args[0].effects.length; _e++>>
* Health *
<<if _args[0].effects[_e].hp_int != 0>>
<<set _args[0].cur_max_hp += _args[0].effects[_e].hp_int>>
_args[0].effects[_e].name INCREASED @@.health;MAX HEALTH@@ BY @@.health;_args[0].effects[_e].hp_int@@
<</if>>
* Attack *
<<if _args[0].effects[_e].atk_int != 0>>
<<set _args[0].cur_atk += _args[0].effects[_e].atk_int>>
<<if _args[0].attack_type === "Physical">>
_args[0].effects[_e].name INCREASED @@.phy;PHYSICAL ATTACK@@ BY @@.phy;_args[0].effects[_e].atk_int@@
<<else>>
_args[0].effects[_e].name INCREASED @@.mag;MAGICAL ATTACK@@ BY @@.mag;_args[0].effects[_e].atk_int@@
<</if>>
<</if>>
* Sex *
<<if _args[0].effects[_e].sex_int != 0>>
<<set _args[0].cur_sex += _args[0].effects[_e].sex_int>>
_args[0].effects[_e].name INCREASED @@.sex;SEXUAL ATTACK@@ BY @@.sex;_args[0].effects[_e].sex_int@@
<</if>>
* Physical Resistance *
<<if _args[0].effects[_e].pres_int != 0>>
<<set _args[0].cur_pres += _args[0].effects[_e].pres_int>>
_args[0].effects[_e].name INCREASED @@.pres;PHYSICAL RESISTANCE@@ BY @@.pres;_args[0].effects[_e].pres_int@@
<</if>>
* Magical Resistance *
<<if _args[0].effects[_e].mres_int != 0>>
<<set _args[0].cur_mres += _args[0].effects[_e].mres_int>>
_args[0].effects[_e].name INCREASED @@.mres;MAGICAL RESISTANCE@@ BY @@.mres;_args[0].effects[_e].mres_int@@
<</if>>
<</for>>
* Add Percent Stats *
<<for _e = 0; _e < _args[0].effects.length; _e++>>
* Health *
<<if _args[0].effects[_e].hp_float != 0>>
_args[0].effects[_e].name INCREASED @@.health;MAX HEALTH@@ BY @@.health;<<- (Math.trunc(_args[0].cur_max_hp * _args[0].effects[_e].hp_float)).clamp(1, 1000000)>>@@
<<set _args[0].cur_max_hp += (Math.round(_args[0].cur_max_hp * _args[0].effects[_e].hp_float)).clamp(1, 1000000)>>
<</if>>
* Attack *
<<if _args[0].effects[_e].atk_float != 0>>
<<if _args[0].attack_type === "Physical">>
_args[0].effects[_e].name INCREASED @@.phy;PHYSICAL ATTACK@@ BY @@.phy;<<- (Math.trunc(_args[0].cur_atk * _args[0].effects[_e].atk_float)).clamp(1, 1000000)>>@@
<<else>>
_args[0].effects[_e].name INCREASED @@.mag;MAGICAL ATTACK@@ BY @@.mag;<<- (Math.trunc(_args[0].cur_atk * _args[0].effects[_e].atk_float)).clamp(1, 1000000)>>@@
<</if>>
<<set _args[0].cur_atk += (Math.round(_args[0].cur_atk * _args[0].effects[_e].atk_float)).clamp(1, 1000000)>>
<</if>>
* Sex *
<<if _args[0].effects[_e].sex_float != 0>>
_args[0].effects[_e].name INCREASED @@.sex;SEXUAL ATTACK@@ BY @@.sex;<<- (Math.round(_args[0].cur_sex * _args[0].effects[_e].sex_float)).clamp(1, 1000000)>>@@
<<set _args[0].cur_sex += (Math.round(_args[0].cur_sex * _args[0].effects[_e].sex_float)).clamp(1, 1000000)>>
<</if>>
* Physical Resistance *
<<if _args[0].effects[_e].pres_float != 0>>
_args[0].effects[_e].name INCREASED @@.pres;PHYSICAL RESISTANCE@@ BY @@.pres;<<- (Math.round(_args[0].cur_pres * _args[0].effects[_e].pres_float)).clamp(1, 1000000)>>@@
<<set _args[0].cur_pres += (Math.round(_args[0].cur_pres * _args[0].effects[_e].pres_float)).clamp(1, 1000000)>>
<</if>>
* Magical Resistance *
<<if _args[0].effects[_e].mres_float != 0>>
_args[0].effects[_e].name INCREASED @@.mres;MAGICAL RESISTANCE@@ BY @@.mres;<<- (Math.round(_args[0].cur_mres * _args[0].effects[_e].mres_float)).clamp(1, 1000000)>>@@
<<set _args[0].cur_mres += (Math.round(_args[0].cur_mres * _args[0].effects[_e].mres_float)).clamp(1, 1000000)>>
<</if>>
<</for>>
* Set Current Health if not in raid to Max Health *
<<if $is_raiding === false>>
<<set _args[0].cur_hp to _args[0].cur_max_hp>>
<<elseif $is_raiding === true && _args[0].cur_hp > _args[0].cur_max_hp>>
<<set _args[0].cur_hp to _args[0].cur_max_hp>>
<</if>>
* Final Stats *
_args[0].name STATS
@@.health;_args[0].cur_max_hp@@
<<if _args[0].attack_type === "Physical">>\
@@.phy;_args[0].cur_atk@@
<<else>>\
@@.mag;_args[0].cur_atk@@
<</if>>\
@@.sex;_args[0].cur_sex@@
@@.pres;_args[0].cur_pres@@
@@.mres;_args[0].cur_mres@@
<</widget>>
<<widget "TrapStats">>
_args[0].name is Trap
This widget is used to determine stats by adding all the effects it currently has to its base stats, then truncing it to present a whole number
* Set Base Stats *
<<set _args[0].cur_atk to clone(Math.trunc(_args[0].atk))>> CUR ATTACK: _args[0].cur_atk
<<set _args[0].cur_sex to clone(Math.trunc(_args[0].sex))>> CUR SEX: _args[0].cur_sex
<<set _args[0].cur_check to clone(Math.trunc(_args[0].check))>> CUR CHECK: _args[0].cur_check
* Update Effects *
<<if _args[0].effect_names.includes("Goddess's Ingenuity")>>
GODDESS'S INGENUITY
<<for _e = 0; _e < _args[0].effects.length; _e++>>
<<if _args[0].effects[_e].id === "Goddess's Ingenuity">>
<<if $pc_blessing_list.includes("Machine Mastery")>>
<<set _args[0].effects[_e].check_float to _args[0].effects[_e].float * 2>>
<<else>>
<<set _args[0].effects[_e].check_float to clone(_args[0].effects[_e].float)>>
<</if>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _args[0].effect_names.includes("Cunning Construction")>>
CUNNING CONSTRUCTION
<<for _e = 0; _e < _args[0].effects.length; _e++>>
<<if _args[0].effects[_e].id === "Cunning Construction">>
<<if $pc_blessing_list.includes("Machine Mastery")>>
<<set _args[0].effects[_e].atk_float to _args[0].effects[_e].float * 2>>
<<set _args[0].effects[_e].sex_float to _args[0].effects[_e].float * 2>>
<<else>>
<<set _args[0].effects[_e].atk_float to clone(_args[0].effects[_e].float)>>
<<set _args[0].effects[_e].sex_float to clone(_args[0].effects[_e].float)>>
<</if>>
<<break>>
<</if>>
<</for>>
<</if>>
* Temporary Effects *
* Add Flat Stats *
<<for _e = 0; _e < _args[0].effects.length; _e++>>
* Attack *
<<if _args[0].cur_atk > 0 && _args[0].effects[_e].atk_int != 0>>
<<set _args[0].cur_atk += _args[0].effects[_e].atk_int>>
<<if _args[0].attack_type === "Physical">>
_args[0].effects[_e].name INCREASED @@.phy;PHYSICAL ATTACK@@ BY @@.phy;_args[0].effects[_e].atk_int@@
<<elseif _args[0].attack_type === "Magical">>
_args[0].effects[_e].name INCREASED @@.mag;MAGICAL ATTACK@@ BY @@.mag;_args[0].effects[_e].atk_int@@
<<else>>
_args[0].effects[_e].name INCREASED TRUE ATTACK BY_args[0].effects[_e].atk_int
<</if>>
<</if>>
* Sex *
<<if _args[0].cur_sex > 0 && _args[0].effects[_e].sex_int != 0>>
<<set _args[0].cur_sex += _args[0].effects[_e].sex_int>>
_args[0].effects[_e].name INCREASED @@.sex;SEXUAL ATTACK@@ BY @@.sex;_args[0].effects[_e].sex_int@@
<</if>>
* Trap or Spellcheck *
<<if _args[0].effects[_e].check_int != 0>>
<<set _args[0].cur_check += _args[0].effects[_e].check_int>>
_args[0].effects[_e].name INCREASED TRAPCHECK OR SPELLCHECK BY _args[0].effects[_e].check_int
<</if>>
<</for>>
* Add Percent Stats *
<<for _e = 0; _e < _args[0].effects.length; _e++>>
* Attack *
<<if _args[0].effects[_e].atk_float != 0 && _args[0].cur_atk > 0>>
<<if _args[0].attack_type === "Physical">>
_args[0].effects[_e].name INCREASED @@.phy;PHYSICAL ATTACK@@ BY @@.phy;<<- (Math.trunc(_args[0].cur_atk * _args[0].effects[_e].atk_float)).clamp(1, 1000000)>>@@
<<elseif _args[0].attack_type === "Magical">>
_args[0].effects[_e].name INCREASED @@.mag;MAGICAL ATTACK@@ BY @@.mag;<<- (Math.trunc(_args[0].cur_atk * _args[0].effects[_e].atk_float)).clamp(1, 1000000)>>@@
<<else>>
_args[0].effects[_e].name INCREASED TRUE ATTACK BY <<- (Math.trunc(_args[0].cur_atk * _args[0].effects[_e].atk_float)).clamp(1, 1000000)>>
<</if>>
<<set _args[0].cur_atk += (Math.round(_args[0].cur_atk * _args[0].effects[_e].atk_float)).clamp(1, 1000000)>>
<</if>>
* Sex *
<<if _args[0].effects[_e].sex_float != 0 && _args[0].cur_sex > 0>>
_args[0].effects[_e].name INCREASED @@.sex;SEXUAL ATTACK@@ BY @@.sex;<<- (Math.round(_args[0].cur_sex * _args[0].effects[_e].sex_float)).clamp(1, 1000000)>>@@
<<set _args[0].cur_sex += (Math.round(_args[0].cur_sex * _args[0].effects[_e].sex_float)).clamp(1, 1000000)>>
<</if>>
* Trap or Spell Check *
<<if _args[0].effects[_e].check_float != 0>>
_args[0].effects[_e].name INCREASED TRAPCHECK OR SPELLCHECK BY <<- (Math.round(_args[0].cur_check * _args[0].effects[_e].check_float)).clamp(1, 1000000)>>
<<set _args[0].cur_check += (Math.round(_args[0].cur_check * _args[0].effects[_e].check_float)).clamp(1, 1000000)>>
<</if>>
<</for>>
* Final Stats *
_args[0].name STATS
<<if _args[0].attack_type === "Physical">>\
@@.phy;_args[0].cur_atk@@
<<elseif _args[0].attack_type === "Magical">>\
@@.mag;_args[0].cur_atk@@
<<else>>
_args[0].cur_atk
<</if>>\
@@.sex;_args[0].cur_sex@@
_args[0].cur_check
<</widget>>
<<widget "NewCreature">>
_args[0].name is Creature
Widget Adds existing Blessing and other permanent effects to newly summoned creature
GODDESS POWER BLESSING
<<set _blessing to $pc_blessing_list.delete("Goddess's Power I", "Goddess's Power II", "Goddess's Power III", "Goddess's Power IV", "Goddess's Power V")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.power.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.power[_z].name)>>
<<set _info to clone(setup.allBlessingList.power[_z])>>
CREATE EFFECT
<<set _newBuff to clone(setup.creature_effect)>>
<<set _newBuff.name to _info.name>>
<<set _newBuff.id to _info.id>>
<<set _newBuff.effect_types to _info.effect_types>>
<<set _newBuff.float to _info.float>>
<<set _newBuff.icon to setup.effect_icons.blessing>>
TOOLTIP
<<set _num to _info.float * 100>>
<<if _args[0].attack_type === "Physical">>
<<set _newBuff.tooltip to "Increases @@.phy;Physical@@ and @@.sex;Sexual@@ Attack stats by " + _num + "%.">>
<<else>>
<<set _newBuff.tooltip to "Increases @@.mag;Magical@@ and @@.sex;Sexual@@ Attack stats by " + _num + "%.">>
<</if>>
ADD EFFECT
<<set _args[0].effects.push(_newBuff)>>
<<set _args[0].effect_names.push(_newBuff.id)>>
_args[0].name GAINED _info.id BLESSING EFFECT
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
LUSTFUL PENETRATION
<<set _blessing to $pc_blessing_list.delete("Lustful Penetration I", "Lustful Penetration II")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.power.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.power[_z].name)>>
<<set _info to clone(setup.allBlessingList.power[_z])>>
CREATE EFFECT
<<set _newBuff to clone(setup.creature_effect)>>
<<set _newBuff.name to _info.name>>
<<set _newBuff.id to _info.id>>
<<set _newBuff.effect_types to _info.effect_types>>
<<set _newBuff.float to _info.float>>
<<set _newBuff.tooltip to _info.effect_tooltip>>
<<set _newBuff.icon to setup.effect_icons.blessing>>
ADD EFFECT
<<set _args[0].effects.push(_newBuff)>>
<<set _args[0].effect_names.push(_newBuff.id)>>
_args[0].name GAINED _info.id BLESSING EFFECT
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
DIABOLIC INTENT
<<if $pc_blessing_list.includes("Diabolic Intent")>>
<<set _info to clone(setup.blessing_04_8)>>
CREATE EFFECT
<<set _newBuff to clone(setup.creature_effect)>>
<<set _newBuff.name to _info.name>>
<<set _newBuff.id to _info.id>>
<<set _newBuff.effect_types to _info.effect_types>>
<<set _newBuff.tooltip to _info.effect_tooltip>>
<<set _newBuff.icon to setup.effect_icons.blessing>>
ADD EFFECT
<<set _args[0].effects.push(_newBuff)>>
<<set _args[0].effect_names.push(_newBuff.id)>>
_args[0].name GAINED _info.id BLESSING EFFECT
<</if>>
GODDESS ENDURANCE BLESSING
<<set _blessing to $pc_blessing_list.delete("Goddess's Endurance I", "Goddess's Endurance II", "Goddess's Endurance III", "Goddess's Endurance IV", "Goddess's Endurance V")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.endurance.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.endurance[_z].name)>>
<<set _info to clone(setup.allBlessingList.endurance[_z])>>
CREATE EFFECT
<<set _newBuff to clone(setup.creature_effect)>>
<<set _newBuff.name to _info.name>>
<<set _newBuff.id to _info.id>>
<<set _newBuff.effect_types to ["Permanent"]>>
<<set _newBuff.float to _info.float>>
<<set _newBuff.icon to setup.effect_icons.blessing>>
TOOLTIP
<<set _num to _info.float * 100>>
<<set _newBuff.tooltip to "Increases @@.pres;Physical@@ and @@.mres;Magical@@ Resistance stats by " + _num + "%.">>
ADD EFFECT
<<set _args[0].effects.push(_newBuff)>>
<<set _args[0].effect_names.push(_newBuff.id)>>
_args[0].name GAINED _info.id BLESSING EFFECT
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
NIGHT'S BLESSING
<<set _blessing to $pc_blessing_list.delete("Night's Blessing I", "Night's Blessing II")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.endurance.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.endurance[_z].name)>>
<<set _info to clone(setup.allBlessingList.endurance[_z])>>
CREATE EFFECT
<<set _newBuff to clone(setup.creature_effect)>>
<<set _newBuff.name to _info.name>>
<<set _newBuff.id to _info.id>>
<<set _newBuff.effect_types to ["Permanent"]>>
<<set _newBuff.float to _info.float>>
<<set _newBuff.tooltip to _info.effect_tooltip>>
<<set _newBuff.icon to setup.effect_icons.blessing>>
ADD EFFECT
<<set _args[0].effects.push(_newBuff)>>
<<set _args[0].effect_names.push(_newBuff.id)>>
_args[0].name GAINED _info.id BLESSING EFFECT
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
HARD-LINE
<<if $pc_blessing_list.includes("Hard-line")>>
CREATE EFFECT
<<set _newBuff to clone(setup.creature_effect)>>
<<set _newBuff.name to setup.blessing_05_8.name>>
<<set _newBuff.id to setup.blessing_05_8.id>>
<<set _newBuff.effect_types to ["Permanent"]>>
<<set _newBuff.tooltip to setup.blessing_05_8.effect_tooltip>>
<<set _newBuff.icon to setup.effect_icons.blessing>>
ADD EFFECT
<<set _args[0].effects.push(_newBuff)>>
<<set _args[0].effect_names.push(_newBuff.id)>>
_args[0].name GAINED setup.blessing_05_8.id BLESSING EFFECT
<</if>>
<</widget>>
<<widget "NewTrap">>
_args[0].name is Trap
Widget Adds existing Blessing and other permanent effects to newly constructed trap
CUNNING CONSTRUCTION
<<set _blessing to $pc_blessing_list.delete("Cunning Construction I", "Cunning Construction II", "Cunning Construction III")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.ingenuity.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.ingenuity[_z].name)>>
<<set _info to clone(setup.allBlessingList.ingenuity[_z])>>
CREATE EFFECT
<<set _newBuff to clone(setup.trap_effect)>>
<<set _newBuff.name to _info.name>>
<<set _newBuff.id to _info.id>>
<<set _newBuff.effect_types to ["Permanent"]>>
<<set _newBuff.float to _info.float>>
<<set _newBuff.icon to setup.effect_icons.blessing>>
TOOLTIP
<<set _num to _info.float * 100>>
<<if _args[0].attack_type === "Physical">>
<<set _newBuff.tooltip to "Increases @@.phy;Physical@@ and @@.sex;Sexual@@ damage by " + _num + "%.">>
<<elseif _args[0].attack_type === "Magical">>
<<set _newBuff.tooltip to "Increases @@.mag;Magical@@ and @@.sex;Sexual@@ damage by " + _num + "%.">>
<<elseif _args[0].attack_type === "True">>
<<set _newBuff.tooltip to "Increases True and @@.sex;Sexual@@ damage by " + _num + "%.">>
<</if>>
ADD EFFECT
<<set _args[0].effects.push(_newBuff)>>
<<set _args[0].effect_names.push(_newBuff.id)>>
_args[0].name GAINED _info.id BLESSING EFFECT
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
LEWD MASTERMIND
<<set _blessing to $pc_blessing_list.delete("Lewd Mastermind I", "Lewd Mastermind II")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.ingenuity.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.ingenuity[_z].name)>>
<<set _info to clone(setup.allBlessingList.ingenuity[_z])>>
CREATE EFFECT
<<set _newBuff to clone(setup.trap_effect)>>
<<set _newBuff.name to _info.name>>
<<set _newBuff.id to _info.id>>
<<set _newBuff.effect_types to ["Permanent"]>>
<<set _newBuff.float to _info.float>>
<<set _newBuff.tooltip to _info.effect_tooltip>>
<<set _newBuff.icon to setup.effect_icons.blessing>>
ADD EFFECT
<<set _args[0].effects.push(_newBuff)>>
<<set _args[0].effect_names.push(_newBuff.id)>>
_args[0].name GAINED _info.id BLESSING EFFECT
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
GODDESS'S INGENUITY
<<set _blessing to $pc_blessing_list.delete("Goddess's Ingenuity I", "Goddess's Ingenuity II", "Goddess's Ingenuity III", "Goddess's Ingenuity IV", "Goddess's Ingenuity V")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.ingenuity.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.ingenuity[_z].name)>>
<<set _info to clone(setup.allBlessingList.ingenuity[_z])>>
CHECK _info.float
CREATE EFFECT
<<set _newBuff to clone(setup.trap_effect)>>
<<set _newBuff.name to _info.name>>
<<set _newBuff.id to _info.id>>
<<set _newBuff.effect_types to ["Permanent"]>>
<<set _newBuff.float to _info.float>>
<<set _newBuff.icon to setup.effect_icons.blessing>>
TOOLTIP
<<set _num to _newBuff.float * 100>>
<<if _args[0].check_type === "Trapcheck">>
<<set _newBuff.tooltip to "Increases Trapcheck by " + _num + "%.">>
<<elseif _args[0].check_type === "Spellcheck">>
<<set _newBuff.tooltip to "Increases Spellcheck by " + _num + "%.">>
<</if>>
ADD EFFECT
<<set _args[0].effects.push(_newBuff)>>
<<set _args[0].effect_names.push(_newBuff.id)>>
_args[0].name GAINED _info.id BLESSING EFFECT
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
<<break>>
<</if>>
<</for>>
<</if>>
<</widget>>
<<widget "DungeonEffects">>
_args[0].name is the unit
End of raid: _args[1]
Widget used to reduce effect CD and remove effects as needed
<<if _args[1] === true>>
Removes all non-permanent effects at the end of the night
<<set _remove_effect_list to []>>
<<for _e = 0; _e < _args[0].effects.length; _e++>>
<<if !_args[0].effects[_e].effect_types.includes("Permanent")>>
<<- _args[0].effects[_e].name>> FOUND
ADD INDEX TO LIST
<<set _remove_effect_list.push(_e)>>
<<else>>
KEEPING <<- _args[0].effects[_e].name>>
<</if>>
<</for>>
REMOVE EFFECTS
<<set _remove to _args[0].effects.deleteAt(_remove_effect_list)>>
<<set _removeNames to _args[0].effect_names.deleteAt(_remove_effect_list)>>
EFFECTS REMOVED <<- _removeNames>>
<<else>>
Reduce CD of all COMBAT effects and remove them after reaching 0, remove shields that have no shield power left, remove temporary effects
<<set _ended_effects to []>> holds list of effects that have ended this encounter
<<set _remove_effect_list to []>>
<<for _e = 0; _e < _args[0].effects.length; _e++>>
<<if _args[0].effects[_e].effect_types.includes("Duration")>>
<<- _args[0].effects[_e].name>> FOUND
<<set _args[0].effects[_e].duration-->>
<<if _args[0].effects[_e].duration <= 0>>
ADD INDEX TO LIST
<<set _ended_effects.push(clone(_args[0].effects[_e]))>>
<<set _remove_effect_list.push(_e)>>
<<else>>
DURATION LEFT IS _args[0].effects[_e].duration
<<set _args[0].effects[_e].name to _args[0].effects[_e].id+" x"+_args[0].effects[_e].duration>>
<</if>>
<<elseif _args[0].effects[_e].effect_types.includes("Shield")>>
<<- _args[0].effects[_e].name>> FOUND
<<if _args[0].effects[_e].shield <= 0>>
ADD INDEX TO LIST
<<set _ended_effects.push(clone(_args[0].effects[_e]))>>
<<set _remove_effect_list.push(_e)>>
<<else>>
SHIELD LEFT IS _args[0].effects[_e].shield
<</if>>
<<elseif _args[0].effects[_e].effect_types.includes("Temporary")>>
ADD INDEX TO LIST
<<set _remove_effect_list.push(_e)>>
<</if>>
<</for>>
REMOVE EFFECTS
<<set _remove to _args[0].effects.deleteAt(_remove_effect_list)>>
<<set _removeNames to _args[0].effect_names.deleteAt(_remove_effect_list)>>
<</if>>
<</widget>><<widget "UpdateSpell">>
_args[0].id is Spell being updated
* Update Spell Modifiers *
<<set _spell_modifiers to {
flat_dmg: 0,
dmg: 0,
flat_check: 0,
check: 0,
support: 0,
duration: 0,
flat_manipulation: 0,
manipulation: 0,
}>>
GODDESS SORCERY
<<set _blessing to $pc_blessing_list.delete("Goddess's Sorcery I", "Goddess's Sorcery II", "Goddess's Sorcery III", "Goddess's Sorcery IV", "Goddess's Sorcery V")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.sorcery.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.sorcery[_z].name)>>
INCREASE CHECK
<<set _spell_modifiers.check += setup.allBlessingList.sorcery[_z].float>>
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
END LOOP
<<break>>
<</if>>
<</for>>
<</if>>
RELIABLE SORCERER
<<set _blessing to $pc_blessing_list.delete("Reliable Sorcerer I", "Reliable Sorcerer II")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.sorcery.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.sorcery[_z].name)>>
INCREASE CHECK
<<set _spell_modifiers.flat_manipulation += setup.allBlessingList.sorcery[_z].int>>
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
END LOOP
<<break>>
<</if>>
<</for>>
<</if>>
MALICIOUS MAGE
<<set _blessing to $pc_blessing_list.delete("Malicious Mage I", "Malicious Mage II", "Malicious Mage III")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.sorcery.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.sorcery[_z].name)>>
INCREASE CHECK
<<set _spell_modifiers.dmg += setup.allBlessingList.sorcery[_z].float>>
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
END LOOP
<<break>>
<</if>>
<</for>>
<</if>>
GODDESS MASTERY
<<set _blessing to $pc_blessing_list.delete("Goddess's Mastery I", "Goddess's Mastery II", "Goddess's Mastery III", "Goddess's Mastery IV", "Goddess's Mastery V")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.mastery.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.mastery[_z].name)>>
INCREASE CHECK
<<set _spell_modifiers.support += setup.allBlessingList.mastery[_z].float>>
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
END LOOP
<<break>>
<</if>>
<</for>>
<</if>>
RELIABLE ENCHANTER
<<set _blessing to $pc_blessing_list.delete("Reliable Enchanter I", "Reliable Enchanter II")>>
<<if _blessing.length > 0>>
<<for _z = 0; _z < setup.allBlessingList.mastery.length; _z++>>
<<if _blessing.includesAny(setup.allBlessingList.mastery[_z].name)>>
INCREASE CHECK
<<set _spell_modifiers.duration += setup.allBlessingList.mastery[_z].int>>
ADD BLESSINGS BACK TO LIST
<<set $pc_blessing_list to $pc_blessing_list.concat(_blessing)>>
END LOOP
<<break>>
<</if>>
<</for>>
<</if>>
* Update Spells *
<<switch _args[0].id>>
<<case "Black Shield">>
--- Black Shield ---
SET CURRENT SHIELD
<<set _args[0].cur_shield to Math.trunc(setup.black_shield_spell.base_shield + (setup.black_shield_spell.shield_per_level * $pc_level))>>
SET CURRENT RESISTANCES
<<set _args[0].cur_res to Math.trunc(setup.black_shield_spell.base_res + (setup.black_shield_spell.res_per_level * $pc_level))>>
SET DURATION
<<set _args[0].cur_duration to _args[0].base_duration + _spell_modifiers.duration>>
ADD MODIFIERS
<<if _spell_modifiers.support > 0>>
<<set _args[0].cur_shield += (Math.round(_args[0].cur_shield * _spell_modifiers.support)).clamp(1, 1000000)>>
<<set _args[0].cur_res += (Math.round(_args[0].cur_res * _spell_modifiers.support)).clamp(1, 1000000)>>
<</if>>
UPDATE TOOLTIP
<<set _args[0].tooltip to "Grants a Creature a shield that absorbs "+_args[0].cur_shield+" damage for the next "+_args[0].cur_duration+" Encounters. The Creature's @@.pres;Physical Resistance@@ and @@.mres;Magical Resistance@@ are increased by "+_args[0].cur_res+" while shielded.">>
<<case "Confusion">>
--- Confusion ---
SET CURRENT AMOUNTS
<<set _args[0].cur_check to Math.trunc(setup.confusion_spell.base_check + (setup.confusion_spell.check_per_level * $pc_level))>>
ADD MODIFIERS
<<set _args[0].cur_check += _spell_modifiers.flat_check>>
<<set _args[0].cur_check += _spell_modifiers.flat_manipulation>>
<<if _spell_modifiers.check > 0>>
<<set _args[0].cur_check += (Math.round(_args[0].cur_check * _spell_modifiers.check)).clamp(1, 1000000)>>
<</if>>
UPDATE TOOLTIP
<<set _args[0].tooltip to "Inflicts a Raider with the <<hovertip '<<print setup.absentminded.tooltip>>'>>Absent Minded<</hovertip>> Trait if they fail the @@.spell;"+_args[0].cur_check+" Spellcheck@@.">>
<<case "Giant Growth">>
--- Giant Growth ---
SET CURRENT AMOUNTS
<<set _args[0].cur_health to Math.trunc(setup.giantgrowth_spell.base_health + (setup.giantgrowth_spell.health_per_level * $pc_level))>>
<<set _args[0].cur_atk to Math.trunc(setup.giantgrowth_spell.base_atk + (setup.giantgrowth_spell.atk_per_level * $pc_level))>>
SET DURATION
<<set _args[0].cur_duration to _args[0].base_duration + _spell_modifiers.duration>>
ADD MODIFIERS
<<if _spell_modifiers.support > 0>>
<<set _args[0].cur_health += (Math.round(_args[0].cur_health * _spell_modifiers.support)).clamp(1, 1000000)>>
<<set _args[0].cur_atk += (Math.round(_args[0].cur_atk * _spell_modifiers.support)).clamp(1, 1000000)>>
<</if>>
UPDATE TOOLTIP
<<set _args[0].tooltip to "Increase a Creature's @@.health;Health@@ by @@.health;"+_args[0].cur_health+"@@ and its @@.phy;Physical@@/@@.mag;Magical@@ and @@.sex;Sexual@@ Attack stats by "+_args[0].cur_atk+" for the next "+_args[0].cur_duration+" Encounters.">>
<<case "Heal">>
--- Heal ---
SET CURRENT HEAL
<<set _args[0].cur_heal to Math.trunc(setup.heal_spell.base_amount + (setup.heal_spell.amount_per_level * $pc_level))>>
ADD MODIFIERS
<<if _spell_modifiers.support > 0>>
<<set _args[0].cur_heal += (Math.round(_args[0].cur_heal * _spell_modifiers.support)).clamp(1, 1000000)>>
<</if>>
UPDATE TOOLTIP
<<set _args[0].tooltip to "Restores @@.health;"+_args[0].cur_heal+" Health@@ to a Creature.">>
<<case "Hypnosis">>
--- Hypnosis ---
SET CURRENT AMOUNTS
<<set _args[0].cur_check to Math.trunc(setup.hypnosis_spell.base_check + (setup.hypnosis_spell.check_per_level * $pc_level))>>
<<set _args[0].cur_dmg to Math.trunc(setup.hypnosis_spell.base_dmg + (setup.hypnosis_spell.dmg_per_level * $pc_level))>>
<<set _args[0].cur_sex to Math.trunc(setup.hypnosis_spell.base_sex + (setup.hypnosis_spell.sex_per_level * $pc_level))>>
ADD MODIFIERS
<<if _spell_modifiers.check > 0>>
<<set _args[0].cur_check += (Math.round(_args[0].cur_check * _spell_modifiers.check)).clamp(1, 1000000)>>
<</if>>
<<if _spell_modifiers.flat_dmg > 0>>
<<set _args[0].cur_dmg += _spell_modifiers.flat_dmg>>
<<set _args[0].cur_sex += _spell_modifiers.flat_dmg>>
<</if>>
<<if _spell_modifiers.dmg > 0>>
<<set _args[0].cur_dmg += (Math.round(_args[0].cur_dmg * _spell_modifiers.dmg)).clamp(1, 1000000)>>
<<set _args[0].cur_sex += (Math.round(_args[0].cur_sex * _spell_modifiers.dmg)).clamp(1, 1000000)>>
<</if>>
UPDATE TOOLTIP
<<set _args[0].tooltip to "Deals @@.mag;"+_args[0].cur_dmg+" Magical@@ damage and @@.sex;"+_args[0].cur_sex+" Sexual@@ damage to a Raider. If the Raider fails the @@.spell;"+_args[0].cur_check+" Spellcheck@@, they become <<hovertip '<<print setup.brainwashed.tooltip>>'>>Brainwashed<</hovertip>>. Cannot Capture.">>
<<case "Jolt">>
--- Jolt ---
SET CURRENT AMOUNTS
<<set _args[0].cur_check to Math.trunc(setup.jolt_spell.base_check + (setup.jolt_spell.check_per_level * $pc_level))>>
<<set _args[0].cur_dmg to Math.trunc(setup.jolt_spell.base_dmg + (setup.jolt_spell.dmg_per_level * $pc_level))>>
<<set _args[0].cur_sex to Math.trunc(setup.jolt_spell.base_sex + (setup.jolt_spell.sex_per_level * $pc_level))>>
ADD MODIFIERS
<<if _spell_modifiers.check > 0>>
<<set _args[0].cur_check += (Math.round(_args[0].cur_check * _spell_modifiers.check)).clamp(1, 1000000)>>
<</if>>
<<if _spell_modifiers.flat_dmg > 0>>
<<set _args[0].cur_dmg += _spell_modifiers.flat_dmg>>
<<set _args[0].cur_sex += _spell_modifiers.flat_dmg>>
<</if>>
<<if _spell_modifiers.dmg > 0>>
<<set _args[0].cur_dmg += (Math.round(_args[0].cur_dmg * _spell_modifiers.dmg)).clamp(1, 1000000)>>
<<set _args[0].cur_sex += (Math.round(_args[0].cur_sex * _spell_modifiers.dmg)).clamp(1, 1000000)>>
<</if>>
UPDATE TOOLTIP
<<set _args[0].tooltip to "Deals @@.mag;"+_args[0].cur_dmg+" Magical@@ damage and @@.sex;"+_args[0].cur_sex+" Sexual@@ damage to a Raider. If the Raider fails the @@.spell;"+_args[0].cur_check+" Spellcheck@@, they become <<hovertip '<<print setup.stimulated.tooltip>>'>>Stimulated<</hovertip>>. Cannot Capture.">>
<<case "Imprison">>
--- Imprison ---
SET CURRENT CHECK
<<set _args[0].cur_check to Math.trunc(setup.imprison_spell.base_check + (setup.imprison_spell.check_per_level * $pc_level))>>
ADD MODIFIERS
<<set _args[0].cur_check += _spell_modifiers.flat_check>>
<<set _args[0].cur_check += _spell_modifiers.flat_manipulation>>
<<if _spell_modifiers.check > 0>>
<<set _args[0].cur_check += (Math.round(_args[0].cur_check * _spell_modifiers.check)).clamp(1, 1000000)>>
<</if>>
UPDATE TOOLTIP
<<set _args[0].tooltip to "Captures a single Raider if they fail the "+_args[0].cur_check+" Spellcheck. Increase the Spellcheck based on the target's @@.health;missing Health@@, up to "+Math.round(_args[0].cur_check * setup.imprison_spell.mod)+" Spellcheck. Can only Capture one Raider per night.">>
<<case "Lure">>
--- Lure ---
SET CURRENT CHECK
<<set _args[0].cur_check to Math.trunc(setup.lure_spell.base_check + (setup.lure_spell.check_per_level * $pc_level))>>
ADD MODIFIERS
<<set _args[0].cur_check += _spell_modifiers.flat_check>>
<<set _args[0].cur_check += _spell_modifiers.flat_manipulation>>
<<if _spell_modifiers.check > 0>>
<<set _args[0].cur_check += (Math.round(_args[0].cur_check * _spell_modifiers.check)).clamp(1, 1000000)>>
<</if>>
UPDATE TOOLTIP
<<set _args[0].tooltip to "Captures a single Raider if they fail the "+_args[0].cur_check+" Spellcheck. Increase the Spellcheck based on the target's @@.lust;Lust@@, up to "+Math.round(_args[0].cur_check * setup.lure_spell.mod)+" Spellcheck. Can only Capture one Raider per night.">>
<<case "Shrouding Mist">>
--- Shrouding Mist ---
SET CURRENT CHECK
<<set _args[0].cur_check to Math.trunc(setup.shrouded_spell.base_check + (setup.shrouded_spell.check_per_level * $pc_level))>>
SET DURATION
<<set _args[0].cur_duration to _args[0].base_duration + _spell_modifiers.duration>>
ADD MODIFIERS
<<if _spell_modifiers.support > 0>>
<<set _args[0].cur_check += (Math.round(_args[0].cur_check * _spell_modifiers.support)).clamp(1, 1000000)>>
<</if>>
UPDATE TOOLTIP
<<set _args[0].tooltip to "Increase a Trap's @@.trap;Trapcheck@@ or @@.spell;Spellcheck@@ by "+_args[0].cur_check+" for the next "+_args[0].cur_duration+" Encounters.">>
<<case "Terror">>
--- Terror ---
SET CURRENT CHECKS
<<set _args[0].cur_check to Math.trunc(setup.terror_spell.base_check + (setup.terror_spell.check_per_level * $pc_level))>>
ADD MODIFIERS
<<set _args[0].cur_check += _spell_modifiers.flat_check>>
<<set _args[0].cur_check += _spell_modifiers.flat_manipulation>>
<<if _spell_modifiers.check > 0>>
<<set _args[0].cur_check += (Math.round(_args[0].cur_check * _spell_modifiers.check)).clamp(1, 1000000)>>
<</if>>
UPDATE TOOLTIP
<<set _args[0].tooltip to "Forces a Raider to Abandon their Raid if they fail the @@.spell;"+_args[0].cur_check+" Spellcheck@@. The @@.spell;Spellcheck@@ is increased to @@.spell;"+Math.trunc(setup.terror_spell.mult * _args[0].cur_check)+"@@ if the Raider is alone.">>
<<case "Shattering Blast">>
--- Shattering Blast ---
SET CURRENT AMOUNTS
<<set _args[0].cur_check to Math.trunc(setup.shatter_spell.base_check + (setup.shatter_spell.check_per_level * $pc_level))>>
<<set _args[0].cur_dmg to Math.trunc(setup.shatter_spell.base_dmg + (setup.shatter_spell.dmg_per_level * $pc_level))>>
ADD MODIFIERS
<<if _spell_modifiers.check > 0>>
<<set _args[0].cur_check += (Math.round(_args[0].cur_check * _spell_modifiers.check)).clamp(1, 1000000)>>
<</if>>
<<if _spell_modifiers.flat_dmg > 0>>
<<set _args[0].cur_dmg += _spell_modifiers.flat_dmg>>
<</if>>
<<if _spell_modifiers.dmg > 0>>
<<set _args[0].cur_dmg += (Math.round(_args[0].cur_dmg * _spell_modifiers.dmg)).clamp(1, 1000000)>>
<</if>>
UPDATE TOOLTIP
<<set _args[0].tooltip to "Deals @@.mag;"+_args[0].cur_dmg+" Magical@@ damage to a Raider. If the Raider fails the @@.spell;"+_args[0].cur_check+" Spellcheck@@, they become <<hovertip '<<print setup.stripped.tooltip>>'>>Stripped<</hovertip>>. Cannot Capture.">>
<<case "Succubus' Mist">>
--- Succubus' Mist ---
SET CURRENT AMOUNTS
<<set _args[0].cur_check to Math.trunc(setup.succubus_mist_spell.base_check + (setup.succubus_mist_spell.check_per_level * $pc_level))>>
<<set _args[0].cur_sex to Math.trunc(setup.succubus_mist_spell.base_sex + (setup.succubus_mist_spell.sex_per_level * $pc_level))>>
<<set _args[0].cur_stack to Math.trunc(setup.succubus_mist_spell.base_stack + (setup.succubus_mist_spell.stack_per_level * $pc_level))>>
ADD MODIFIERS
<<if _spell_modifiers.check > 0>>
<<set _args[0].cur_check += (Math.round(_args[0].cur_check * _spell_modifiers.check)).clamp(1, 1000000)>>
<</if>>
<<if _spell_modifiers.flat_dmg > 0>>
<<set _args[0].cur_sex += _spell_modifiers.flat_dmg>>
<</if>>
<<if _spell_modifiers.dmg > 0>>
<<set _args[0].cur_sex += (Math.round(_args[0].cur_sex * _spell_modifiers.dmg)).clamp(1, 1000000)>>
<</if>>
UPDATE TOOLTIP
<<set _args[0].tooltip to "Deals @@.sex;"+_args[0].cur_sex+" Sexual@@ damage with the Aphrodisiac Fetish and inflicts "+_args[0].cur_stack+" <<hovertip '<<print setup.aroused.tooltip>>'>>Arouse<</hovertip>> to each Raider. If a Raider fails the @@.spell;"+_args[0].cur_check+" Spellcheck@@, instead they receive "+Math.trunc(setup.succubus_mist_spell.mult * _args[0].cur_stack)+" <<hovertip '<<print setup.aroused.tooltip>>'>>Arouse<</hovertip>>. Cannot Capture.">>
<<case "Suggestive Whispers">>
-- Suggestive Whispers ---
SET CURRENT AMOUNTS
<<set _args[0].cur_check to Math.trunc(setup.suggestive_whispers_spell.base_check + (setup.suggestive_whispers_spell.check_per_level * $pc_level))>>
ADD MODIFIERS
<<set _args[0].cur_check += _spell_modifiers.flat_check>>
<<set _args[0].cur_check += _spell_modifiers.flat_manipulation>>
<<if _spell_modifiers.check > 0>>
<<set _args[0].cur_check += (Math.round(_args[0].cur_check * _spell_modifiers.check)).clamp(1, 1000000)>>
<</if>>
UPDATE TOOLTIP
<<set _args[0].tooltip to "Choose a Fetish to become a new Kink for Target Raider if they fail the @@.spell;"+_args[0].cur_check+" Spellcheck@@. The @@.spell;Spellcheck@@ is increased to @@.spell;"+Math.trunc(setup.suggestive_whispers_spell.mult * _args[0].cur_check)+"@@ if the Raider is <<hovertip '<<print setup.perverted.tooltip>>'>>Perverted<</hovertip>>. The Raider's Turn-Offs can't be chosen as a new Kink.">>
<<case "Telekinetic Spank">>
--- Telekinetic Spank ---
SET CURRENT AMOUNTS
<<set _args[0].cur_dmg to Math.trunc(setup.spank_spell.base_dmg + (setup.spank_spell.dmg_per_level * $pc_level))>>
<<set _args[0].cur_sex to Math.trunc(setup.spank_spell.base_sex + (setup.spank_spell.sex_per_level * $pc_level))>>
ADD MODIFIERS
<<if _spell_modifiers.flat_dmg > 0>>
<<set _args[0].cur_dmg += _spell_modifiers.flat_dmg>>
<<set _args[0].cur_sex += _spell_modifiers.flat_dmg>>
<</if>>
<<if _spell_modifiers.dmg > 0>>
<<set _args[0].cur_dmg += (Math.round(_args[0].cur_dmg * _spell_modifiers.dmg)).clamp(1, 1000000)>>
<<set _args[0].cur_sex += (Math.round(_args[0].cur_sex * _spell_modifiers.dmg)).clamp(1, 1000000)>>
<</if>>
SPANK MODIFER
<<set _args[0].cur_dmg to (Math.round(_args[0].cur_dmg * _args[0].dmg_float)).clamp(1, 1000000)>>
<<set _args[0].cur_sex to (Math.round(_args[0].cur_sex * _args[0].dmg_float)).clamp(1, 1000000)>>
UPDATE TOOLTIP
<<set _args[0].tooltip to "Deals @@.phy;"+_args[0].cur_dmg+" Physical@@ damage and @@.sex;"+_args[0].cur_sex+" Sexual@@ damage with the Ass Fetish between "+_args[0].min_atk+"-"+_args[0].max_atk+" times. Cannot Capture.">>
<<case "Warp">>
--- Warp ---
SET CURRENT CHECKS
<<set _args[0].cur_check to Math.trunc(setup.warp_spell.base_check + (setup.warp_spell.check_per_level * $pc_level))>>
ADD MODIFIERS
<<set _args[0].cur_check += _spell_modifiers.flat_check>>
<<set _args[0].cur_check += _spell_modifiers.flat_manipulation>>
<<if _spell_modifiers.check > 0>>
<<set _args[0].cur_check += (Math.round(_args[0].cur_check * _spell_modifiers.check)).clamp(1, 1000000)>>
<</if>>
UPDATE TOOLTIP
<<set _args[0].tooltip to "Warps a Raider back to the Entrance of your Dungeon if they fail the @@.spell;"+_args[0].cur_check+" Spellcheck@@. The @@.spell;Spellcheck@@ decreases based on the distance from the Entrance the Raider is.">>
<</switch>>
<</widget>><<widget "EroticDungeonBlessing">>
_args[0].length are the number of Raiders
<<for _r = 0; _r < _args[0].length; _r++>>
<<if $pc_blessing_list.includes("Machine Mastery")>>
<<set _status_int to 2>>
<<else>>
<<set _status_int to 1>>
<</if>>
<<set _banned_status to []>> statuses already inflicted by blessing, prevents from being used again
STACK VARIABLES
<<set _more_stacks to 5>> number of stacks added for higher stacking statuses
<<set _norm_stacks to 3>> number of stacks added for normal stacking statuses
<<set _less_stacks to 2>> number of stacks added for lower stacking statuses
<<for _q = _status_int; _q > 0; _q-->>
DETERMINE STATUS RARITY
<<set _rng to random(1, 100)>> RNG: _rng
<<if _rng <= setup.blessing_06_11.rare_rate>>
<<set _status_list to clone(setup.blessing_06_11.rare_statuses)>>
<<elseif _rng <= setup.blessing_06_11.uncommon_rate>>
<<set _status_list to clone(setup.blessing_06_11.uncommon_statuses)>>
<<else>>
<<set _status_list to clone(setup.blessing_06_11.common_statuses)>>
<</if>>
<<for _f = 0; _f < 1; _f++>>
<<if _status_list.length === 0>>
IF EXHAUSTED ALL OPTIONS, SET LIST TO COMMON STATUSES
<<set _status_list to clone(setup.blessing_06_11.common_statuses)>>
<</if>>
<<set _status to _status_list.pluck()>> PLUCKED _status.id
<<switch _status.id>>
<<case "Aroused" "Poisoned">>
HIGH STACK STATUS
ADD STATUS
<<AddStatus _args[0][_r] _status false>>
ADD STACKS
<<for _z = 0; _z < _args[0][_r].statuses.length; _z++>>
FIND STATUS
<<if _args[0][_r].statuses[_z].id === _status.id>>
CHECK IF STATUS IS MAX STACKS
<<if _args[0][_r].statuses[_z].stack >= _args[0][_r].statuses[_z].max_stack || _banned_status.includes(_status.id)>>
REROLL STATUS
<<set _f-->>
<<else>>
ADD STACKS
<<AddStacks _args[0][_r] _status _more_stacks false>>
TRIGGER TEXT
<<set $between_triggers.other.eroticdungeon.push(_args[0][_r].index)>>
SET INFO
<<set _raider_info to {
index: clone(_args[0][_r].index),
status: clone(_status),
status_name: clone(_status.id),
gain: clone(_args[0][_r].statuses[_z].gain)
}>>
<<set $between_triggers.other.eroticdungeon_info.push(_raider_info)>>
<<set _banned_status.push(_status.id)>>
<</if>>
<<break>>
<</if>>
<</for>>
<<case "Brainwashed" "Horny" "Wet" "Perverted" "Stimulated" "Stripped" "Parasite">>
STATUSES THAT DON'T STACK
<<if _args[0][_r].status_names.includes(_status.id)>>
REROLL STATUS
<<set _f-->>
<<else>>
ADD STATUS
<<AddStatus _args[0][_r] _status false>>
TRIGGER TEXT
<<set $between_triggers.other.eroticdungeon.push(_args[0][_r].index)>>
SET INFO
<<set _raider_info to {
index: clone(_args[0][_r].index),
status: clone(_status),
status_name: clone(_status.id),
gain: 0
}>>
<<set $between_triggers.other.eroticdungeon_info.push(_raider_info)>>
<</if>>
<<case "Sticky" "Intoxicated">>
AVERAGE STACKING STATUS
<<if !_args[0][_r].status_names.includes(_status.id)>>
<<AddStatus _args[0][_r] _status false>>
<</if>>
ADD STACKS
<<for _z = 0; _z < _args[0][_r].statuses.length; _z++>>
FIND STATUS
<<if _args[0][_r].statuses[_z].id === _status.id>>
<<if _args[0][_r].statuses[_z].stack >= _args[0][_r].statuses[_z].max_stack || _banned_status.includes(_status.id)>>
REROLL STATUS
<<set _f-->>
<<else>>
ADD STACKS
<<AddStacks _args[0][_r] _status _norm_stacks false>>
TRIGGER TEXT
<<set $between_triggers.other.eroticdungeon.push(_args[0][_r].index)>>
SET INFO
<<set _raider_info to {
index: clone(_args[0][_r].index),
status: clone(_status),
status_name: clone(_status.id),
gain: clone(_args[0][_r].statuses[_z].gain)
}>>
<<set $between_triggers.other.eroticdungeon_info.push(_raider_info)>>
<<set _banned_status.push(_status.id)>>
<</if>>
<<break>>
<</if>>
<</for>>
<<case "Futanari" "Lactation">>
LOWER STACKING STATUS
<<if !_args[0][_r].status_names.includes(_status.id)>>
<<AddStatus _args[0][_r] _status false>>
<</if>>
ADD STACKS
<<for _z = 0; _z < _args[0][_r].statuses.length; _z++>>
FIND STATUS
<<if _args[0][_r].statuses[_z].id === _status.id>>
<<if _args[0][_r].statuses[_z].stack >= _args[0][_r].statuses[_z].max_stack || _banned_status.includes(_status.id)>>
REROLL STATUS
<<set _f-->>
<<else>>
ADD STACKS
<<AddStacks _args[0][_r] _status _less_stacks false>>
TRIGGER TEXT
<<set $between_triggers.other.eroticdungeon.push(_args[0][_r].index)>>
SET INFO
<<set _raider_info to {
index: clone(_args[0][_r].index),
status: clone(_status),
status_name: clone(_status.id),
gain: clone(_args[0][_r].statuses[_z].gain)
}>>
<<set $between_triggers.other.eroticdungeon_info.push(_raider_info)>>
<<set _banned_status.push(_status.id)>>
<</if>>
<<break>>
<</if>>
<</for>>
<</switch>>
<</for>>
<</for>>
<</for>>
<</widget>><<widget "AlchemistPotion">>
_args[0].name is ALCHEMIST
_args[1].length is number of Raiders
POTION LIST: _args[0].potions
* Variables *
<<set _restoration_percent to 0.6>> checks if raider is at or below this amount before using
<<set _calming_percent to 0.4>> checks if raider is at or above this amount before using
<<set _heroic_percent to 0.75>> check if alchemist is at or above/below this amount before using
RESET ALCHEMIST VAR
<<set _args[0].potion_target to "">>
<<set _args[0].potion_used to "">>
USE POTION IF HAVE ANY POTIONS
<<if _args[0].potions.length > 0 && !_args[0].status_names.includes("Brainwashed")>>
* 100% use checks *
* RESTORATION POTION CHECK *
CASE: USE IF RAIDER IS AT OR BELOW CERTAIN PERCENT
CHECK IF ALCHEMIST HAS HEALING POTION
<<if _args[0].potions.includes(setup.potion_of_restoration.id) && _args[0].potion_used === "">>
<<set _options to []>>
<<for _z = 0; _z < _args[1].length; _z++>>
CHECK IF ANY RAIDERS ARE WITHIN RANGE
<<if (_args[1][_z].cur_hp <= Math.round(_args[1][_z].max_hp * _regeneration_percent) || (_args[0].potions.length === _args[0].potions.count(setup.potion_of_restoration.id) && _args[1][_z].cur_hp < _args[1][_z].max_hp)) && !_args[1][_z].status_names.includes(setup.potion_of_restoration.id)>>
<<set _options.push(_args[1][_z].index)>>
<</if>>
<</for>>
<<if _options.length > 0>>
SET ALCHEMIST TARGET AND POTION USE
<<set _args[0].potion_target to _options.random()>>
<<set _args[0].potion_used to setup.potion_of_restoration.id>>
<</if>>
<</if>>
* CALMING POTION CHECK *
CASE: USE IF RAIDER IS AT OR ABOVE CERTAIN PERCENT
CHECK IF ALCHEMIST HAS CALMING POTION
<<if _args[0].potions.includes(setup.potion_of_calming.id) && _args[0].potion_used === "">>
<<set _options to []>>
<<for _z = 0; _z < _args[1].length; _z++>>
CHECK IF ANY RAIDERS ARE WITHIN RANGE
<<if (_args[1][_z].cur_lust >= Math.round(_args[1][_z].max_lust * _calming_percent) || (_args[0].potions.length === _args[0].potions.count(setup.potion_of_calming.id) && _args[1][_z].cur_lust > 0)) && !_args[1][_z].status_names.includes(setup.potion_of_calming.id)>>
<<set _options.push(_args[1][_z].index)>>
<</if>>
<</for>>
<<if _options.length > 0>>
SET ALCHEMIST TARGET AND POTION USE
<<set _args[0].potion_target to _options.random()>>
<<set _args[0].potion_used to setup.potion_of_calming.id>>
<</if>>
<</if>>
* HEROIC POTION CHECK *
CASE: USE IF ALCHEMIST MEETS THE REQUIRMENTS
CHECK IF ALCHEMIST HAS HEROIC POTION
<<if _args[0].potions.includes(setup.heroic_potion.id) && _args[0].potion_used === "">>
<<if (_args[0].cur_lust >= Math.round(_args[0].max_lust * (1 - _heroic_percent)) || _args[0].cur_hp <= Math.round(_args[0].max_hp * _heroic_percent)) && _args[0].potion_used === "">>
FIND HIGHEST RANK RAIDER TO USE ON
<<set _options to []>>
<<if _args[1].length === 1>>
<<set _var to _args[1].first()>>
<<set _options.push(_var.index)>>
<<else>>
<<for _s = setup.subclass_list.length - 1; _s >= 0; _s-->>
CHECKING FOR <<- setup.subclass_list[_s].name>>
<<for _z = 0; _z < _args[1].length; _z++>>
<<if _args[1][_z].subclass.name === setup.subclass_list[_s].name>>
<<set _options.push(_args[1][_z].index)>>
<</if>>
<</for>>
<<if _options.length > 0>>
<<break>>
<<else>>
<<continue>>
<</if>>
<</for>>
<</if>>
SET ALCHEMIST TARGET AND POTION USE
<<set _args[0].potion_target to _options.random()>>
<<set _args[0].potion_used to setup.heroic_potion.id>>
<</if>>
<</if>>
* Pick Random Potion to use *
<<if _args[0].potion_used === "">>
REMOVE RESTORATION AND CALINMG POTIONS
<<set _holder to _args[0].potions.delete(setup.potion_of_restoration.id, setup.potion_of_calming.id)>>
<<if _args[0].potions.length > 0>>
<<set _args[0].potion_used to _args[0].potions.random()>> _args[0].potion_used WAS CHOSEN
<</if>>
<<set _args[0].potions to _args[0].potions.concat(_holder)>>
<</if>>
* Use Potion *
<<switch _args[0].potion_used>>
<<case setup.potion_of_restoration.id>>
* POTION OF RESTORATION *
- NO TARGET REQUIRED AS IT CAN ONLY BE USED WITH A TARGET -
SETUP NEW STATUS FOR POTION
<<set _newStatus to clone(setup.blank_status)>>
<<set _newStatus.id to setup.potion_of_restoration.id>>
<<set _newStatus.mod to setup.potion_of_restoration.mod>>
<<set _newStatus.icon to setup.potion_of_restoration.icon>>
SET AMOUNT AND DURATION
<<set _newStatus.amount to Math.round(setup.potion_of_restoration.base_amount * _args[0].subclass.buff_mod)>>
<<set _newStatus.cd to clone(setup.potion_of_restoration.base_cd)>>
SURVIVALIST
<<if _args[0].trait_names.includes(setup.survivalist.id)>>
<<set _newStatus.amount += (Math.round(_newStatus.amount * setup.survivalist.float)).clamp(1, 1000000)>>
<<set _newStatus.cd += setup.survivalist.int>>
<</if>>
SET NAME AND TOOLTIP
<<set _newStatus.name to _newStatus.id+" x"+_newStatus.cd>>
<<set _num to Math.round(_newStatus.amount * _newStatus.mod)>>
<<set _newStatus.tooltip to "She recovers @@.health;"+_num+" Health@@ when consumed and @@.health;"+_newStatus.amount+" Health@@ between floors until it wears off.">>
PUSH STATUS AND HEAL
<<for _z = 0; _z < _args[1].length; _z++>>
<<if _args[1][_z].index === _args[0].potion_target>>
<<set _args[1][_z].statuses.push(_newStatus)>>
<<set _args[1][_z].status_names.push(_newStatus.id)>>
<<set _args[1][_z].cur_hp to Math.clamp(_args[1][_z].cur_hp + (Math.round(_newStatus.amount * _newStatus.mod)), 1, _args[1][_z].max_hp)>>
TRIGGER CONSUME TEXT
<<set $between_triggers.potion.restoration_consumed.push(_args[0].potion_target)>>
<<break>>
<</if>>
<</for>>
CONSUME POTION
<<for _p = 0; _p < _args[0].potions.length; _p++>>
<<if _args[0].potions[_p] === setup.potion_of_restoration.id>>
<<set _consume to _args[0].potions.deleteAt(_p)>>
<<break>>
<</if>>
<</for>>
<<case setup.potion_of_calming.id>>
* POTION OF CALMING *
- NO TARGET REQUIRED AS IT CAN ONLY BE USED WITH A TARGET -
SETUP NEW STATUS FOR POTION
<<set _newStatus to clone(setup.blank_status)>>
<<set _newStatus.id to setup.potion_of_calming.id>>
<<set _newStatus.mod to setup.potion_of_calming.mod>>
<<set _newStatus.icon to setup.potion_of_calming.icon>>
SET AMOUNT AND DURATION
<<set _newStatus.amount to Math.round(setup.potion_of_calming.base_amount * _args[0].subclass.buff_mod)>>
<<set _newStatus.cd to clone(setup.potion_of_calming.base_cd)>>
SURVIVALIST
<<if _args[0].trait_names.includes(setup.survivalist.id)>>
<<set _newStatus.amount += (Math.round(_newStatus.amount * setup.survivalist.float)).clamp(1, 1000000)>>
<<set _newStatus.cd += setup.survivalist.int>>
<</if>>
SET NAME AND TOOLTIP
<<set _newStatus.name to _newStatus.id+" x"+_newStatus.cd>>
<<set _num to Math.round(_newStatus.amount * _newStatus.mod)>>
<<set _newStatus.tooltip to "She recovers @@.lust;"+_num+" Lust@@ when consumed and @@.lust;"+_newStatus.amount+" Lust@@ between floors until it wears off.">>
PUSH STATUS AND HEAL
<<for _z = 0; _z < _args[1].length; _z++>>
<<if _args[1][_z].index === _args[0].potion_target>>
<<set _args[1][_z].statuses.push(_newStatus)>>
<<set _args[1][_z].status_names.push(_newStatus.id)>>
<<set _args[1][_z].cur_lust to Math.clamp(_args[1][_z].cur_lust - (Math.round(_newStatus.amount * _newStatus.mod)), 0, _args[1][_z].max_lust)>>
TRIGGER CONSUME TEXT
<<set $between_triggers.potion.calming_consumed.push(_args[0].potion_target)>>
<<break>>
<</if>>
<</for>>
CONSUME POTION
<<for _p = 0; _p < _args[0].potions.length; _p++>>
<<if _args[0].potions[_p] === setup.potion_of_calming.id>>
<<set _consume to _args[0].potions.deleteAt(_p)>>
<<break>>
<</if>>
<</for>>
<<case setup.potion_of_perception.id>>
* POTION OF PERCEPTION *
<<if _args[0].potion_target === "">>
- FIND RAIDER WITH LOWEST AWARENESS -
<<set _num to "">>
<<set _target to "">>
<<for _z = 0; _z < _args[1].length; _z++>>
<<if (_target === "" || _args[1][_z].aware <= _num) && !_args[1][_z].status_names.includes(setup.potion_of_perception.id)>>
<<if _args[1][_z].aware === _num>>
50% CHANCE TO UPDATE TARGET IF TIED
<<set _rng to random(1)>>
<<if _rng === 1>>
<<continue>>
<</if>>
<</if>>
<<set _num to _args[1][_z].aware>>
<<set _target to _args[1][_z].index>>
<</if>>
<</for>>
<<set _args[0].potion_target to _target>>
<</if>>
<<if _args[0].potion_target !== "">>
SETUP NEW STATUS FOR POTION
<<set _newStatus to clone(setup.blank_status)>>
<<set _newStatus.id to setup.potion_of_perception.id>>
<<set _newStatus.icon to setup.potion_of_perception.icon>>
SET AMOUNT AND DURATION
<<set _newStatus.amount to Math.round(setup.potion_of_perception.base_amount * _args[0].subclass.buff_mod)>>
<<set _newStatus.cd to clone(setup.potion_of_perception.base_cd)>>
SURVIVALIST
<<if _args[0].trait_names.includes(setup.survivalist.id)>>
<<set _newStatus.amount += (Math.round(_newStatus.amount * setup.survivalist.float)).clamp(1, 1000000)>>
<<set _newStatus.cd += setup.survivalist.int>>
<</if>>
UPDATE AMOUNT TO BE DIVISIBLE BY CD
<<set _newStatus.amount -= _newStatus.amount % _newStatus.cd>>
<<set _newStatus.int to _newStatus.amount / _newStatus.cd>>
SET NAME AND TOOLTIP
<<set _newStatus.name to _newStatus.id+" x"+_newStatus.cd>>
<<set _newStatus.tooltip to "Increases her @@.aware;Awareness@@ by @@.aware;"+_newStatus.amount+"@@, but decreases by @@.aware;"+_newStatus.int+"@@ between floors until it wears off.">>
PUSH STATUS
<<for _z = 0; _z < _args[1].length; _z++>>
<<if _args[1][_z].index === _args[0].potion_target>>
<<set _args[1][_z].statuses.push(_newStatus)>>
<<set _args[1][_z].status_names.push(_newStatus.id)>>
<<break>>
<</if>>
<</for>>
CONSUME POTION
<<for _p = 0; _p < _args[0].potions.length; _p++>>
<<if _args[0].potions[_p] === setup.potion_of_perception.id>>
<<set _consume to _args[0].potions.deleteAt(_p)>>
<<break>>
<</if>>
<</for>>
<</if>>
<<case setup.potion_of_faith.id>>
* POTION OF FAITH *
<<if _args[0].potion_target === "">>
- FIND RAIDER WITH LOWEST REASON -
<<set _num to "">>
<<set _target to "">>
<<for _z = 0; _z < _args[1].length; _z++>>
<<if (_target === "" || _args[1][_z].reas <= _num) && !_args[1][_z].status_names.includes(setup.potion_of_faith.id)>>
<<if _args[1][_z].reas === _num>>
50% CHANCE TO UPDATE TARGET IF TIED
<<set _rng to random(1)>>
<<if _rng === 1>>
<<continue>>
<</if>>
<</if>>
<<set _num to _args[1][_z].reas>>
<<set _target to _args[1][_z].index>>
<</if>>
<</for>>
<<set _args[0].potion_target to _target>>
<</if>>
<<if _args[0].potion_target !== "">>
SETUP NEW STATUS FOR POTION
<<set _newStatus to clone(setup.blank_status)>>
<<set _newStatus.id to setup.potion_of_faith.id>>
<<set _newStatus.icon to setup.potion_of_faith.icon>>
SET AMOUNT AND DURATION
<<set _newStatus.amount to Math.round(setup.potion_of_faith.base_amount * _args[0].subclass.buff_mod)>>
<<set _newStatus.cd to clone(setup.potion_of_faith.base_cd)>>
SURVIVALIST
<<if _args[0].trait_names.includes(setup.survivalist.id)>>
<<set _newStatus.amount += (Math.round(_newStatus.amount * setup.survivalist.float)).clamp(1, 1000000)>>
<<set _newStatus.cd += setup.survivalist.int>>
<</if>>
UPDATE AMOUNT TO BE DIVISIBLE BY CD
<<set _newStatus.amount -= _newStatus.amount % _newStatus.cd>>
<<set _newStatus.int to _newStatus.amount / _newStatus.cd>> INT: _newStatus.int
SET NAME AND TOOLTIP
<<set _newStatus.name to _newStatus.id+" x"+_newStatus.cd>>
<<set _newStatus.tooltip to "Increases her @@.reas;Reason@@ by @@.reas;"+_newStatus.amount+"@@, but decreases by @@.reas;"+_newStatus.int+"@@ between floors until it wears off.">>
PUSH STATUS
<<for _z = 0; _z < _args[1].length; _z++>>
<<if _args[1][_z].index === _args[0].potion_target>>
<<set _args[1][_z].statuses.push(_newStatus)>>
<<set _args[1][_z].status_names.push(_newStatus.id)>>
<<break>>
<</if>>
<</for>>
CONSUME POTION
<<for _p = 0; _p < _args[0].potions.length; _p++>>
<<if _args[0].potions[_p] === setup.potion_of_faith.id>>
<<set _consume to _args[0].potions.deleteAt(_p)>>
<<break>>
<</if>>
<</for>>
<</if>>
<<case setup.potion_of_fortune.id>>
* POTION OF FORTUNE *
<<if _args[0].potion_target === "">>
- FIND RAIDER WITH LOWEST COMBINED AWARENESS AND REASON -
<<set _num to "">>
<<set _target to "">>
<<for _z = 0; _z < _args[1].length; _z++>>
<<if (_target === "" || _args[1][_z].aware + _args[1][_z].faith <= _num) && !_args[1][_z].status_names.includes(setup.potion_of_fortune.id)>>
<<if _args[1][_z].aware + _args[1][_z].reas === _num>>
50% CHANCE TO UPDATE TARGET IF TIED
<<set _rng to random(1)>>
<<if _rng === 1>>
<<continue>>
<</if>>
<</if>>
<<set _num to _args[1][_z].aware + _args[1][_z].reas>>
<<set _target to _args[1][_z].index>>
<</if>>
<</for>>
<<set _args[0].potion_target to _target>>
<</if>>
<<if _args[0].potion_target !== "">>
SETUP NEW STATUS FOR POTION
<<set _newStatus to clone(setup.blank_status)>>
<<set _newStatus.id to setup.potion_of_fortune.id>>
<<set _newStatus.icon to setup.potion_of_fortune.icon>>
SET AMOUNT AND DURATION
<<set _newStatus.amount to Math.round(setup.potion_of_fortune.base_amount * _args[0].subclass.buff_mod)>>
<<set _newStatus.cd to clone(setup.potion_of_fortune.base_cd)>>
SURVIVALIST
<<if _args[0].trait_names.includes(setup.survivalist.id)>>
<<set _newStatus.amount += (Math.round(_newStatus.amount * setup.survivalist.float)).clamp(1, 1000000)>>
<<set _newStatus.cd += setup.survivalist.int>>
<</if>>
UPDATE AMOUNT TO BE DIVISIBLE BY CD
<<set _newStatus.amount -= _newStatus.amount % _newStatus.cd>>
<<set _newStatus.int to (_newStatus.amount / _newStatus.cd).clamp(1, 1000000)>>
SET NAME AND TOOLTIP
<<set _newStatus.name to _newStatus.id+" x"+_newStatus.cd>>
<<set _num to _newStatus.amount + 1>>
<<set _newStatus.tooltip to "She is "+_num+" times more likely to get Critical Hits or Successes, but decreases by "+_newStatus.int+" between floors until it wears off.">>
PUSH STATUS
<<for _z = 0; _z < _args[1].length; _z++>>
<<if _args[1][_z].index === _args[0].potion_target>>
<<set _args[1][_z].statuses.push(_newStatus)>>
<<set _args[1][_z].status_names.push(_newStatus.id)>>
<<break>>
<</if>>
<</for>>
CONSUME POTION
<<for _p = 0; _p < _args[0].potions.length; _p++>>
<<if _args[0].potions[_p] === setup.potion_of_fortune.id>>
<<set _consume to _args[0].potions.deleteAt(_p)>>
<<break>>
<</if>>
<</for>>
<</if>>
<<case setup.grit_potion.id>>
* GRIT POTION *
<<if _args[0].potion_target === "">>
- GIVE TO FIRST RAIDER IN GROUP -
<<for _z = 0; _z < _args[1].length; _z++>>
<<if !_args[1][_z].status_names.includes(setup.grit_potion.id)>>
<<set _args[0].potion_target to _args[1][_z].index>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _args[0].potion_target !== "">>
SETUP NEW STATUS FOR POTION
<<set _newStatus to clone(setup.blank_status)>>
<<set _newStatus.id to setup.grit_potion.id>>
<<set _newStatus.icon to setup.grit_potion.icon>>
SET AMOUNT AND DURATION
<<set _newStatus.amount to Math.round(setup.grit_potion.base_amount * _args[0].subclass.buff_mod)>>
<<set _newStatus.cd to clone(setup.grit_potion.base_cd)>>
SURVIVALIST
<<if _args[0].trait_names.includes(setup.survivalist.id)>>
<<set _newStatus.amount += (Math.round(_newStatus.amount * setup.survivalist.float)).clamp(1, 1000000)>>
<<set _newStatus.cd += setup.survivalist.int>>
<</if>>
SET NAME AND TOOLTIP
<<set _newStatus.name to _newStatus.id+" x"+_newStatus.cd>>
<<set _newStatus.tooltip to "Reduce the amount of @@.phy;Physical@@ damage taken by "+_newStatus.amount+"% until it wears off.">>
PUSH STATUS
<<for _z = 0; _z < _args[1].length; _z++>>
<<if _args[1][_z].index === _args[0].potion_target>>
<<set _args[1][_z].statuses.push(_newStatus)>>
<<set _args[1][_z].status_names.push(_newStatus.id)>>
<<break>>
<</if>>
<</for>>
CONSUME POTION
<<for _p = 0; _p < _args[0].potions.length; _p++>>
<<if _args[0].potions[_p] === setup.grit_potion.id>>
<<set _consume to _args[0].potions.deleteAt(_p)>>
<<break>>
<</if>>
<</for>>
<</if>>
<<case setup.mettle_potion.id>>
* METTLE POTION *
<<if _args[0].potion_target === "">>
- GIVE TO FIRST RAIDER IN GROUP -
<<for _z = 0; _z < _args[1].length; _z++>>
<<if !_args[1][_z].status_names.includes(setup.mettle_potion.id)>>
<<set _args[0].potion_target to _args[1][_z].index>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _args[0].potion_target !== "">>
SETUP NEW STATUS FOR POTION
<<set _newStatus to clone(setup.blank_status)>>
<<set _newStatus.id to setup.mettle_potion.id>>
<<set _newStatus.icon to setup.mettle_potion.icon>>
SET AMOUNT AND DURATION
<<set _newStatus.amount to Math.round(setup.mettle_potion.base_amount * _args[0].subclass.buff_mod)>>
<<set _newStatus.cd to clone(setup.mettle_potion.base_cd)>>
SURVIVALIST
<<if _args[0].trait_names.includes(setup.survivalist.id)>>
<<set _newStatus.amount += (Math.round(_newStatus.amount * setup.survivalist.float)).clamp(1, 1000000)>>
<<set _newStatus.cd += setup.survivalist.int>>
<</if>>
SET NAME AND TOOLTIP
<<set _newStatus.name to _newStatus.id+" x"+_newStatus.cd>>
<<set _newStatus.tooltip to "Reduce the amount of @@.mag;Magical@@ damage taken by "+_newStatus.amount+"% until it wears off.">>
PUSH STATUS
<<for _z = 0; _z < _args[1].length; _z++>>
<<if _args[1][_z].index === _args[0].potion_target>>
<<set _args[1][_z].statuses.push(_newStatus)>>
<<set _args[1][_z].status_names.push(_newStatus.id)>>
<<break>>
<</if>>
<</for>>
CONSUME POTION
<<for _p = 0; _p < _args[0].potions.length; _p++>>
<<if _args[0].potions[_p] === setup.mettle_potion.id>>
<<set _consume to _args[0].potions.deleteAt(_p)>>
<<break>>
<</if>>
<</for>>
<</if>>
<<case setup.numbing_potion.id>>
* NUMBING POTION *
<<if _args[0].potion_target === "">>
- GIVE TO FIRST RAIDER IN GROUP -
<<for _z = 0; _z < _args[1].length; _z++>>
<<if !_args[1][_z].status_names.includes(setup.numbing_potion.id)>>
<<set _args[0].potion_target to _args[1][_z].index>>
<<break>>
<</if>>
<</for>>
<</if>>
<<if _args[0].potion_target !== "">>
SETUP NEW STATUS FOR POTION
<<set _newStatus to clone(setup.blank_status)>>
<<set _newStatus.id to setup.numbing_potion.id>>
<<set _newStatus.icon to setup.numbing_potion.icon>>
SET AMOUNT AND DURATION
<<set _newStatus.amount to Math.round(setup.numbing_potion.base_amount * _args[0].subclass.buff_mod)>>
<<set _newStatus.cd to clone(setup.numbing_potion.base_cd)>>
SURVIVALIST
<<if _args[0].trait_names.includes(setup.survivalist.id)>>
<<set _newStatus.amount += (Math.round(_newStatus.amount * setup.survivalist.float)).clamp(1, 1000000)>>
<<set _newStatus.cd += setup.survivalist.int>>
<</if>>
SET NAME AND TOOLTIP
<<set _newStatus.name to _newStatus.id+" x"+_newStatus.cd>>
<<set _newStatus.tooltip to "Reduce the amount of @@.sex;Sexual@@ damage taken by "+_newStatus.amount+"% until it wears off.">>
PUSH STATUS
<<for _z = 0; _z < _args[1].length; _z++>>
<<if _args[1][_z].index === _args[0].potion_target>>
<<set _args[1][_z].statuses.push(_newStatus)>>
<<set _args[1][_z].status_names.push(_newStatus.id)>>
<<break>>
<</if>>
<</for>>
CONSUME POTION
<<for _p = 0; _p < _args[0].potions.length; _p++>>
<<if _args[0].potions[_p] === setup.numbing_potion.id>>
<<set _consume to _args[0].potions.deleteAt(_p)>>
<<break>>
<</if>>
<</for>>
<</if>>
<<case setup.fiery_potion.id>>
* FIERY POTION *
<<if _args[0].potion_target === "">>
- GIVE TO THE RAIDER WITH THE HIGHEST VIGOR -
<<set _num to "">>
<<set _target to "">>
<<for _z = 0; _z < _args[1].length; _z++>>
<<if (_target === "" || _args[1][_z].vigor > _num) && !_args[1][_z].status_names.includes(setup.fiery_potion.id)>>
<<if _args[1][_z].vigor === _num>>
50% CHANCE TO CHANGE TARGET IF SAME VIGOR
<<set _rng to random(1)>>
<<if _rng === 1>>
<<continue>>
<</if>>
<</if>>
<<set _num to _args[1][_z].vigor>>
<<set _target to _args[1][_z].index>>
<</if>>
<</for>>
<<set _args[0].potion_target to _target>>
<</if>>
<<if _args[0].potion_target !== "">>
SETUP NEW STATUS FOR POTION
<<set _newStatus to clone(setup.blank_status)>>
<<set _newStatus.id to setup.fiery_potion.id>>
<<set _newStatus.icon to setup.fiery_potion.icon>>
SET AMOUNT AND DURATION
<<set _newStatus.amount to Math.round(setup.fiery_potion.base_amount * _args[0].subclass.buff_mod)>>
<<set _newStatus.cd to clone(setup.fiery_potion.base_cd)>>
SURVIVALIST
<<if _args[0].trait_names.includes(setup.survivalist.id)>>
<<set _newStatus.amount += (Math.round(_newStatus.amount * setup.survivalist.float)).clamp(1, 1000000)>>
<<set _newStatus.cd += setup.survivalist.int>>
<</if>>
SET NAME AND TOOLTIP
<<set _newStatus.name to _newStatus.id+" x"+_newStatus.cd>>
<<set _newStatus.tooltip to "Increases her damage by "+_newStatus.amount+"% until it wears off.">>
PUSH STATUS
<<for _z = 0; _z < _args[1].length; _z++>>
<<if _args[1][_z].index === _args[0].potion_target>>
<<set _args[1][_z].statuses.push(_newStatus)>>
<<set _args[1][_z].status_names.push(_newStatus.id)>>
<<break>>
<</if>>
<</for>>
CONSUME POTION
<<for _p = 0; _p < _args[0].potions.length; _p++>>
<<if _args[0].potions[_p] === setup.fiery_potion.id>>
<<set _consume to _args[0].potions.deleteAt(_p)>>
<<break>>
<</if>>
<</for>>
<</if>>
<<case setup.heroic_potion.id>>
* HEROIC POTION *
<<if _args[0].potion_target === "">>
- GIVE TO A RANDOM RAIDER -
<<set _options to []>>
<<for _z = 0; _z < _args[1].length; _z++>>
<<if !_args[1][_z].status_names.includes(setup.heroic_potion.id)>>
<<set _options.push(_args[1][_z].index)>>
<</if>>
<</for>>
<<if _options.length > 1>>
<<set _args[0].potion_target to _options.random()>>
<</if>>
<</if>>
<<if _args[0].potion_target !== "">>
SETUP NEW STATUS FOR POTION
<<set _newStatus to clone(setup.blank_status)>>
<<set _newStatus.id to setup.heroic_potion.id>>
<<set _newStatus.icon to setup.heroic_potion.icon>>
SET AMOUNT AND DURATION
<<set _newStatus.amount to Math.round(setup.heroic_potion.base_amount * _args[0].subclass.buff_mod)>>
<<set _newStatus.cd to clone(setup.heroic_potion.base_cd)>>
SURVIVALIST
<<if _args[0].trait_names.includes(setup.survivalist.id)>>
<<set _newStatus.amount += (Math.round(_newStatus.amount * setup.survivalist.float)).clamp(1, 1000000)>>
<<set _newStatus.cd += setup.survivalist.int>>
<</if>>
SET NAME AND TOOLTIP
<<set _newStatus.name to _newStatus.id+" x"+_newStatus.cd>>
<<set _newStatus.tooltip to "Increases her @@.vig;Vigor@@, @@.end;Endurance@@, @@.will;Willpower@@, @@.pers;Perseverance@@, and @@.toler;Tolerance@@ by "+_newStatus.amount+" until it wears off.">>
PUSH STATUS
<<for _z = 0; _z < _args[1].length; _z++>>
<<if _args[1][_z].index === _args[0].potion_target>>
<<set _args[1][_z].statuses.push(_newStatus)>>
<<set _args[1][_z].status_names.push(_newStatus.id)>>
<<break>>
<</if>>
<</for>>
CONSUME POTION
<<for _p = 0; _p < _args[0].potions.length; _p++>>
<<if _args[0].potions[_p] === setup.heroic_potion.id>>
<<set _consume to _args[0].potions.deleteAt(_p)>>
<<break>>
<</if>>
<</for>>
<</if>>
<<default>>
* NO POTIONS TO USE *
<</switch>>
REMOVE POTION USED IF DID NOT FIND A TARGET
<<if _args[0].potion_target === "">>
<<set _args[0].potion_used to "">>
<</if>>
<</if>>
USED _args[0].potion_used ON <<if _args[0].potion_target === "">>NOBODY<<else>>INDEX _args[0].potion_target<</if>>
<</widget>><<widget "PriestessHeal">>
_args[0].name is Priestess
_args[1].length is number of raiders
* Variables *
<<set _priestess_heal_mod to 0.12>> reduce the amount of healing
<<set _priestess_lust_mod to 0.18>> reduce the amount of lust reduced
<<set _min_heal to 5>>
<<set _min_lust to 5>>
<<set _priestess_order_mod to [1.3, 1.1, 1]>> increases the likelyhood a raider closer to the front will get the heal over the raiders in the back
RESET TARGET
<<set _args[0].heal_target to "">>
HEALTH HEALED AMOUNT
<<set _heal_amount to Math.round((_args[0].cur_reas * _args[0].subclass.heal_mod) * _priestess_heal_mod)>>
LUST HEALED AMOUNT
<<set _lust_amount to Math.round((_args[0].cur_reas * _args[0].subclass.heal_mod) * _priestess_lust_mod)>>
ADD AMOUNTS TO RAIDER
<<set _args[0].heal_amount to (_heal_amount).clamp(_min_heal, 1000000)>>
<<set _args[0].lust_amount to (_lust_amount).clamp(_min_lust, 1000000)>>
FIND RAIDER TO HEAL
<<set _cur_score to "">>
<<set _target to "">>
<<if !_args[0].status_names.includes("Brainwashed")>>
<<for _z = 0; _z < _args[1].length; _z++>>
<<set _score to Math.round(((1 - ((_args[1][_z].cur_hp + (_args[1][_z].max_lust - _args[1][_z].cur_lust)) / (_args[1][_z].max_hp + _args[1][_z].max_lust))) * _priestess_order_mod[_z]) * 100)>>
<<if (_target === "" || _score > _cur_score) && _score != 0>>
SET TARGET
<<set _target to _args[1][_z].index>>
<<set _cur_score to clone(_score)>>
<</if>>
<</for>>
<</if>>
HEAL TARGET
<<if _target !== "">>
<<for _z = 0; _z < _args[1].length; _z++>>
<<if _args[1][_z].index === _target>>
<<set _args[0].heal_target to _target>>
<<set _args[1][_z].cur_hp to Math.clamp(_args[1][_z].cur_hp + _args[0].heal_amount, 1, _args[1][_z].max_hp)>>
<<set _args[1][_z].cur_lust to Math.clamp(_args[1][_z].cur_lust - _args[0].lust_amount, 0, _args[1][_z].max_lust)>>
<<break>>
<</if>>
<</for>>
<</if>>
<</widget>><<widget "AlchemistText">>
/* _args[0].name is Raider */
<<if _args[0].class === "Alchemist">>
<<if _args[0].potion_used !== "">>
/* FIND POTION */
<<for _z = 0; _z < setup.potion_list.length; _z++>>
<<if setup.potion_list[_z].name === _args[0].potion_used>>
<<set _potion_info to setup.potion_list[_z]>>
<<break>>
<</if>>
<</for>>
/* USING OWN POTION */
<<if $between_triggers.trait.survivalist.includes(_args[0].index) && _args[0].potion_target === _args[0].index && _potion_info.id !== setup.potion_of_restoration.id && _potion_info.id !== setup.potion_of_calming.id>>
<li>She brewed a new potion and consumed a <<hovertip "_potion_info.tooltip">>_potion_info.id<</hovertip>>.</li>
<<elseif _args[0].potion_target === _args[0].index && _potion_info.id !== setup.potion_of_restoration.id && _potion_info.id !== setup.potion_of_calming.id>>
<li>She consumed a <<hovertip "_potion_info.tooltip">>_potion_info.name<</hovertip>>.</li>
<<elseif _args[0].potion_target !== _args[0].index>>
/* FIND RAIDER */
<<for _z = 0; _z < $raiders.length; _z++>>
<<if $raiders[_z].index === _args[0].potion_target>>
<<set _raider_info to $raiders[_z]>>
<<break>>
<</if>>
<</for>>
/* GIVING POTION */
<<if $between_triggers.trait.survivalist.includes(_args[0].index)>>
<li>She brewed a new potion and gave a <<hovertip "_potion_info.tooltip">>_potion_info.name<</hovertip>> to _raider_info.name, the _raider_info.class.</li>
<<else>>
<li>She gave a <<hovertip "_potion_info.tooltip">>_potion_info.name<</hovertip>> to _raider_info.name, the _raider_info.class.</li>
<</if>>
/* BREWING POTION ONLY */
<<elseif $between_triggers.trait.survivalist.includes(_args[0].index)>>
<li>She brewed a new potion.</li>
<</if>>
<</if>>
<</if>>
<</widget>>
<<widget "PotionText">>
/* _args[0].name is Raider */
/* POTION OF RESTORATION */
<<if $between_triggers.potion.restoration_consumed.includes(_args[0].index)>>
/* FIND POTION */
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
<<if _args[0].statuses[_z].id === setup.potion_of_restoration.id>>
<<set _num to Math.round(_args[0].statuses[_z].amount * _args[0].statuses[_z].mod)>>
<li>She consumed a <<hovertip "_args[0].statuses[_z].tooltip">>Potion of Restoration<</hovertip>>, restoring @@.health;_num Health@@.</li>
<<break>>
<</if>>
<</for>>
<<elseif $between_triggers.potion.restoration.includes(_args[0].index) && $between_triggers.potion_expired.restoration.includes(_args[0].index)>>
/* FIND POTION THAT EXPIRED */
<<for _z = 0; _z < $between_triggers.potion_expired.potion_info.length; _z++>>
<<if $between_triggers.potion_expired.potion_info[_z].id === _args[0].index>>
<li>She restored @@.health;$between_triggers.potion_expired.potion_info[_z].potion.amount Health@@ from her <<hovertip "$between_triggers.potion_expired.potion_info[_z].potion.tooltip">>Potion of Restoration<</hovertip>> before wearing off.</li>
<<break>>
<</if>>
<</for>>
<<elseif $between_triggers.potion.restoration.includes(_args[0].index)>>
/* FIND POTION */
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
<<if _args[0].statuses[_z].id === setup.potion_of_restoration.id>>
<li>She restored @@.health;_args[0].statuses[_z].amount Health@@ from her <<hovertip "_args[0].statuses[_z].tooltip">>Potion of Restoration<</hovertip>>.</li>
<<break>>
<</if>>
<</for>>
<</if>>
/* POTION OF CALMING */
<<if $between_triggers.potion.calming_consumed.includes(_args[0].index)>>
/* FIND POTION */
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
<<if _args[0].statuses[_z].id === setup.potion_of_calming.id>>
<<set _num to Math.round(_args[0].statuses[_z].amount * _args[0].statuses[_z].mod)>>
<li>She consumed a <<hovertip "_args[0].statuses[_z].tooltip">>Potion of Calming<</hovertip>>, recovering @@.lust;_num Lust@@.</li>
<<break>>
<</if>>
<</for>>
<<elseif $between_triggers.potion.calming.includes(_args[0].index) && $between_triggers.potion_expired.calming.includes(_args[0].index)>>
/* FIND POTION THAT EXPIRED */
<<for _z = 0; _z < $between_triggers.potion_expired.potion_info.length; _z++>>
<<if $between_triggers.potion_expired.potion_info[_z].id === _args[0].index>>
<li>She recovered @@.lust;$between_triggers.potion_expired.potion_info[_z].potion.amount Lust@@ from her <<hovertip "$between_triggers.potion_expired.potion_info[_z].potion.tooltip">>Potion of Calming<</hovertip>> before wearing off.</li>
<<break>>
<</if>>
<</for>>
<<elseif $between_triggers.potion.calming.includes(_args[0].index)>>
/* FIND POTION */
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
<<if _args[0].statuses[_z].id === setup.potion_of_calming.id>>
<li>She recovered @@.lust;_args[0].statuses[_z].amount Lust@@ from her <<hovertip "_args[0].statuses[_z].tooltip">>Potion of Calming<</hovertip>>.</li>
<<break>>
<</if>>
<</for>>
<</if>>
/* ALL OTHER POTIONS WEARING OFF */
<<if $between_triggers.potion_expired.perception.includes(_args[0].index) || $between_triggers.potion_expired.faith.includes(_args[0].index) || $between_triggers.potion_expired.fortune.includes(_args[0].index) || $between_triggers.potion_expired.grit.includes(_args[0].index) || $between_triggers.potion_expired.mettle.includes(_args[0].index) || $between_triggers.potion_expired.numbing.includes(_args[0].index) || $between_triggers.potion_expired.fiery.includes(_args[0].index) || $between_triggers.potion_expired.heroic.includes(_args[0].index)>>
/* FIND POTION THAT EXPIRED */
<<for _z = 0; _z < $between_triggers.potion_expired.potion_info.length; _z++>>
<<if $between_triggers.potion_expired.potion_info[_z].id === _args[0].index>>
<<set _info to $between_triggers.potion_expired.potion_info[_z].potion>>
<li>Her <<hovertip "_info.tooltip">>_info.id<</hovertip>> wore off.</li>
<</if>>
<</for>>
<</if>>
<</widget>>
<<widget "PriestessText">>
/* _args[0].name is Raider */
<<if _args[0].class === "Priestess">>
<<if _args[0].heal_target === _args[0].index>>
<li>She healed herself, restoring @@.health;_args[0].heal_amount Health@@ and @@.lust;_args[0].lust_amount Lust@@.</li>
<<elseif _args[0].heal_target !== "">>
/* FIND RAIDER */
<<for _z = 0; _z < $raiders.length; _z++>>
<<if $raiders[_z].index === _args[0].heal_target>>
<li>She healed $raiders[_z].name, the $raiders[_z].class, restoring @@.health;_args[0].heal_amount Health@@ and @@.lust;_args[0].lust_amount Lust@@.</li>
<<break>>
<</if>>
<</for>>
<</if>>
<</if>>
<</widget>>
<<widget "EroticDungeonText">>
/* _args[0].name is raider */
/* SHOW DIFFERENT TEXTS FOR EACH STATUS GAINED */
<<if $between_triggers.other.eroticdungeon.includes(_args[0].index)>>
/* FIND ALL ENTRIES FOR RAIDER */
<<for _z = 0; _z < $between_triggers.other.eroticdungeon_info.length; _z++>>
<<if $between_triggers.other.eroticdungeon_info[_z].index === _args[0].index>>
<<if $between_triggers.other.eroticdungeon_info[_z].status_name === "Futanari">>
/* FUTANARI TEXT */
<li>She became a <<hovertip "$between_triggers.other.eroticdungeon_info[_z].status.tooltip">>$between_triggers.other.eroticdungeon_info[_z].status_name<</hovertip>> by the cursed aura filling your dungeon.</li>
<<elseif $between_triggers.other.eroticdungeon_info[_z].status_name === "Lactation">>
/* LACTATION TEXT */
<li>Her breasts started <<hovertip "$between_triggers.other.eroticdungeon_info[_z].status.tooltip">>Lactating<</hovertip>> after a small insect bit her.</li>
<<elseif $between_triggers.other.eroticdungeon_info[_z].status_name === "Parasite">>
/* PARASITE TEXT */
<li>She became a host for <<hovertip "$between_triggers.other.eroticdungeon_info[_z].status.tooltip">>$between_triggers.other.eroticdungeon_info[_z].status_name<</hovertip>> while wondering around your dungeon.</li>
<<elseif $between_triggers.other.eroticdungeon_info[_z] === "Horny">>
/* HORNY TEXT */
<li>She became <<hovertip "$between_triggers.other.eroticdungeon_info[_z].status.tooltip">>$between_triggers.other.eroticdungeon_info[_z].status_name<</hovertip>> after seeing other fallen Raiders in the dungeon.</li>
<<elseif $between_triggers.other.eroticdungeon_info[_z] === "Wet">>
/* WET TEXT */
<li>She became <<hovertip "$between_triggers.other.eroticdungeon_info[_z].status.tooltip">>$between_triggers.other.eroticdungeon_info[_z].status_name<</hovertip>> after breathing in aphrodisiacs in the air.</li>
<<elseif $between_triggers.other.eroticdungeon_info[_z] === "Perverted">>
/* PERVERTED TEXT */
<li>She became <<hovertip "$between_triggers.other.eroticdungeon_info[_z].status.tooltip">>$between_triggers.other.eroticdungeon_info[_z].status_name<</hovertip>> after hearing erotic moans and noises echo in her mind.</li>
<<elseif $between_triggers.other.eroticdungeon_info[_z] === "Brainwashed">>
/* BRAINWASHED TEXT */
<li>Her mind became <<hovertip "$between_triggers.other.eroticdungeon_info[_z].status.tooltip">>$between_triggers.other.eroticdungeon_info[_z].status_name<</hovertip>> after reading subliminal messages on the wall.</li>
<<elseif $between_triggers.other.eroticdungeon_info[_z] === "Stimulated">>
/* STIMULATED TEXT */
<li>Her body became <<hovertip "$between_triggers.other.eroticdungeon_info[_z].status.tooltip">>$between_triggers.other.eroticdungeon_info[_z].status_name<</hovertip>> after stepping on a pressure plate that shocked her.</li>
<<elseif $between_triggers.other.eroticdungeon_info[_z] === "Intoxicated">>
/* INTOXICATED TEXT */
<li>She became <<hovertip "$between_triggers.other.eroticdungeon_info[_z].status.tooltip">>$between_triggers.other.eroticdungeon_info[_z].status_name<</hovertip>> after trying to drink some water in your dungeon.</li>
<<elseif $between_triggers.other.eroticdungeon_info[_z] === "Sticky">>
/* STICKY TEXT */
<li>She became <<hovertip "$between_triggers.other.eroticdungeon_info[_z].status.tooltip">>$between_triggers.other.eroticdungeon_info[_z].status_name<</hovertip>> after a clump of lewd liquids fell on her from the ceiling.</li>
<<elseif $between_triggers.other.eroticdungeon_info[_z] === "Poisoned">>
/* POISONED TEXT */
<li>She became <<hovertip "$between_triggers.other.eroticdungeon_info[_z].status.tooltip">>$between_triggers.other.eroticdungeon_info[_z].status_name<</hovertip>> after smelling the flora found inside your dungeon.</li>
<</if>>
<</if>>
<</for>>
<</if>>
<</widget>>
<<widget "BetweenTriggerText">>
/* _args[0].name is raider */
/* FIT */
<<if $between_triggers.trait.fit.includes(_args[0].index)>>
/* FIND TRAIT */
<<for _z = 0; _z < _args[0].traits.length; _z++>>
<<if _args[0].traits[_z].name === "Fit">>
<li>She recovered @@.health;_args[0].traits[_z].amount Health@@ from being <<hovertip "<<-setup.fit.tooltip>>">>Fit<</hovertip>>.</li>
<<break>>
<</if>>
<</for>>
<</if>>
/* COMPOSURE */
<<if $between_triggers.trait.composure.includes(_args[0].index)>>
/* FIND TRAIT */
<<for _z = 0; _z < _args[0].traits.length; _z++>>
<<if _args[0].traits[_z].name === "Composure">>
<li>Her <<hovertip "<<-setup.composure.tooltip>>">>Composure<</hovertip>> reduced her @@.lust;Lust@@ by @@.lust;_args[0].traits[_z].amount@@.</li>
<<break>>
<</if>>
<</for>>
<</if>>
/* CONCUPISCENT */
<<if $between_triggers.trait.concupiscent.includes(_args[0].index)>>
/* FIND TRAIT */
<<for _z = 0; _z < _args[0].traits.length; _z++>>
<<if _args[0].traits[_z].name === "Concupiscent">>
<li>She is filled with <<hovertip "<<-setup.concupiscent.tooltip>>">>Concupiscent<</hovertip>> thoughts, increasing her @@.lust;Lust@@ by @@.lust;_args[0].traits[_z].amount@@.</li>
<<break>>
<</if>>
<</for>>
<</if>>
/* POISONED */
<<if $between_triggers.status.poisoned_cured.includes(_args[0].index)>>
<li>She lost @@.health;1 Health@@ and is no longer <<hovertip "<<-setup.poisoned.tooltip>>">>Poisoned<</hovertip>>.</li>
<<elseif $between_triggers.status.poisoned.includes(_args[0].index)>>
/* FIND AMOUNT */
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
<<if _args[0].statuses[_z].id === setup.poisoned.id>>
<li>She lost @@.health;_args[0].statuses[_z].amount Health@@ from being <<hovertip "<<-setup.poisoned.tooltip>>">>Poisoned<</hovertip>>.</li>
<<break>>
<</if>>
<</for>>
<</if>>
/* AROUSED */
<<if $between_triggers.status.aroused_cured.includes(_args[0].index)>>
<li>She gained @@.lust;1 Lust@@ and is no longer <<hovertip "<<-setup.aroused.tooltip>>">>Aroused<</hovertip>>.</li>
<<elseif $between_triggers.status.aroused.includes(_args[0].index)>>
/* FIND AMOUNT */
<<for _z = 0; _z < _args[0].statuses.length; _z++>>
<<if _args[0].statuses[_z].id === setup.aroused.id>>
<li>She gained @@.lust;_args[0].statuses[_z].amount Lust@@ from being <<hovertip "<<-setup.aroused.tooltip>>">>Aroused<</hovertip>>.</li>
<<break>>
<</if>>
<</for>>
<</if>>
/* IMPATIENT */
<<if $between_triggers.trait.impatient.includes(_args[0].index)>>
<li>She grows <<hovertip "<<-setup.impatient.tooltip>>">>Impatient<</hovertip>> in her search for treasure.</li>
<</if>>
/* PARASITES */
<<if $between_triggers.status.parasite.includes(_args[0].index) && !_args[0].status_names.includes(setup.parasite.id)>>
<li>She was able to remove the <<hovertip "<<-setup.parasite.tooltip>>">>Parasites<</hovertip>> after they drained her stats.</li>
<<elseif $between_triggers.status.parasite.includes(_args[0].index)>>
<li>The <<hovertip "<<-setup.parasite.tooltip>>">>Parasites<</hovertip>> drained her stats.</li>
<</if>>
/* STICKY & NASTY */
<<if $between_triggers.status.sticky_cured.includes(_args[0].index) && $between_triggers.trait.nasty.includes(_args[0].index)>>
/* FIND TRAIT */
<<for _z = 0; _z < _args[0].traits.length; _z++>>
<<if _args[0].traits[_z].name === setup.nasty.name>>
<li>She gained @@.lust;_args[0].traits[_z].amount Lust@@ from being <<hovertip "<<-setup.nasty.tooltip>>">>Nasty<</hovertip>>, but is no longer <<hovertip "<<-setup.sticky.tooltip>>">>Sticky<</hovertip>>.</li>
<<break>>
<</if>>
<</for>>
<<elseif $between_triggers.trait.nasty.includes(_args[0].index)>>
/* FIND TRAIT */
<<for _z = 0; _z < _args[0].traits.length; _z++>>
<<if _args[0].traits[_z].name === setup.nasty.name>>
<li>She gained @@.lust;_args[0].traits[_z].amount Lust@@ from being <<hovertip "<<-setup.nasty.tooltip>>">>Nasty<</hovertip>>.</li>
<<break>>
<</if>>
<</for>>
<<elseif $between_triggers.status.sticky_cured.includes(_args[0].index)>>
<li>She is no longer <<hovertip "<<-setup.sticky.tooltip>>">>Sticky<</hovertip>>.</li>
<</if>>
/* EDGING GAINED */
<<if $between_triggers.status.edging.includes(_args[0].index)>>
<li>She is on the <<hovertip "<<-setup.edging.tooltip>>">>Edge<</hovertip>> of climaxing.</li>
<</if>>
/* CURED STATUSES */
<<if $between_triggers.status.intoxicated_cured.includes(_args[0].index) || $between_triggers.status.edging_cured.includes(_args[0].index) || $between_triggers.status.brainwashed_cured.includes(_args[0].index)>>
/* CHOOSE STATUS */
<<if $between_triggers.status.intoxicated_cured.includes(_args[0].index)>>
<<set _status_info to setup.intoxicated>>
<<elseif $between_triggers.status.edging_cured.includes(_args[0].index)>>
<<set _status_info to setup.edging>>
<<elseif $between_triggers.status.brainwashed_cured.includes(_args[0].index)>>
<<set _status_info to setup.brainwashed>>
<</if>>
<li>She is no longer <<hovertip "_status_info.tooltip">>_status_info.id<</hovertip>>.</li>
<</if>>
<</widget>><<silently>>\
* Cost *
<<set _expand_cost to (setup.vault_expand_cost * ($treasureroom_count * 2)).clamp(setup.vault_expand_cost, 1000000)>>
* Display*
<</silently>>\
<div class="section">\
<div class="titlebox">\
Expanding Vault
</div>\
<div class="cardholder-building">\
<div class="imagebox-building">\
[img[images/rooms/treasure_room.jpg]]
</div>\
</div>\
<div class="cardholder-building">\
<div class="textbox-building">\
Cost: <span style="color:gold">_expand_cost Gold</span>
Expand your Vault to be able to hold @@.gold;<<- $treasureroom_size + setup.vault_expand_size>> Treasures@@
<<if $pc_gold >= _expand_cost>>\
<span id="forward"><<button [[Expand Vault|View Treasure Inventory]]>><<set $pc_gold -= _expand_cost>><<set $pc_rooms_gold_spent += _expand_cost>><<set $treasureroom_count++>><<set $treasureroom_size += setup.vault_expand_size>><</button>></span>
<<else>>\
<div class="offbutton">\
<<button "Expand Vault">><</button>>
</div>\
<</if>>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|View Treasure Inventory]]>><</button>></span>
</div>\
</div>\<div class="titlebox">\
<span style="color:red">You Have Too Many Treasures</span>
</div>\
<div class="textbox">\
Your Vault is full! You need to expand your Vault or sell down to @@.gold;$treasureroom_size Treasures@@.
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[Got it!|View Treasure Inventory]]>><</button>></span>
</div>\<<widget "UpdateGlobalStock">>
CREATES A LIST OF TREASURE OPTIONS OF ANY TREASURES AVAILABLE IN THE CURRENT RANK
GLOBAL TREASURE STOCK
<<set $global_treasure_stock to {
common: [],
common_total: 0,
uncommon: [],
uncommon_total: 0,
rare: [],
rare_total: 0,
legendary: [],
legendary_total: 0
}>>
QUEST BOARD TREASURES
<<set _questTreasures to []>>
<<for _z = 0; _z < $quest_board_list.length; _z++>>
<<set _questTreasures.push($quest_board_list[_z].treasure)>>
<</for>>
COMMON TREASURES
<<for _z = 0; _z < setup.common_treasure_list.length; _z++>>
<<if setup.common_treasure_list[_z].rank <= $dungeon_rank>>
<<set _newEntry to {
name: setup.common_treasure_list[_z].name,
rarity: "common",
hovertip: setup.common_treasure_list[_z].hovertip,
stock: setup.treasure_stock.common - $treasureroom_inventory.count(setup.common_treasure_list[_z].name) - $treasureshop_inventory.count(setup.common_treasure_list[_z].name) - $raidtreasure_list.count(setup.common_treasure_list[_z].name) - _questTreasures.count(setup.common_treasure_list[_z].name)
}>>
<<if _newEntry.stock > 0>>
<<set $global_treasure_stock.common.push(clone(_newEntry))>>
<<set $global_treasure_stock.common_total += _newEntry.stock>>
<</if>>
<</if>>
<</for>>
UNCOMMON TREASURES
<<for _z = 0; _z < setup.uncommon_treasure_list.length; _z++>>
<<if setup.uncommon_treasure_list[_z].rank <= $dungeon_rank>>
<<set _newEntry to {
name: setup.uncommon_treasure_list[_z].name,
rarity: "uncommon",
hovertip: setup.uncommon_treasure_list[_z].hovertip,
stock: setup.treasure_stock.uncommon - $treasureroom_inventory.count(setup.uncommon_treasure_list[_z].name) - $treasureshop_inventory.count(setup.uncommon_treasure_list[_z].name) - $raidtreasure_list.count(setup.uncommon_treasure_list[_z].name) - _questTreasures.count(setup.uncommon_treasure_list[_z].name)
}>>
<<if _newEntry.stock > 0>>
<<set $global_treasure_stock.uncommon.push(clone(_newEntry))>>
<<set $global_treasure_stock.uncommon_total += _newEntry.stock>>
<</if>>
<</if>>
<</for>>
RARE TREASURES
<<for _z = 0; _z < setup.rare_treasure_list.length; _z++>>
<<if setup.rare_treasure_list[_z].rank <= $dungeon_rank>>
<<set _newEntry to {
name: setup.rare_treasure_list[_z].name,
rarity: "rare",
hovertip: setup.rare_treasure_list[_z].hovertip,
stock: setup.treasure_stock.rare - $treasureroom_inventory.count(setup.rare_treasure_list[_z].name) - $treasureshop_inventory.count(setup.rare_treasure_list[_z].name) - $raidtreasure_list.count(setup.rare_treasure_list[_z].name) - _questTreasures.count(setup.rare_treasure_list[_z].name)
}>>
<<if _newEntry.stock > 0>>
<<set $global_treasure_stock.rare.push(clone(_newEntry))>>
<<set $global_treasure_stock.rare_total += _newEntry.stock>>
<</if>>
<</if>>
<</for>>
LEGENDARY TREASURES
<<for _z = 0; _z < setup.legendary_treasure_list.length; _z++>>
<<if setup.legendary_treasure_list[_z].rank <= $dungeon_rank>>
<<set _newEntry to {
name: setup.legendary_treasure_list[_z].name,
rarity: "legendary",
hovertip: setup.legendary_treasure_list[_z].hovertip,
stock: setup.treasure_stock.legendary - $treasureroom_inventory.count(setup.legendary_treasure_list[_z].name) - $treasureshop_inventory.count(setup.legendary_treasure_list[_z].name) - $raidtreasure_list.count(setup.legendary_treasure_list[_z].name) - _questTreasures.count(setup.legendary_treasure_list[_z].name)
}>>
<<if _newEntry.stock > 0>>
<<set $global_treasure_stock.legendary.push(clone(_newEntry))>>
<<set $global_treasure_stock.legendary_total += _newEntry.stock>>
<</if>>
<</if>>
<</for>>
ORGANIZE BY STOCK
<<set $global_treasure_stock.common.sort(function (a, b) { return b.stock - a.stock; });>>
<<set $global_treasure_stock.uncommon.sort(function (a, b) { return b.stock - a.stock; });>>
<<set $global_treasure_stock.rare.sort(function (a, b) { return b.stock - a.stock; });>>
<</widget>>
<<widget "SetRareTreasure">>
PICK RANDOM RARE TREASURE FROM GLOBAL STOCK, NO ARGS
STARTING RNG
<<set _treasure_rng to random(1, $global_treasure_stock.rare_total)>>
<<for _z = 0; _z < $global_treasure_stock.rare.length; _z++>>
CURRENT TREASURE RNG: _treasure_rng
<<if $global_treasure_stock.rare[_z].stock >= _treasure_rng>>
<<set $global_treasure_stock.rare[_z].stock-->>
<<set $global_treasure_stock.rare_total-->>
<<set _newTreasure to clone($global_treasure_stock.rare[_z])>>
<<if $global_treasure_stock.rare[_z].stock <= 0>>
<<set _remove to $global_treasure_stock.rare.deleteAt(_z)>>
<</if>>
<<break>>
<<else>>
<<set _treasure_rng -= $global_treasure_stock.rare[_z].stock>>
<</if>>
<</for>>
<</widget>>
<<widget "SetUncommonTreasure">>
<<set _treasure_rng to random(1, $global_treasure_stock.uncommon_total)>>
<<for _z = 0; _z < $global_treasure_stock.uncommon.length; _z++>>
CURRENT TREASURE RNG: _treasure_rng
<<if $global_treasure_stock.uncommon[_z].stock >= _treasure_rng>>
<<set $global_treasure_stock.uncommon[_z].stock-->>
<<set $global_treasure_stock.uncommon_total-->>
<<set _newTreasure to clone($global_treasure_stock.uncommon[_z])>>
<<if $global_treasure_stock.uncommon[_z].stock <= 0>>
<<set _remove to $global_treasure_stock.uncommon.deleteAt(_z)>>
<</if>>
<<break>>
<<else>>
<<set _treasure_rng -= $global_treasure_stock.uncommon[_z].stock>>
<</if>>
<</for>>
<</widget>>
<<widget "SetCommonTreasure">>
<<set _treasure_rng to random(1, $global_treasure_stock.common_total)>>
ADD COMMON TREASURE TO SHOP
<<for _z = 0; _z < $global_treasure_stock.common.length; _z++>>
CURRENT TREASURE RNG: _treasure_rng
<<if $global_treasure_stock.common[_z].stock >= _treasure_rng>>
<<set $global_treasure_stock.common[_z].stock-->>
<<set $global_treasure_stock.common_total-->>
<<set _newTreasure to clone($global_treasure_stock.common[_z])>>
<<if $global_treasure_stock.common[_z].stock <= 0>>
<<set _remove to $global_treasure_stock.common.deleteAt(_z)>>
<</if>>
<<break>>
<<else>>
<<set _treasure_rng -= $global_treasure_stock.common[_z].stock>>
<</if>>
<</for>>
<</widget>><<widget "GoddessCreatureList">>
update creature list with most current creatures not owned by player
SET LIST
<<set _goddessCreatureList to clone(setup.creature_list)>>
<<for _c = 0; _c < _goddessCreatureList.length; _c++>>
REMOVE IF PLAYER ISN'T THAT RANK YET
<<if _goddessCreatureList[_c].rank > $dungeon_rank>>
REMOVING _goddessCreatureList[_c].base_name : PLAYER NOT RANK _goddessCreatureList[_c].rank
<<set _remove to _goddessCreatureList.deleteAt(_c)>>
<<set _c-->>
<<continue>>
<</if>>
REMOVE IF PLAYER OWNS CREATURE
<<if $pc_creature_list.includes(_goddessCreatureList[_c].base_name)>>
REMOVING _goddessCreatureList[_c].base_name : PLAYER ALREADY OWNS
<<set _remove to _goddessCreatureList.deleteAt(_c)>>
<<set _c-->>
<<continue>>
<</if>>
<</for>>
<</widget>>
<<widget "GoddessTrapList">>
update trap list with most current creatures not owned by player
SET LIST
<<set _goddessTrapList to clone(setup.trap_list)>>
<<for _t = 0; _t < _goddessTrapList.length; _t++>>
REMOVE IF PLAYER ISN'T THAT RANK YET
<<if _goddessTrapList[_t].rank > $dungeon_rank>>
REMOVING _goddessTrapList[_t].base_name : PLAYER NOT RANK _goddessTrapList[_t].rank
<<set _remove to _goddessTrapList.deleteAt(_t)>>
<<set _t-->>
<<continue>>
<</if>>
REMOVE IF PLAYER OWNS CREATURE
<<if $pc_trap_list.includes(_goddessTrapList[_t].base_name)>>
REMOVING _goddessTrapList[_t].base_name : PLAYER ALREADY OWNS
<<set _remove to _goddessTrapList.deleteAt(_t)>>
<<set _t-->>
<<continue>>
<</if>>
<</for>>
<</widget>>
<<widget "PlayerCreatureList">>
Set the player's list of creatures that they own
<<set _playerCreatureList to clone(setup.creature_list)>>
<<for _c = 0; _c < _playerCreatureList.length; _c++>>
CHECK IF PLAYER OWNS CREATURE
<<if !$pc_creature_list.includes(_playerCreatureList[_c].base_name)>>
REMOVE _playerCreatureList[_c].base_name FROM LIST
<<set _remove to _playerCreatureList.deleteAt(_c)>>
<<set _c-->>
<</if>>
<</for>>
<</widget>>
<<widget "PlayerTrapList">>
Set the player's list of traps that they own
<<set _playerTrapList to clone(setup.trap_list)>>
<<for _t = 0; _t < _playerTrapList.length; _t++>>
CHECK IF PLAYER OWNS CREATURE
<<if !$pc_trap_list.includes(_playerTrapList[_t].base_name)>>
REMOVE _playerTrapList[_t].base_name FROM LIST
<<set _remove to _playerTrapList.deleteAt(_t)>>
<<set _t-->>
<</if>>
<</for>>
<</widget>><<widget "SlaveText">>
/* STRESS REDUCED AND DISOBEDIENT */
<<if _slave_triggers.general.stress_gained > 0>>
<<if _slave_triggers.general.disobedient_trig === true>>
<li>Her @@.stress;Stress@@ increased by @@.stress;_slave_triggers.general.stress_gained@@ and she became Disobedient.</li>
<<elseif _slave_triggers.blessing.acquiescence_trig === true>>
<li>Her @@.stress;Stress@@ increased by @@.stress;_slave_triggers.general.stress_gained@@, but did not become Disobedient because of her Acquiescence towards you.</li>
<<else>>
<li>Her @@.stress;Stress@@ increased by @@.stress;_slave_triggers.general.stress_gained@@.</li>
<</if>>
<</if>>
/* STRESS REDUCED */
<<if _slave_triggers.general.stress_reduced > 0>>
<<if _slave_triggers.general.disobedient_cured === true>>
<li>She recovered @@.stress;_slave_triggers.general.stress_reduced Stress@@ and is no longer Disobedient.</li>
<<else>>
<li>She recovered @@.stress;_slave_triggers.general.stress_reduced Stress@@.</li>
<</if>>
<</if>>
/* INJURY */
<<if _slave_triggers.general.incident_trig === true && _slave_triggers.general.injured_trig === false>>
<li>She was not Injured during the Incident.</li>
<</if>>
<<if _slave_triggers.trait.sturdy_trig === true>>
<li>Her Sturdy build prevented her from becoming Injured.</li>
<</if>>
<<if _slave_triggers.general.injured_trig === true>>
<<if _slave_triggers.trait.hardy_trig === true>>
<li>She become Injured, but will recover after one day because she is Hardy.</li>
<<elseif _args[0].injured_cd === 1>>
<li>She become Injured for one day.</li>
<<elseif _args[0].injured_cd > 1>>
<li>She become Injured for _args[0].injured_cd days.</li>
<</if>>
<</if>>
/* STAT EXP GAINED */
<<set _expText to []>>
<<for _z = 0; _z < setup.slave_stats_list.length; _z++>>
<<set _expGained to _slave_triggers.exp_gained[setup.slave_stats_list[_z]]>>
<<set _statName to setup.slave_stats_list[_z].toUpperFirst()>>
<<if _statName === "Love">>
<<if _expGained > 0 && _expText.length === 0>>
<<set _expText.push("She gained @@.love;"+_expGained+" "+_statName+"@@")>>
<<elseif _expGained > 0>>
<<set _expText.push(" @@.love;"+_expGained+" "+_statName+"@@")>>
<</if>>
<<elseif _statName === "Obedience">>
<<if _expGained > 0 && _expText.length === 0>>
<<set _expText.push("She gained @@.obedience;"+_expGained+" "+_statName+"@@")>>
<<elseif _expGained > 0>>
<<set _expText.push(" @@.obedience;"+_expGained+" "+_statName+"@@")>>
<</if>>
<<elseif _statName === "Libido">>
<<if _expGained > 0 && _expText.length === 0>>
<<set _expText.push("She gained @@.libido;"+_expGained+" "+_statName+"@@")>>
<<elseif _expGained > 0>>
<<set _expText.push(" @@.libido;"+_expGained+" "+_statName+"@@")>>
<</if>>
<<elseif _statName === "Strength">>
<<if _expGained > 0 && _expText.length === 0>>
<<set _expText.push("She gained @@.strength;"+_expGained+" "+_statName+"@@")>>
<<elseif _expGained > 0>>
<<set _expText.push(" @@.strength;"+_expGained+" "+_statName+"@@")>>
<</if>>
<<elseif _statName === "Intelligence">>
<<if _expGained > 0 && _expText.length === 0>>
<<set _expText.push("She gained @@.intelligence;"+_expGained+" "+_statName+"@@")>>
<<elseif _expGained > 0>>
<<set _expText.push(" @@.intelligence;"+_expGained+" "+_statName+"@@")>>
<</if>>
<</if>>
<</for>>
<<if _expText.length > 1>>
<<set _lastText to _expText.pop()>>
<<if _expText.length === 1>>
<li>_expText and _lastText EXP.</li>
<<else>>
<li>_expText, and _lastText EXP.</li>
<</if>>
<<elseif _expText.length === 1>>
<li>_expText EXP.</li>
<</if>>
/* SKILL EXP GAINED */
<<set _expText to []>>
<<for _z = 0; _z < setup.slave_sex_types.length; _z++>>
<<set _expGained to _slave_triggers.exp_gained[setup.slave_sex_types[_z]]>>
<<set _statName to setup.slave_sex_types[_z].toUpperFirst()>>
<<if _expGained > 0 && _expText.length === 0>>
<<set _expText.push("She gained "+_expGained+" "+_statName+" skill")>>
<<elseif _expGained > 0>>
<<set _expText.push(" "+_expGained+" "+_statName+" skill")>>
<</if>>
<</for>>
<<if _expText.length > 1>>
<<set _lastText to _expText.pop()>>
<li>_expText, and _lastText EXP.</li>
<<elseif _expText.length === 1>>
<li>_expText EXP.</li>
<</if>>
/* STAT LEVEL GAINED */
<<set _lvlText to []>>
<<for _z = 0; _z < setup.slave_stats_list.length; _z++>>
<<set _lvlGained to _slave_triggers.stat_gained[setup.slave_stats_list[_z]]>>
<<set _statName to setup.slave_stats_list[_z].toUpperFirst()>>
<<if _statName === "Love">>
<<if _lvlGained > 0 && _lvlText.length === 0>>
<<set _lvlText.push("Her @@.love;"+_statName+"@@ increased by @@.love;"+_lvlGained+"@@")>>
<<elseif _lvlGained > 0>>
<<set _lvlText.push(" her @@.love;"+_statName+"@@ by @@.love;"+_lvlGained+"@@")>>
<</if>>
<<elseif _statName === "Obedience">>
<<if _lvlGained > 0 && _lvlText.length === 0>>
<<set _lvlText.push("Her @@.obedience;"+_statName+"@@ increased by @@.obedience;"+_lvlGained+"@@")>>
<<elseif _lvlGained > 0>>
<<set _lvlText.push(" her @@.obedience;"+_statName+"@@ by @@.obedience;"+_lvlGained+"@@")>>
<</if>>
<<elseif _statName === "Libido">>
<<if _lvlGained > 0 && _lvlText.length === 0>>
<<set _lvlText.push("Her @@.libido;"+_statName+"@@ increased by @@.libido;"+_lvlGained+"@@")>>
<<elseif _lvlGained > 0>>
<<set _lvlText.push(" her @@.libido;"+_statName+"@@ by @@.libido;"+_lvlGained+"@@")>>
<</if>>
<<elseif _statName === "Strength">>
<<if _lvlGained > 0 && _lvlText.length === 0>>
<<set _lvlText.push("Her @@.strength;"+_statName+"@@ increased by @@.strength;"+_lvlGained+"@@")>>
<<elseif _lvlGained > 0>>
<<set _lvlText.push(" her @@.strength;"+_statName+"@@ by @@.strength;"+_lvlGained+"@@")>>
<</if>>
<<elseif _statName === "Intelligence">>
<<if _lvlGained > 0 && _lvlText.length === 0>>
<<set _lvlText.push("Her @@.intelligence;"+_statName+"@@ increased by @@.intelligence;"+_lvlGained+"@@")>>
<<elseif _lvlGained > 0>>
<<set _lvlText.push(" her @@.intelligence;"+_statName+"@@ by @@.intelligence;"+_lvlGained+"@@")>>
<</if>>
<</if>>
<</for>>
<<if _lvlText.length > 1>>
<<set _lastText to _lvlText.pop()>>
<<if _lvlText.length === 1>>
<li>_lvlText and _lastText.</li>
<<else>>
<li>_lvlText, and _lastText.</li>
<</if>>
<<elseif _lvlText.length === 1>>
<li>_lvlText.</li>
<</if>>
/* SKILL LEVEL GAINED */
<<set _lvlText to []>>
<<for _z = 0; _z < setup.slave_sex_types.length; _z++>>
<<set _lvlGained to _slave_triggers.skill_gained[setup.slave_sex_types[_z]]>>
<<set _statName to setup.slave_sex_types[_z].toUpperFirst()>>
<<if _lvlGained > 0 && _lvlText.length === 0>>
<<set _lvlText.push("Her "+_statName+" skill increased by "+_lvlGained)>>
<<elseif _lvlGained > 0>>
<<set _lvlText.push(" her "+_statName+" skill by "+_lvlGained)>>
<</if>>
<</for>>
<<if _lvlText.length > 1>>
<<set _lastText to _lvlText.pop()>>
<li>_lvlText, and _lastText.</li>
<<elseif _lvlText.length === 1>>
<li>_lvlText.</li>
<</if>>
/* LOVER TRIGGER */
<<if _slave_triggers.trait.lover_trig === true>>
<li>After taking her Virginity, she became your Lover.</li>
<</if>>
/* CLINGY TRIGGER */
<<if _slave_triggers.trait.clingy_trig === true>>
<li>After taking her Virginity, she became Clingy.</li>
<</if>>
/* LOATHING TRIGGER */
<<if _slave_triggers.trait.loathing_trig === true>>
<li>After taking her Virginity, she starting Loathing you.</li>
<</if>>
<</widget>>
<<widget "SlaveReportText">>
<<if _args[0].report.complete === true>>
<<if _args[0].report.type === "Service" || _args[0].report.type === "Prostitution" || _args[0].report.type === "Caretaker" || _args[0].report.type === "Maintenance">>
/* Scold */
<<if _args[0].scolded_bool === true>>
<li>You scolded her to insure she performed her Job well, but she gained more @@.stress;Stress@@ and earned less @@.love;Love@@ EXP.</li>
<</if>>
<li>_args[0].report.outcome</li>
/* Injured */
<<if _args[0].injury_bool === true>>
<li>She was Injured during her Job.</li>
<</if>>
/* Motherly */
<<if _args[0].report.motherly.trig === true>>
<li>_args[0].report.motherly.text</li>
<</if>>
<<elseif _args[0].report.type === "Class">>
/* Scold */
<<if _args[0].scolded_bool === true>>
<li>You scolded her to make sure she passed her Class, but she gained more @@.stress;Stress@@ and will earn less @@.love;Love@@ EXP tonight.</li>
<</if>>
<li>_args[0].report.outcome</li>
<<elseif _args[0].report.type === "Quest">>
/* Scold */
<<if _args[0].scolded_bool === true>>
<li>You scolded her about the Quest, making sure she knew the importance of it, but gained more @@.stress;Stress@@ and will earn less @@.love;Love@@ EXP tonight.</li>
<</if>>
<li>_args[0].report.outcome</li>
/* Injured */
<<elseif _args[0].report.type === "Injured">>
<li>_args[0].report.outcome</li>
/* Disobedient */
<<elseif _args[0].report.type === "Disobedient">>
<li>_args[0].report.outcome</li>
<<if _args[0].discipline_count > 0>>
<<if _args[0].discipline_count > 1>>
<<set _text to _args[0].discipline_count + " times">>
<<else>>
<<set _text to "once">>
<</if>>
<li>You Disciplined her _text today.</li>
<</if>>
<<if _args[0].report.end_of_day.disruptive_trig === true>>
<li>She reduced the amount of <span class="stress">Stress</span> recovered by your other Slaves because she was throwing a fit.</li>
<</if>>
/* Enslaved */
<<elseif _args[0].report.type === "Enslaved">>
<li>After getting Captured while Raiding your Dungeon, you decided to keep her as a Slave.</li>
<<elseif _args[0].report.type === "Day Off">>
<li>_args[0].report.outcome</li>
<</if>>
/* Side Job */
<<if _args[0].report.side_outcome !== "">>
<li>_args[0].report.side_outcome</li>
<</if>>
/* General */
/* Stress */
<<if _args[0].report.stress_gained > 0 && _args[0].disobedient === true>>
<li>Her @@.stress;Stress@@ increased by @@.stress;_args[0].report.stress_gained@@ and became Disobedient.</li>
<<elseif _args[0].report.stress_gained > 0>>
<li>Her @@.stress;Stress@@ increased by @@.stress;_args[0].report.stress_gained@@.</li>
<</if>>
/* STAT EXP GAINED */
<<set _expText to []>>
<<for _z = 0; _z < setup.slave_stats_list.length; _z++>>
<<set _expGained to _args[0].report.exp_gained[setup.slave_stats_list[_z]]>>
<<set _statName to setup.slave_stats_list[_z].toUpperFirst()>>
<<if _statName === "Love">>
<<if _expGained > 0 && _expText.length === 0>>
<<set _expText.push("She gained @@.love;"+_expGained+" "+_statName+"@@")>>
<<elseif _expGained > 0>>
<<set _expText.push(" @@.love;"+_expGained+" "+_statName+"@@")>>
<</if>>
<<elseif _statName === "Obedience">>
<<if _expGained > 0 && _expText.length === 0>>
<<set _expText.push("She gained @@.obedience;"+_expGained+" "+_statName+"@@")>>
<<elseif _expGained > 0>>
<<set _expText.push(" @@.obedience;"+_expGained+" "+_statName+"@@")>>
<</if>>
<<elseif _statName === "Libido">>
<<if _expGained > 0 && _expText.length === 0>>
<<set _expText.push("She gained @@.libido;"+_expGained+" "+_statName+"@@")>>
<<elseif _expGained > 0>>
<<set _expText.push(" @@.libido;"+_expGained+" "+_statName+"@@")>>
<</if>>
<<elseif _statName === "Strength">>
<<if _expGained > 0 && _expText.length === 0>>
<<set _expText.push("She gained @@.strength;"+_expGained+" "+_statName+"@@")>>
<<elseif _expGained > 0>>
<<set _expText.push(" @@.strength;"+_expGained+" "+_statName+"@@")>>
<</if>>
<<elseif _statName === "Intelligence">>
<<if _expGained > 0 && _expText.length === 0>>
<<set _expText.push("She gained @@.intelligence;"+_expGained+" "+_statName+"@@")>>
<<elseif _expGained > 0>>
<<set _expText.push(" @@.intelligence;"+_expGained+" "+_statName+"@@")>>
<</if>>
<</if>>
<</for>>
<<if _expText.length > 1>>
<<set _lastText to _expText.pop()>>
<<if _expText === 1>>
<li>_expText and _lastText EXP.</li>
<<else>>
<li>_expText, and _lastText EXP.</li>
<</if>>
<<elseif _expText.length === 1>>
<li>_expText EXP.</li>
<</if>>
/* SKILL EXP GAINED */
<<set _expText to []>>
<<for _z = 0; _z < setup.slave_sex_types.length; _z++>>
<<set _expGained to _args[0].report.exp_gained[setup.slave_sex_types[_z]]>>
<<set _statName to setup.slave_sex_types[_z].toUpperFirst()>>
<<if _expGained > 0 && _expText.length === 0>>
<<set _expText.push("She gained "+_expGained+" "+_statName+" skill")>>
<<elseif _expGained > 0>>
<<set _expText.push(" "+_expGained+" "+_statName+" skill")>>
<</if>>
<</for>>
<<if _expText.length > 1>>
<<set _lastText to _expText.pop()>>
<<if _expText.length === 1>>
<li>_expText and _lastText EXP.</li>
<<else>>
<li>_expText, and _lastText EXP.</li>
<</if>>
<<elseif _expText.length === 1>>
<li>_expText EXP.</li>
<</if>>
/* STAT LEVEL GAINED */
<<set _lvlText to []>>
<<for _z = 0; _z < setup.slave_stats_list.length; _z++>>
<<set _lvlGained to _args[0].report.stat_gained[setup.slave_stats_list[_z]]>>
<<set _statName to setup.slave_stats_list[_z].toUpperFirst()>>
<<if _statName === "Love">>
<<if _lvlGained > 0 && _lvlText.length === 0>>
<<set _lvlText.push("Her @@.love;"+_statName+"@@ increased by @@.love;"+_lvlGained+"@@")>>
<<elseif _lvlGained > 0>>
<<set _lvlText.push(" her @@.love;"+_statName+"@@ by @@.love;"+_lvlGained+"@@")>>
<</if>>
<<elseif _statName === "Obedience">>
<<if _lvlGained > 0 && _lvlText.length === 0>>
<<set _lvlText.push("Her @@.obedience;"+_statName+"@@ increased by @@.obedience;"+_lvlGained+"@@")>>
<<elseif _lvlGained > 0>>
<<set _lvlText.push(" her @@.obedience;"+_statName+"@@ by @@.obedience;"+_lvlGained+"@@")>>
<</if>>
<<elseif _statName === "Libido">>
<<if _lvlGained > 0 && _lvlText.length === 0>>
<<set _lvlText.push("Her @@.libido;"+_statName+"@@ increased by @@.libido;"+_lvlGained+"@@")>>
<<elseif _lvlGained > 0>>
<<set _lvlText.push(" her @@.libido;"+_statName+"@@ by @@.libido;"+_lvlGained+"@@")>>
<</if>>
<<elseif _statName === "Strength">>
<<if _lvlGained > 0 && _lvlText.length === 0>>
<<set _lvlText.push("Her @@.strength;"+_statName+"@@ increased by @@.strength;"+_lvlGained+"@@")>>
<<elseif _lvlGained > 0>>
<<set _lvlText.push(" her @@.strength;"+_statName+"@@ by @@.strength;"+_lvlGained+"@@")>>
<</if>>
<<elseif _statName === "Intelligence">>
<<if _lvlGained > 0 && _lvlText.length === 0>>
<<set _lvlText.push("Her @@.intelligence;"+_statName+"@@ increased by @@.intelligence;"+_lvlGained+"@@")>>
<<elseif _lvlGained > 0>>
<<set _lvlText.push(" her @@.intelligence;"+_statName+"@@ by @@.intelligence;"+_lvlGained+"@@")>>
<</if>>
<</if>>
<</for>>
<<if _lvlText.length > 1>>
<<set _lastText to _lvlText.pop()>>
<<if _lvlText.length === 1>>
<li>_lvlText and _lastText.</li>
<<else>>
<li>_lvlText, and _lastText.</li>
<</if>>
<<elseif _lvlText.length === 1>>
<li>_lvlText.</li>
<</if>>
/* SKILL LEVEL GAINED */
<<set _lvlText to []>>
<<for _z = 0; _z < setup.slave_sex_types.length; _z++>>
<<set _lvlGained to _args[0].report.skill_gained[setup.slave_sex_types[_z]]>>
<<set _statName to setup.slave_sex_types[_z].toUpperFirst()>>
<<if _lvlGained > 0 && _lvlText.length === 0>>
<<set _lvlText.push("Her "+_statName+" skill increased by "+_lvlGained)>>
<<elseif _lvlGained > 0>>
<<set _lvlText.push(" her "+_statName+" skill by "+_lvlGained)>>
<</if>>
<</for>>
<<if _lvlText.length > 1>>
<<set _lastText to _lvlText.pop()>>
<li>_lvlText, and _lastText.</li>
<<elseif _lvlText === 1>>
<li>_lvlText.</li>
<</if>>
<<if _args[0].report.motherly === true>>
<li>She cared for the other Slaves at the end of the day.</li>
<</if>>
/* Conformity Teaching */
<<if _args[0].report.conformity_slave !== "">>
<li>_args[0].report.conformity_exp.text</li>
<</if>>
<<if _args[0].report.end_of_day.stress_reduced > 0 && _args[0].report.end_of_day.love_exp > 0 && _args[0].report.end_of_day.obedience_exp > 0>>
<li>She recovered @@.stress;_args[0].report.end_of_day.stress_reduced Stress@@ and gained @@.love;_args[0].report.end_of_day.love_exp Love@@ and @@.obedience;_args[0].report.end_of_day.obedience_exp Obedience@@ EXP.</li>
<<elseif _args[0].report.end_of_day.stress_reduced > 0 && _args[0].report.end_of_day.love_exp > 0>>
<li>She recovered @@.stress;_args[0].report.end_of_day.stress_reduced Stress@@ and gained @@.love;_args[0].report.end_of_day.love_exp Love@@ EXP.</li>
<<elseif _args[0].report.end_of_day.stress_reduced > 0>>
<li>She recovered @@.stress;_args[0].report.end_of_day.stress_reduced Stress@@.</li>
<</if>>
<<else>>
<<if _args[0].report.type === "Class">>
<li>She is out taking the _args[0].class.name Class.</li>
<<if _args[0].class_cd === 1>>
<li>She is expected to finish her Class tomorrow.</li>
<<else>>
<li>She will finish her Class in _args[0].class_cd days.</li>
<</if>>
<<elseif _args[0].report.type === "Quest">>
<li>She is out on the _args[0].quest.name Quest.</li>
<<if _args[0].quest_cd === 1>>
<li>She is expected to complete her Quest tomorrow.</li>
<<else>>
<li>She will complete her Quest in _args[0].quest_cd days.</li>
<</if>>
<</if>>
<</if>>
<</widget>><div class="popup-title">\
<<if $slave_room_list[_i].report.type === "Quest">>\
Quest Completed!
<<elseif $slave_room_list[_i].report.type === "Class">>\
Class Finished!
<</if>>\
</div>\
<div class="popup-pic">\
$slave_room_list[_i].pic
</div>\
<div class="popup-text">\
$slave_room_list[_i].report.outcome
<<SlaveText $slave_room_list[_i]>>
</div>\<div class="popup-title">\
_title
</div>\
<div class="popup-pic">\
$slave_room_list[_i].pic
</div>\
<div class="popup-text">\
_outcome
</div>\
<<silently>>\
* Find Other Slave *
<<for _z = 0; _z < $slave_room_list.length; _z++>>
<<if $slave_room_list[_z].room_type === "Slave">>
<<if $slave_room_list[_z].index === $serviceIndex>>
<<set _id to _z>>
<<unset $serviceIndex>>
<<break>>
<</if>>
<</if>>
<</for>>
<</silently>>\
<div class="section">\
<div class="titlebox">\
Reassign $cur_slave.job.name
</div>\
<div class="imagebox">\
$slave_room_list[_id].body_pic
</div>\
<div class="textbox-center">\
$slave_room_list[_id].name is currently assigned this Job. Do you want to reassign it to $cur_slave.name instead?
<span id="forward"><<button [[Yes|Choose Service Type]]>>\
<<silently>>\
<<if $job === "job">>
<<set $slave_room_list[_id].job to "">>
<<set $slave_room_list[_id].side_job to "">>
<<else>>
<<set $slave_room_list[_id].side_job to "">>
<</if>>
<</silently>>\
<</button>></span> <span id="back"><<button [[No|Assign Slave Job]]>>\
<<silently>>\
<<if $job === "job">>
<<set $cur_slave.job to "">>
<<set $cur_slave.side_job to "">>
<<else>>
<<set $cur_slave.side_job to "">>
<</if>>
<<unset $job>>
<</silently>>\
<</button>></span>
</div>\
</div>\ <<widget "PreCombat">>
_args[0].length Raiders in party, _args[1].name is on this floor
* Trigger Brainwashed trig *
<<for _z = 0; _z < _args[0].length; _z++>>
<<if _args[0][_z].status_names.includes(setup.brainwashed.id)>>
<<for _s = 0; _s < _args[0][_z].statuses.length; _s++>>
<<if _args[0][_z].statuses[_s].id === setup.brainwashed.id>>
<<if _args[0][_z].statuses[_s].permanent_bool === false>>
<<set _text_triggers.status.brainwashed_trig.push(_args[0][_z].index)>>
<<break>>
<</if>>
<</if>>
<</for>>
<</if>>
<</for>>
* Effects *
<<if _args[1].effect_names.includes("Enchantress's Hindrance")>>
TRIGGER TEXT
<<set _text_triggers.effect.hindrance to true>>
<<for _z = 0; _z < _args[0].length; _z++>>
REDUCE AWARE AND REASOM
<<set _args[0][_z].cur_aware -= (Math.round(_args[0][_z].cur_aware * setup.enchantress.float)).clamp(1, 1000000)>>
<<set _args[0][_z].cur_reas -= (Math.round(_args[0][_z].cur_reas * setup.enchantress.float)).clamp(1, 1000000)>>
<<if _args[0][_z].cur_aware < 1>>
<<set _args[0][_z].cur_aware to 1>>
<</if>>
<<if _args[0][_z].cur_reas < 1>>
<<set _args[0][_z].cur_reas to 1>>
<</if>>
<</for>>
<</if>>
<</widget>><<silently>>\
* Variables *
<<set $missionName to setup.annaMisLine[$missionLog.anna.num].name>>
<<if !$reward_page>>
<<set $reward_page to 1>>
<</if>>
* Display *
<</silently>>\
<<switch $reward_page>>\
<<case 1>>\
<div class="section">\
<div class="titlebox">\
$missionName
</div>\
<div class="picbox-intro">\
[img[images/descendant/mission/raider.jpg]]
</div>\
<div class="textbox-intro">\
You enter the holding area to inspect the adventurers captured tonight and notice something particular about one of them. After a closer inspection, you determine that this one might be the Descendant Anna mentioned to you.
@@.pc-dialogue;You're a long way from home beautiful. What brings you out here?@@
Her eyes locked with you, but she did not say anything. You could feel a trace of fear behind her vertically slit pupils, but she did well not to show it. You read a little more about Descendants after Anna told you about them. While they are naturally strong physically, they are also very submissive.
@@.pc-dialogue;I know someone who is looking for you, but I might just keep you instead.@@
She silently kept her gaze but shifted away from you. Normally, she would easily be able to muscle her way out of this situation. But in her weakened state, she was completely at your mercy.
@@.pc-dialogue;Unfortunately, I was told it would be in my best interest if I brought you back to the Slave Market. There was no mention of not having some fun before though.@@
Her cool demeanor broke as fear overcame her. You quickly removed her outer clothing and pushed yourself on top of her.
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[Next|Captured Descendant]]>><<set $reward_page++>><</button>></span>
</div>\
</div>\
<<case 2>>\
<div class="section">\
<div class="titlebox">\
$missionName
</div>\
<div class="picbox-intro">\
[img[images/descendant/mission/0.jpg]]
</div>\
<div class="textbox-intro">\
It is hard to control yourself in the presence of such beauty. Her strong build was offset by her soft features and voluptuous breasts. This felt like a once-in-a-lifetime opportunity and you were ready to make the most of it. You hear Anna's words about not damaging her goods echo in your mind, slowing your approach towards the Descendant.
@@.pc-dialogue;Don't worry, I was also told to bring you back in one piece. I'll be gentle with you.@@
Unexpectedly, that seemed to have eased her worry as her body became more accepting towards you. Or maybe her time in the dungeon increased her arousal and she finally gave in to it. Either way, you hovered over her, ready to take the next step. You hold her hand as you lower yourself and guide your cock into her pussy.
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Captured Descendant]]>><<set $reward_page-->><</button>></span> <span id="forward"><<button [[Next|Captured Descendant]]>><<set $reward_page++>><</button>></span>
</div>\
</div>\
<<case 3>>\
<div class="section">\
<div class="titlebox">\
$missionName
</div>\
<div class="picbox-intro">\
[img[images/descendant/mission/2.jpg]]
</div>\
<div class="textbox-intro">\
She moans lightly as you push slowly into her until you are fully inside her. It feels warm and tight. You begin to start moving steadily as she locks eyes with you. She says nothing, but her eyes tell you to go faster. You start to pick up the pace, making her body quiver in anticipation. Her tits sway up and down, grazing your chest as you lean down closer to get more stability to go faster. Your dick throbs as her wet pussy squeezes around it. You feel yourself getting close as you press your body down into hers as she claws at your back, moaning even more. Her back arches as you feel her climax over your dick and moments later, you do the same into her womb, filling her up with your cum. You slide your dick out of her as she slowly passes out from all the excitement. This was one of the more pleasurable experiences you've had since you arrived, too bad you can't keep her. You decided it best to let her rest for now and return her to Anna tomorrow.
<div class="text-center-bold">You gained <span class="le"><<- setup.annaMisLine[$missionLog.anna.num].lust_reward>> Lust Essence</span>. Bring her to Anna in the Slave Market for your reward tomorrow.</div>
</div>\
<div class="exit-link-right">\
<<if $slave_girl_list.length === 0>>\
<<set _link to "Daily Summary">>\
<<else>>\
<<set _link to "Slave List">>\
<</if>>\
<span id="back"><<button [[Back|Captured Descendant]]>><<set $reward_page-->><</button>></span> <span id="forward"><<button [[Next|_link]]>><<set $pc_lust += setup.annaMisLine[$missionLog.anna.num].lust_reward>><<unset $reward_page, $missionName>><</button>></span>
</div>\
</div>\
<</switch>><<silently>>\
* VARIABLES *
<<set _captureBool to false>> set to true after capturing 1 raider, prevents other raiders from being captured
<<set _capOptions to []>> list of options that trap can capture
<<set _capIndex to "">> holds raiders index that is getting captured
* SETUP ROOM *
<<RoomSetup $raiders $this_room>>
<<TrapStats $this_room>>
* SETUP RAIDER *
<<RaiderSetup $raiders>>
* PRE COMBAT EFFECTS *
<<PreCombat $raiders $this_room>>
* DANCER BUFF *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].class === "Dancer">>
<<DancerBuff $raiders[_i] $this_room>>
<</if>>
<</for>>
* TRAPCHECKS FOR EACH RAIDER OR UNTIL ONE FAILS *
<<set _trap_bool to false>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<set $this_room.total_attempts++>>
<<set $this_room.report.trap_attempts++>>
<<CalcTrapcheck $raiders[_i] $this_room.cur_check>>
<<SimTrapcheck $raiders[_i] _trapcheck>>
<<if _text_triggers.check.trapcheck_failed.includes($raiders[_i].index) || _text_triggers.check.trapcheck_crit_failed.includes($raiders[_i].index)>>
UPDATE RAIDER REPORT
<<if $raiders.length > 1 && $this_room.mode === "Flooded">>
<<set _entry to "She triggered the trap, causing her party to fall into the pit.">>
<<else>>
<<set _entry to "She triggered the trap and fell into the pit.">>
<</if>>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<<set $this_room.total_triggers++>>
<<set $this_room.report.trap_successes++>>
<<set _trap_bool to true>>
END TRAPCHECKS
<<break>>
<</if>>
<</for>>
* PITFALL MODE EFFECTS *
<<if _trap_bool === true>>
<<if $this_room.mode === "Overgrown">>
* OVERGROWN *
<<set _overgrownFallDmg to "">> amount of damage taken from falling
<<set _capOptions to []>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<if _text_triggers.check.trapcheck_failed.includes($raiders[_i].index) || _text_triggers.check.trapcheck_crit_failed.includes($raiders[_i].index)>>
FALL DMG
<<set _percent_hp to ($this_room.fall_float + (($this_room.cur_atk * $this_room.overgrown_float) / 100)).toFixed(2)>> _percent_hp % OF HP
<<set _atk to Math.trunc($raiders[_i].max_hp * _percent_hp)>>
<<NormalAttack $raiders[_i] $this_room _atk>>
RECORD DMG
<<set _overgrownFallDmg to clone($raiders[_i].dmg_taken)>>
VINE DMG
<<set _vineAtk to Math.trunc($this_room.cur_atk * $this_room.patk_float)>>
VINE ATKS
<<for _a = 0; _a < $this_room.overgrown_int; _a++>>
<<NormalAttack $raiders[_i] $this_room _vineAtk>>
STRIPPED STATUS
<<set _rng to random(1, 100)>>
<<if $this_room.stripped_percent >= _rng>>
<<AddStatus $raiders[_i] setup.stripped true>>
<</if>>
<</for>>
ADD RAIDER TO LIST IF CAN CAPTURE
<<if $raiders[_i].cur_hp - $raiders[_i].dmg_taken <= 0>>
<<set _capOptions.push($raiders[_i].index)>>
<</if>>
UPDATE RAIDER REPORT
<<if _text_triggers.status.stripped.includes($raiders[_i].index)>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ damage and became Stripped.">>
<<else>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ damage.">>
<</if>>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<<break>>
<</if>>
<</for>>
<<if _capOptions.length > 0>>
<<set _capIndex to _capOptions.random()>>
<</if>>
<<elseif $this_room.mode === "Infested">>
* INFESTED *
<<set _capOptions to []>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<if _text_triggers.check.trapcheck_failed.includes($raiders[_i].index) || _text_triggers.check.trapcheck_crit_failed.includes($raiders[_i].index)>>
% SEX DMG
<<set _percent_lust to ($this_room.lust_float + (($this_room.cur_sex * $this_room.infested_float) / 100)).toFixed(2)>> _percent_lust % OF LUST
<<set _sex to Math.trunc($raiders[_i].max_lust * _percent_lust)>>
TENTACLE DMG
<<set _tentAtk to Math.trunc($this_room.cur_sex * $this_room.satk_float) + _sex>>
TENTACLE ATKS
<<for _a = 0; _a < $this_room.infested_int; _a++>>
<<SexualAttack $raiders[_i] $this_room _tentAtk>>
PREGNANT CHECK
<<PregnantCheck $raiders[_i] $this_room $this_room.pregnant_percent>>
<</for>>
ADD RAIDER TO LIST IF CAN CAPTURE
<<if $raiders[_i].cur_lust + $raiders[_i].sex_taken >= $raiders[_i].max_lust>>
<<set _capOptions.push($raiders[_i].index)>>
<</if>>
UPDATE RAIDER REPORT
<<set _entry to "She took @@.sex;"+$raiders[_i].sex_taken+"@@ damage.">>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<<break>>
<</if>>
<</for>>
<<if _capOptions.length > 0>>
<<set _capIndex to _capOptions.random()>>
<</if>>
<<elseif $this_room.mode === "Flooded">>
* FLOODED *
<<for _i = 0; _i < $raiders.length; _i++>>
FALL DMG
<<set _percent_hp to ($this_room.fall_float + (($this_room.cur_atk * $this_room.flooded_float) / 100)).toFixed(2)>> _percent_hp % OF HP
<<set _atk to Math.trunc($raiders[_i].max_hp * _percent_hp)>>
<<NormalAttack $raiders[_i] $this_room _atk>>
WET
<<AddStatus $raiders[_i] setup.wet true>>
AROUSED STACKS
<<set _aroused_stacks to $this_room.aroused_stack + Math.trunc($this_room.cur_sex * $this_room.aroused_float)>>
<<AddStacks $raiders[_i] setup.aroused _aroused_stacks true>>
FIND AROUSED GAINED FOR REPORT
<<if $raiders[_i].status_names.includes("Aroused")>>
<<for _s = 0; _s < $raiders[_i].statuses.length; _s++>>
<<if $raiders[_i].statuses[_s].id === setup.aroused.id>>
<<set _aroused_gained to $raiders[_i].statuses[_s].gain>>
<<break>>
<</if>>
<</for>>
<</if>>
UPDATE RAIDER REPORT
<<if _text_triggers.status.aroused.includes($raiders[_i].index) && _text_triggers.status.wet.includes($raiders[_i].index)>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ damage, became Wet, and gained "+_aroused_gained+" Aroused.">>
<<elseif _text_triggers.status.aroused.includes($raiders[_i].index)>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ damage and gained "+_aroused_gained+" Aroused.">>
<<elseif _text_triggers.status.wet.includes($raiders[_i].index)>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ damage and became Wet.">>
<<else>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ damage.">>
<</if>>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<</for>>
<</if>>
<<else>>
* TRAP DID NOT TRIGGER *
<<for _i = 0; _i < $raiders.length; _i++>>
<<set _entry to "She did not trigger the trap.">>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<</for>>
<</if>>
* POST COMBAT EFFECTS *
<<for _r = 0; _r < $raiders.length; _r++>>
<<PostCombat $raiders[_r] $this_room>>
<</for>>
<<if _capOptions.length > 0>>
<<set _capIndex to _capOptions.random()>>
<</if>>
<<for _z = 0; _z < $raiders.length; _z++>>
<<if $raiders[_z].index === _capIndex>>
<<if $this_room.mode === "Overgrown">>
<<set $raiders[_z].cur_hp to 0>>
<<else>>
<<set $raiders[_z].cur_lust to $raiders[_z].max_lust>>
<</if>>
<<AddStatus $raiders[_z] setup.captured true>>
<</if>>
<</for>>
* RAIDER IMAGES *
SETUP PIC ARRAY
<<set _picArray to clone($this_room.raider_pics)>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<if _text_triggers.check.trapcheck_failed.includes($raiders[_i].index) || _text_triggers.check.trapcheck_crit_failed.includes($raiders[_i].index)>>
<<set $raiders[_i].pic to _picArray[$raiders[_i].body_type].pluck()>>
<<elseif _trap_bool === true && $this_room.mode === "Flooded">>
<<set $raiders[_i].pic to _picArray[$raiders[_i].body_type].pluck()>>
<</if>>
<</for>>
* END OF COMBAT REPORT *
<<PostCombatReport $raiders $this_room>>
* CLEAN UP *
<<CleanUp $raiders $this_room>>
*Display Info*
<<set _cardholderID to "cardholder-raid-"+$raiders.length+"raiders">>
<<set _cardinfoID to "cardinfo-raid-"+$raiders.length+"raiders">>
<<set _picboxID to "picbox-raid-"+$raiders.length+"raiders">>
<<set _textboxID to "textbox-raid-"+$raiders.length+"raiders">>
<<set _rText to ["She could only watch as her teammate was unable to break free. She decided to move on without her.", "Unable to help her teammate escape, she left without her.", "She wanted to go in to save her ally, but it was too dangerous. She was forced to leave without her."]>> Text for raiders not captured and moving on
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<<NextRoomButton>>\
</div>\
<div class="cardholder-raid-playerside">\
<div class="cardinfo-raid-trap">\
<div class="roomtitle-raid-player">\
Floor $cur_room_num
</div>\
<div class="picbox-raid-player">\
$this_room.pic
</div>\
<div class="namebox-raid-player">\
<strong>$this_room.name</strong>
---- $this_room.check_type: $this_room.cur_check ----
</div>\
<div class="textbox-raid-player">\
<ul>\
<<TrapRoomText $this_room>>
<<BlessingTriggerText $this_room>>
<<EffectEndingText $this_room>>
</ul>\
</div>\
</div>\
</div>\
<div class="cardholder-raid-raiderside">\
<<for _r = 0; _r < $raiders.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_textboxID">\
<ul>\
<<DancerDanceText $raiders[_r] $this_room>>
<<if _text_triggers.check.trapcheck_crit_passed.includes($raiders[_r].index) && _trap_bool === false>>\
<li><strong>Critical Success!</strong> She immediately noticed something suspicious about the ground and avoided stepping around that area.</li>\
<<elseif _text_triggers.check.trapcheck_passed.includes($raiders[_r].index) && _trap_bool === false>>\
<li>She moved carefully and did not step into the pit.</li>\
<<elseif _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)>>\
<li><strong>Critical Failure!</strong> She assumed nothing was on this floor and walked carefree into the pit.</li>\
<<elseif _text_triggers.check.trapcheck_failed.includes($raiders[_r].index)>>\
<li>She proceeded with caution, but still fell into the pit.</li>\
<<elseif _trap_bool === true && $this_room.mode === "Flooded">>\
<li>She fell into the pit after someone else took a wrong step, knocking down the floor beneath them.</li>\
<<elseif _trap_bool === true>>\
<li>She heard a loud scream and thud as her teammate fell into the pit.</li>\
<</if>>\
<<if _trap_bool === true>>\
<<if $this_room.mode === "Overgrown" && (_text_triggers.check.trapcheck_failed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index))>>\
<<set _vineDmg to $raiders[_r].dmg_taken - _overgrownFallDmg>>\
<li>She took @@.phy;_overgrownFallDmg Physical@@ damage from falling onto the plants and @@.phy;_vineDmg Physical@@ damage from the vines lashing out at her.</li>\
<<elseif $this_room.mode === "Infested" && (_text_triggers.check.trapcheck_failed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index))>>\
<li>She took @@.sex;$raiders[_r].sex_taken Sexual@@ damage from the tentacles fucking her.</li>\
<<RaiderFetishText $raiders[_r] $this_room>>
<<elseif $this_room.mode === "Flooded">>\
<li>She took @@.phy;$raiders[_r].dmg_taken@@ Physical damage from falling onto the cold and wet ground.</li>\
<</if>>\
<<if ($this_room.mode === "Overgrown" || $this_room.mode === "Infested") && (_text_triggers.check.trapcheck_failed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)) && !_text_triggers.status.captured.includes($raiders[_r].index)>>\
<li>She was able to escape the pit.</li>\
<<elseif $this_room.mode === "Flooded">>\
<li>She was able to escape the pit.</li>\
<</if>>\
<<PostCombatText $raiders[_r] $this_room>>
<</if>>\
<<if $this_room.mode != "Flooded" && !_text_triggers.check.trapcheck_failed.includes($raiders[_r].index) && !_text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)>>\
<<if _text_triggers.status.captured.length > 0 && _trap_bool === true>>\
<<set _text to _rText.random()>>\
<li>_text</li>\
<<elseif _trap_bool === true>>\
<li>She helped her teammate climb out of the pit.</li>\
<</if>>\
<</if>>\
</ul>\
</div>\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\<<silently>>\
* SETUP ROOM *
<<RoomSetup $raiders $this_room>>
<<TrapStats $this_room>>
<<set _summonBool to false>> set to true if has enough energy to summon
<<set _energyAmount to 0>> set to Energy Amount of Summoning Circle
<<set _energy_list to []>> amount of energy gained from each raider
<<set _spiritKink_list to []>> list of Raiders who gained a Kink from Spirit
<<set _failedSummon to false>> set to true if cannot summon demon
<<set _demonCapture to "">> set to index of Raider who was captured by demon
<<set _demonSummon to {
name: "Demon Lord",
capture_entry: "The Summoning Circle summoned a Demon Lord, who pulled her into the underworld as his new slave."
}>>
* SETUP RAIDER *
<<RaiderSetup $raiders>>
* PRE COMBAT EFFECTS *
<<PreCombat $raiders $this_room>>
* DANCER BUFF *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].class === "Dancer">>
<<DancerBuff $raiders[_i] $this_room>>
<</if>>
<</for>>
* FIND ENERGY AMOUNT *
<<if $this_room.effect_names.includes("Energy")>>
<<for _z = 0; _z < $this_room.effects.length; _z++>>
<<if $this_room.effects[_z].id === "Energy">>
<<set _energyAmount to clone($this_room.effects[_z].count)>> ENERGY: _energyAmount
<</if>>
<</for>>
<</if>>
* SPIRITS SUMMONED *
<<if $this_room.mode === "Summon Spirit" && _energyAmount >= $this_room.spirit_int>>
SUMMON SPIRITS
<<set _summonBool to true>>
SUBTRACT ENERGY
<<for _z = 0; _z < $this_room.effects.length; _z++>>
<<if $this_room.effects[_z].id === "Energy">>
<<set $this_room.effects[_z].count -= $this_room.spirit_int>>
<<set _energyAmount to clone($this_room.effects[_z].count)>>
<<set $this_room.effects[_z].name to "Energy x"+$this_room.effects[_z].count>>
<<set $this_room.effects[_z].tooltip to "The Summoning Circle has "+$this_room.effects[_z].count+" Energy stored. Energy is used to Summon Creatures based on its Mode.">>
ENERGY: _energyAmount
<<break>>
<</if>>
<</for>>
INFLICT STATUS AND KINK
<<for _r = 0; _r < $raiders.length; _r++>>
<<AddStatus $raiders[_r] setup.perverted true>>
<<set _options to clone($this_room.fetishes)>>
<<set _remove to _options.delete($raiders[_r].kinks)>>
<<if _options.length > 0>>
<<set _newKink to _options.random()>>
<<set _remove to $raiders[_r].fetishes.delete(_newKink)>>
<<set _remove2 to $raiders[_r].turnoffs.delete(_newKink)>>
<<set $raiders[_r].kinks.push(_newKink)>>
<<set _newInfo to {
index: $raiders[_r].index,
kink: _newKink
}>>
<<set _spiritKink_list.push(clone(_newInfo))>>
<</if>>
<<if _newKink && _text_triggers.status.perverted.includes($raiders[_r].index)>>
<<set _entry to "She became <<hovertip '<<- setup.perverted.tooltip>>'>>Perverted<</hovertip>> and gained the _newKink Fetish as a Kink after being possessed by a Spirit.">>
<<elseif _text_triggers.status.perverted.includes($raiders[_r].index)>>
<<set _entry to "She became <<hovertip '<<- setup.perverted.tooltip>>'>>Perverted<</hovertip>> after being possessed by a Spirit.">>
<<elseif _newKink>>
<<set _entry to "She gained the _newKink Fetish as a Kink after being possessed by a Spirit.">>
<<else>>
<<set _entry to "The Spirit had no effect on her.">>
<</if>>
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[_r].report.log.push(_lastLog)>>
<</for>>
<</if>>
* TRAPCHECKS FOR EACH RAIDER *
<<for _r = 0; _r < $raiders.length; _r++>>
<<set $this_room.total_attempts++>>
<<set $this_room.report.trap_attempts++>>
<<CalcTrapcheck $raiders[_r] $this_room.cur_check>>
<<SimTrapcheck $raiders[_r] _trapcheck>>
<<if _text_triggers.check.trapcheck_failed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)>>
<<set $this_room.total_triggers++>>
<<set $this_room.report.trap_successes++>>
<<if _text_triggers.check.trapcheck_failed.length + _text_triggers.check.trapcheck_crit_failed.length === 1>>
<<set _entry to "She stepped into the Summoning Circle, spawning Tentacles from it.">>
<<elseif _text_triggers.check.trapcheck_failed.length + _text_triggers.check.trapcheck_crit_failed.length > 1>>
<<set _entry to "She stepped into the Summoning Circle, spawning even more Tentacles.">>
<</if>>
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[_r].report.log.push(_lastLog)>>
<</if>>
<</for>>
* SUMMONING CIRCLE ATTACK *
<<if _text_triggers.check.trapcheck_failed.length + _text_triggers.check.trapcheck_crit_failed.length > 0>>
TENTACLES
<<set _atk to Math.trunc($this_room.cur_atk * $this_room.atk_float)>>
<<set _sex to Math.trunc($this_room.cur_atk * $this_room.sex_float)>>
<<set _dmgMod to 1 + ($this_room.dmg_mod * (_text_triggers.check.trapcheck_failed.length + _text_triggers.check.trapcheck_crit_failed.length - 1))>>
<<for _r = 0; _r < $raiders.length; _r++>>
<<set $raiders[_r].attacked to true>>
<<NormalAttack $raiders[_r] $this_room _atk _dmgMod>>
<<SexualAttack $raiders[_r] $this_room _sex _dmgMod>>
UPDATE RAIDER REPORT
<<set _entry to "She took @@.phy;"+$raiders[_r].dmg_taken+"@@ and @@.sex;"+$raiders[_r].sex_taken+"@@ damage from the Tentacles.">>
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[_r].report.log.push(_lastLog)>>
<</for>>
<</if>>
* POST COMBAT *
<<for _r = 0; _r < $raiders.length; _r++>>
<<PostCombat $raiders[_r] $this_room>>
<</for>>
* GAIN ENERGY *
<<set _energyGained to 0>>
<<for _r = 0; _r < $raiders.length; _r++>>
<<if $raiders[_r].status_names.includes("Captured")>>
<<set _energyGained += $this_room.energy_int * $this_room.energy_mod>>
<<elseif $raiders[_r].attacked === true>>
<<set _energyGained += $this_room.energy_int>>
<</if>>
<</for>>
<<if !$this_room.effect_names.includes("Energy")>>
ENERGY
<<set _newBuff to clone(setup.trap_effect)>>
<<set _newBuff.name to "Energy">>
<<set _newBuff.id to "Energy">>
<<set _newBuff.effect_type to ["Trap"]>>
<<set _newBuff.duration to "raid">>
<<set _newBuff.count to 0>>
<<set _newBuff.icon to setup.effect_icons.trap>>
<<set $this_room.effects.push(_newBuff)>>
<<set $this_room.effect_names.push(_newBuff.id)>>
<</if>>
<<for _z = 0; _z < $this_room.effects.length; _z++>>
<<if $this_room.effects[_z].id === "Energy">>
<<set $this_room.effects[_z].count += _energyGained>>
<<set _energyAmount to clone($this_room.effects[_z].count)>>
<<set $this_room.effects[_z].name to "Energy x"+$this_room.effects[_z].count>>
<<set $this_room.effects[_z].tooltip to "The Summoning Circle has "+$this_room.effects[_z].count+" Energy stored. Energy is used to Summon Creatures based on its Mode.">>
ENERGY: _energyAmount
<<break>>
<</if>>
<</for>>
* SUMMON CHECK *
<<if $this_room.mode === "Summon Demon" && _energyAmount >= $this_room.demon_int>>
SUMMON DEMON
<<set _capOptions to []>>
<<for _r = 0; _r < $raiders.length; _r++>>
<<if !$raiders[_r].status_names.includes("Captured")>>
<<set _capOptions.push($raiders[_r].index)>>
<</if>>
<</for>>
<<if _capOptions.length > 0>>
<<set _summonBool to true>>
SUBTRACT ENERGY
<<for _z = 0; _z < $this_room.effects.length; _z++>>
<<if $this_room.effects[_z].id === "Energy">>
<<set $this_room.effects[_z].count -= $this_room.demon_int>>
<<set _energyAmount to clone($this_room.effects[_z].count)>>
<<set $this_room.effects[_z].name to "Energy x"+$this_room.effects[_z].count>>
<<set $this_room.effects[_z].tooltip to "The Summoning Circle has "+$this_room.effects[_z].count+" Energy stored. Energy is used to Summon Creatures based on its Mode.">>
ENERGY: _energyAmount
<<break>>
<</if>>
<</for>>
<<set _capIndex to _capOptions.random()>>
<<for _r = 0; _r < $raiders.length; _r++>>
<<if $raiders[_r].index === _capIndex>>
<<AddStatus $raiders[_r] setup.captured true>>
<<set _demonCapture to _capIndex>>
ROOM CAPTURE STATS
<<set $this_room.total_captures++>>
<<set $this_room.report.captures++>>
UPDATE RAIDER LOG
<<set _entry to clone(_demonSummon.capture_entry)>>
<<set _lastLog to $raiders[_r].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_r].report.log.push(clone(_lastLog))>>
<<break>>
<</if>>
<</for>>
<<else>>
<<set _failedSummon to true>>
<</if>>
<<elseif $this_room.mode === "Summon Portal" && _energyAmount >= $this_room.portal_int>>
SUMMON PORTAL
<<set _summonBool to true>>
<<set _portal_bool to true>>
<<set $imp_atk to Math.trunc($this_room.cur_atk * $this_room.portal_atk)>>
<<set $imp_sex to Math.trunc($this_room.cur_atk * $this_room.portal_sex)>>
SUBTRACT ENERGY
<<for _z = 0; _z < $this_room.effects.length; _z++>>
<<if $this_room.effects[_z].id === "Energy">>
<<set $this_room.effects[_z].count -= $this_room.portal_int>>
<<set _energyAmount to clone($this_room.effects[_z].count)>>
<<set $this_room.effects[_z].name to "Energy x"+$this_room.effects[_z].count>>
<<set $this_room.effects[_z].tooltip to "The Summoning Circle has "+$this_room.effects[_z].count+" Energy stored. Energy is used to Summon Creatures based on its Mode.">>
ENERGY: _energyAmount
<<break>>
<</if>>
<</for>>
<</if>>
* RAIDER IMAGES *
<<set _picArray to clone($this_room.raider_pics)>>
<<for _i = 0; _i < $raiders.length; _i++>>
<<if _summonBool && $this_room.mode === "Summon Demon" && _demonCapture === $raiders[_i].index>>
DEMON PIC
<<set $raiders[_i].pic to _picArray.demon[$raiders[_i].body_type].pluck()>>
<<elseif $raiders[_i].attacked === true>>
TENT PIC
<<set $raiders[_i].pic to _picArray[$raiders[_i].body_type].pluck()>>
<</if>>
<</for>>
* END OF COMBAT REPORT *
<<PostCombatReport $raiders $this_room>>
* CLEAN UP *
<<CleanUp $raiders $this_room>>
*Display Info*
<<set _cardholderID to "cardholder-raid-"+$raiders.length+"raiders">>
<<set _cardinfoID to "cardinfo-raid-"+$raiders.length+"raiders">>
<<set _picboxID to "picbox-raid-"+$raiders.length+"raiders">>
<<set _textboxID to "textbox-raid-"+$raiders.length+"raiders">>
<</silently>>\
<div class="section">\
<div class="exit-link-right">\
<<NextRoomButton>>\
</div>\
<div class="cardholder-raid-playerside">\
<div class="cardinfo-raid-trap">\
<div class="roomtitle-raid-player">\
Floor $cur_room_num
</div>\
<div class="picbox-raid-player">\
$this_room.pic
</div>\
<div class="namebox-raid-player">\
<strong>$this_room.name</strong>
---- $this_room.check_type: $this_room.cur_check ----
</div>\
<div class="textbox-raid-player">\
<ul>\
<<if _energyGained > 0>>\
<li>The Summoning Circle harvested _energyGained Energy.</li>\
<</if>>\
<<if _summonBool && $this_room.mode === "Summon Spirit">>\
<li>The Summoning Circle used $this_room.spirit_int Energy to summon Spirits.</li>\
<<elseif _summonBool && $this_room.mode === "Summon Demon">>\
<li>The Summoning Circle used $this_room.demon_int Energy to summon a Demon Lord.</li>\
<<elseif _summonBool && $this_room.mode === "Summon Portal">>\
<li>The Summoning Circle used $this_room.portal_int Energy to summon a portal to hell, unleshing an army of Imps outside the Dungeon.</li>\
<</if>>
<<TrapRoomText $this_room>>
<<BlessingTriggerText $this_room>>
<<EffectEndingText $this_room>>
</ul>\
</div>\
</div>\
</div>\
<div class="cardholder-raid-raiderside">\
<<for _r = 0; _r < $raiders.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_textboxID">\
<ul>\
<<DancerDanceText $raiders[_r] $this_room>>
<<if _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_failed.includes($raiders[_r].index)>>\
<li><<if _text_triggers.check.trapcheck_crit_failed.includes($raiders[_r].index)>><strong> Critical Failure!</strong> <</if>>She walked into the Summoning Circle, triggering it and summoning Tentacles from the ground around the circle.</li>\
<<elseif (_text_triggers.check.trapcheck_crit_passed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_passed.includes($raiders[_r].index)) && _text_triggers.check.trapcheck_crit_failed.length + _text_triggers.check.trapcheck_failed.length === 0 && _summonBool === false>>\
<li><<if _text_triggers.check.trapcheck_crit_passed.includes($raiders[_r].index)>><strong>Critical Success!</strong> <</if>>She carefully walked around the Summoning Circle and left the room.</li>\
<<elseif (_text_triggers.check.trapcheck_crit_passed.includes($raiders[_r].index) || _text_triggers.check.trapcheck_passed.includes($raiders[_r].index)) && _text_triggers.check.trapcheck_crit_failed.length + _text_triggers.check.trapcheck_failed.length === 0 && _summonBool === true>>\
<li><<if _text_triggers.check.trapcheck_crit_passed.includes($raiders[_r].index)>><strong>Critical Success!</strong> <</if>>She carefully walked around the Summoning Circle, but it still had enough Energy to summon something.</li>\
<<else>>
<li>She was forced into the Summoning Circle by the Tentacles summoned by another Raider.</li>\
<</if>>\
<<if _summonBool && $this_room.mode === "Summon Spirit">>\
<<for _z = 0; _z < _spiritKink_list.length; _z++>>\
<<if _spiritKink_list[_z].index === $raiders[_r].index>>\
<li>She was possessed by a Spirit that was summoned from the circle, making her naughty and gaining the _spiritKink_list[_z].kink Fetish as a new Kink.</li>\
<<break>>\
<</if>>
<</for>>\
<</if>>\
<<if $raiders[_r].attacked === true>>\
<li>She was pleasured by the Tentacles summoned to harvest her Energy, taking @@.phy;$raiders[_r].dmg_taken Physical@@ damage and @@.sex;$raiders[_r].sex_taken Sexual@@ damage.</li>\
<<RaiderFetishText $raiders[_r] $this_room>>
<</if>>\
<<if $this_room.mode === "Summon Demon" && _demonCapture === $raiders[_r].index>>\
<<PostCombatText $raiders[_r] _demonSummon>>
<<elseif $this_room.mode === "Summon Demon" && _demonCapture !== "">>\
<li>She could only watch her ally get pulled into the underworld by a Demon Lord.</li>\
<<PostCombatText $raiders[_r] $this_room>>
<<else>>\
<<PostCombatText $raiders[_r] $this_room>>
<</if>>\
</ul>\
</div>\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\<<silently>>\
* Variables *
<<set _this_room to $dungeon_floor_list[$prev_room_num]>>
<<set $cur_room_num-->> do not move forward in dungeon yet
<<set _townBool to false>> set to true if captured raiders in town
<<set _isOutside to true>>
* Set Imp Stats *
<<set _imps to {
name: "Summoning Circle",
room_type: _this_room.room_type,
attack_type: "Physical",
atk: clone($imp_atk),
sex: clone($imp_sex),
creature_types: _this_room.portal_type,
trap_types: [],
fetishes: _this_room.imp_fetishes,
effects: _this_room.effects,
effect_names: _this_room.effect_names,
capture_entry: "She was surrounded and fucked by an endless amount of Imps.",
defeat_entry: "The sheer number of Imps were far too great to manage and she was Captured.",
}>>
<<unset $imp_atk, $imp_sex>>
* Update Room Capture and Defeat Entries *
<<set _capHolder to clone(_this_room.capture_entry)>>
<<set _defHolder to clone(_this_room.defeat_entry)>>
<<set _this_room.capture_entry to _imps.capture_entry>>
<<set _this_room.defeat_entry to _imps.defeat_entry>>
<<if $raiding_girls_list.length > 0>>
* Setup Raiders *
<<RaiderSetup $raiding_girls_list>>
* Create Report *
* INTIAL ENTRY FOR REPORT *
<<for _z = 0; _z < $raiding_girls_list.length; _z++>>
<<set _log to $raiding_girls_list[_z].name + " was attacked by Imps before entering the Dungeon.">>
<<set _newTitle to clone(_log)>>
<<set _newLog to {
type: "Entrance",
title: _newTitle,
entry: []
}>>
<<set $raiding_girls_list[_z].report.log.push(clone(_newLog))>>
<</for>>
* Imps attack each raider *
<<for _i = 0; _i < $raiding_girls_list.length; _i++>>
RANDOM IMP FETISHES
<<set _rfetishes to _this_room.imp_list.randomMany(_this_room.fetish_int)>>
ADD NEW FETISHES
<<set _imps.fetishes to _imps.fetishes.concat(_rfetishes)>>
NORM DMG
<<NormalAttack $raiding_girls_list[_i] _imps _imps.atk>>
SEX DMG
<<SexualAttack $raiding_girls_list[_i] _imps _imps.sex>>
REMOVE RANDOM FETISHES
<<set _imps.fetishes.delete(_rfetishes)>>
UPDATE REPORT
<<set _entry to "She took @@.phy;"+$raiding_girls_list[_i].dmg_taken+"@@ and @@.sex;"+$raiding_girls_list[_i].sex_taken+"@@ damage.">>
<<set _lastLog to $raiding_girls_list[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiding_girls_list[_i].report.log.push(_lastLog)>>
<</for>>
* ADD DMG & SEX *
<<for _r = 0; _r < $raiding_girls_list.length; _r++>>
<<PostCombat $raiding_girls_list[_r] _this_room>>
<</for>>
* UPDATE PIC *
<<set _picArray to clone(setup.imp.raider_pics)>>
<<for _r = 0; _r < $raiding_girls_list.length; _r++>>
<<if $raiding_girls_list[_r].status_names.includes("Captured")>>
<<set $raiding_girls_list[_r].pic to _picArray[$raiding_girls_list[_r].body_type].random()>>
<</if>>
<</for>>
* END OF COMBAT REPORT *
<<PostCombatReport $raiding_girls_list _this_room>>
* CLEAN UP *
<<CleanUp $raiding_girls_list _this_room>>
* CALC DAMAGES AND CAPTURE COUNT *
<<set _tdmg to 0>> total damage dealt
<<set _tsex to 0>> total sex dealt
<<set _tcap to 0>> total captured
<<for _r = 0; _r < $raiding_girls_list.length; _r++>>
<<set _tdmg += $raiding_girls_list[_r].dmg_taken>>
<<set _tsex += $raiding_girls_list[_r].sex_taken>>
<<if $raiding_girls_list[_r].status_names.includes("Captured")>>
<<set _tcap++>>
<</if>>
<</for>>
<<else>>
<<set _townBool to true>>
GENERATE RANDOM RAIDERS TO CAPTURE
SLAVE PACK LIST
<<set _available_class_list to ["Hunter","Sorcerer","Knight","Warrior","Priestess","Thief","Alchemist","Witch","Dancer","Brawler"]>>
<<set _class_list to []>>
<<for _i = 0; _i < _available_class_list.length; _i++>>
<<set _class_list[_available_class_list[_i]] to []>>
<</for>>
<<for _i = 0; _i < $slave_pack_array.length; _i++>>
<<for _c = 0; _c < $slave_pack_array[_i].classes.length; _c++>>
<<set _class_name to $slave_pack_array[_i].classes[_c]>>
<<if $slave_pack_array[_i][_class_name.toLowerCase()] == true>>
<<set _class_list[_class_name].push(clone($slave_pack_array[_i]))>>
<</if>>
<</for>>
<</for>>
<<for _i = 0; _i < _available_class_list.length; _i++>>
<<set _class_list[_available_class_list[_i]].shuffle()>>
<</for>>
SPECIAL TRAITS
<<switch $dungeon_rank>>
<<case 1>>
<<set _special_trait_rng to 25>>
<<set _special_traits to [setup.virgin, setup.wealthy, setup.famous]>>
<<case 2>>
<<set _special_trait_rng to 20>>
<<set _special_traits to [setup.virgin, setup.slut, setup.wealthy, setup.famous]>>
<<case 3>>
<<set _special_trait_rng to 15>>
<<set _special_traits to [setup.virgin, setup.slut, setup.slut, setup.wealthy, setup.famous]>>
<<case 4>>
<<set _special_trait_rng to 10>>
<<set _special_traits to [setup.virgin, setup.slut, setup.slut, setup.wealthy, setup.famous]>>
<<default>>
<<set _special_trait_rng to 5>>
<<set _special_traits to [setup.virgin, setup.slut, setup.slut, setup.wealthy, setup.famous]>>
<</switch>>
SPECIALIST GROUP EVENT
<<if $current_event.event === true && $current_event.name === setup.specialist_group.name>>
<<set _special_trait_rng to Math.trunc(_special_trait_rng * setup.specialist_group.float)>>
<</if>>
SET CLASS
<<for _i = 0; _i < _this_room.capture_int; _i++>>
<<set _newCapture to setup.class_list.random()>>
<<set $raiding_girls_list.push(clone(_newCapture))>>
<<set $impInvasionCount++>>
<</for>>
GRIND RAIDER
<<for _i = 0; _i < $raiding_girls_list.length; _i++>>
<<RaiderGrinder $raiding_girls_list[_i]>>
<</for>>
SETUP RAIDERS
<<RaiderSetup $raiding_girls_list>>
ADD REPORT AND MAX LUST
<<for _i = 0; _i < $raiding_girls_list.length; _i++>>
<<set _log to $raiding_girls_list[_i].name + " was walking through Town when she was attacked by Imps.">>
<<set _newTitle to clone(_log)>>
<<set _newLog to {
type: "Entrance",
title: _newTitle,
entry: []
}>>
<<set $raiding_girls_list[_i].report.log.push(clone(_newLog))>>
<</for>>
CAPTURE RAIDERS
<<for _i = 0; _i < $raiding_girls_list.length; _i++>>
<<AddStatus $raiding_girls_list[_i] setup.captured true>>
<<PostCombat $raiding_girls_list[_i] _this_room>>
<</for>>
* UPDATE PIC *
<<set _picArray to clone(setup.imp.raider_pics)>>
<<for _r = 0; _r < $raiding_girls_list.length; _r++>>
<<if $raiding_girls_list[_r].status_names.includes("Captured")>>
<<set $raiding_girls_list[_r].pic to _picArray[$raiding_girls_list[_r].body_type].random()>>
<</if>>
<</for>>
* END OF COMBAT REPORT *
<<PostCombatReport $raiding_girls_list _this_room>>
<<CleanUp $raiding_girls_list _this_room>>
<</if>>
* Update Room Capture and Defeat Entries *
<<set _this_room.capture_entry to _capHolder>>
<<set _this_room.defeat_entry to _defHolder>>
* Display *
<<set _gif0 to "[img[images/traps/summoning_circle/portal/0.gif]]">>
<<set _gif1 to "[img[images/traps/summoning_circle/portal/1.gif]]">>
<<set _gif2 to "[img[images/traps/summoning_circle/portal/2.gif]]">>
<<set _gifList to [_gif0, _gif1, _gif2]>>
<<set _gif to _gifList.random()>>
<</silently>>\
<div class="section">\
<div class="titlebox">\
Opened Portal
</div>\
<div class="imagebox">\
_gif
</div>\
<div class="textbox">\
<<if _townBool === false>>\
A swarm of Imps decended from the portal and attacked all the Raiders outside your Dungeon.
<li>They dealt a total of @@.phy;_tdmg Physical@@ and @@.sex;_tsex Sexual@@ damage.</li>\
<<if _tcap > 0>>\
<li>They Captured _tcap <<if _tcap === 1>>Raider<<else>>Raiders<</if>>.</li>\
<</if>>\
<<if _text_triggers.status.abandoned.length > 0 && _text_triggers.status.abandoned.length === 1>>\
<li>1 Raider decided to Abandon her Raid before it ever began.</li>\
<<elseif _text_triggers.status.abandoned.length > 1>>\
<li>_text_triggers.status.abandoned.length Raiders decided to Abandon their Raid before it ever began.</li>\
<</if>>\
<<else>>\
A swarm of Imps invaded the nearby Town, capturing $raiding_girls_list.length Raiders.
<</if>>\
</div>\
<div class="exit-link-right">\
<<PortalButton>>\
</div>\
</div>\<<widget "CreatureDescription">>
_args[0].base_name is the creature type
_args[0].name is the creature name
<<switch _args[0].base_name>>
<<case "Giant Octopus">>
GIANT OCTOPUS SUMMON
<<set _patk to Math.trunc(_args[0].atk * _args[0].tentacle_float)>>
<<set _satk to Math.trunc(_args[0].sex * _args[0].tentacle_float)>>
<<set _percent to _args[0].tentacle_float * 100>>
<<set _args[0].description to "It attacks the Targeted Raider, dealing @@.phy;<<hovertip '@@.phy;100% Physical Attack@@'>>"+_args[0].atk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].sex+"<</hovertip>> Sexual@@ damage to her. Each other Raider in the party is attacked by one of it's tentacles, applying the Breasts Fetish and dealing @@.phy;<<hovertip '@@.phy;_percent% Physical Attack@@'>>"+_patk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;_percent% Sexual Attack@@'>>"+_satk+"<</hovertip>> Sexual@@ damage to them.">>
<<case "Honey Bee">>
HONEY BEE SUMMON
<<set _args[0].description to "She attacks the Targeted Raider, dealing @@.phy;<<hovertip '@@.phy;100% Physical Attack@@'>>"+_args[0].atk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].sex+"<</hovertip>> Sexual@@ damage to her and inflicting "+_args[0].sticky_stacks+" <<hovertip '<<print setup.sticky.tooltip>>'>>Sticky<</hovertip>>. Then, if the Raider's @@.lust;Lust@@ is greater than or equal to @@.lust;50%@@ filled, she is inflicted with an addition "+_args[0].sticky_stacks+" <<hovertip '<<print setup.sticky.tooltip>>'>>Sticky<</hovertip>> and becomes <<hovertip '<<print setup.horny.tooltip>>'>>Horny<</hovertip>>.">>
<<case "Imps">>
IMP SUMMON
<<set _args[0].description to "At the start of combat, they gain "+_args[0].int+" random Fetishes. Then, they attack the Targeted Raider, dealing @@.phy;<<hovertip '@@.phy;100% Physical Attack@@'>>"+_args[0].atk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].sex+"<</hovertip>> Sexual@@ damage to her.">>
<<case "Mimic Chest">>
MIMIC CHEST ROOM
<<switch _args[0].name>>
<<case "Greater Mimic Chest">>
<<set _trap_base to clone(_args[0].rate)>>
<<set _tcheck to _args[0].rate + Math.trunc(_args[0].cur_max_hp * _args[0].hp_float)>>
<<set _tpercent to _args[0].hp_float * 100>>
<<set _patk to Math.trunc(_args[0].cur_atk * _args[0].greater_float)>>
<<set _satk to Math.trunc(_args[0].cur_sex * _args[0].greater_float)>>
<<set _percent to _args[0].greater_float * 100>>
<<set _args[0].description to "At the start of combat, all Raiders in the party face a @@.trap;<<hovertip '_trap_base + @@.health;_tpercent% Maximum Health@@'>>"+_tcheck+"<</hovertip>> Captive Trapcheck@@. Each Raider who fails her @@.trap;Trapcheck@@ is caught and cannot attack. It attacks any Raiders caught, dealing @@.phy;<<hovertip '@@.phy;100% Physical Attack@@'>>"+_args[0].cur_atk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].cur_sex+"<</hovertip>> Sexual@@ damage to them. If no Raiders were caught, it attacks the first Raider in the party instead, dealing @@.phy;<<hovertip '@@.phy;_percent% Physical Attack@@'>>"+_patk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;_percent% Sexual Attack@@'>>"+_satk+"<</hovertip>> Sexual@@ damage to her.">>
<<case "Crested Mimic Chest">>
<<set _trap_base to clone(_args[0].rate)>>
<<set _tcheck to _args[0].rate + Math.trunc(_args[0].cur_max_hp * _args[0].hp_float)>>
<<set _tpercent to _args[0].hp_float * 100>>
<<set _percent to _args[0].crested_float * 100>>
<<set _args[0].description to "At the start of combat, the Raider with the lowest @@.aware;Awareness@@ faces a @@.trap;<<hovertip '_trap_base + @@.health;_tpercent% Max Health@@'>>"+_tcheck+"<</hovertip>> Captive Trapcheck@@, increased by @@.trap;"+_args[0].crested_int+"@@ for each Floor before this one. If she fails the @@.trap;Trapcheck@@, she is caught, increasing her damage taken by "+_percent+"%, and cannot attack. It attacks the same Raider, dealing @@.phy;<<hovertip '@@.phy;100% Physical Attack@@'>>"+_args[0].cur_atk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].cur_sex+"<</hovertip>> Sexual@@ damage to her, even if she passes her @@.trap;Trapcheck@@.">>
<<case "Captor Mimic Chest">>
<<set _trap_base to clone(_args[0].rate)>>
<<set _tcheck to _args[0].rate + Math.trunc(_args[0].cur_max_hp * _args[0].hp_float)>>
<<set _rcheck to Math.trunc(_tcheck * _args[0].captor_float)>>
<<set _newCheck to _tcheck - _rcheck>>
<<set _captorFloat to _args[0].captor_float * 100>>
<<set _tpercent to _args[0].hp_float * 100>>
<<set _args[0].description to "At the start of combat, the first Raider in the party faces a @@.trap;<<hovertip '_trap_base + @@.health;_tpercent% Max Health@@ - _captorFloat% of @@.trap;Trapcheck@@'>>"+_newCheck+"<</hovertip>> Captive Trapcheck@@. If she fails her @@.trap;Trapcheck@@, she is immediately Captured and combat ends. Otherwise, it attacks her, dealing @@.phy;<<hovertip '@@.phy;100% Physical Attack@@'>>"+_args[0].cur_atk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].cur_sex+"<</hovertip>> Sexual@@ damage to her.">>
<<default>>
<<set _trap_base to clone(_args[0].rate)>>
<<set _tcheck to _args[0].rate + Math.trunc(_args[0].cur_max_hp * _args[0].hp_float)>>
<<set _tpercent to _args[0].hp_float * 100>>
<<set _args[0].description to "At the start of combat, the Raider with the lowest @@.aware;Awareness@@ faces a @@.trap;<<hovertip '_trap_base + @@.health;_tpercent% Max Health@@'>>"+_tcheck+"<</hovertip>> Captive Trapcheck@@. If she fails her @@.trap;Trapcheck@@, she is caught and cannot attack. It attacks the same Raider, dealing @@.phy;<<hovertip '@@.phy;100% Physical Attack@@'>>"+_args[0].cur_atk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].cur_sex+"<</hovertip>> Sexual@@ damage to her, even if she passes her @@.trap;Trapcheck@@.">>
<</switch>>
<<case "Minotaur">>
MINOTAUR ROOM
<<switch _args[0].name>>
<<case "Charging Minotaur">>
<<set _atk to Math.trunc(_args[0].charging_float * _args[0].cur_atk)>>
<<set _apercent to _args[0].charging_float * 100>>
<<set _rpercent to _args[0].rage_atk * 100>>
<<set _mpercent to _args[0].rage_mod * 100>>
<<set _args[0].description to "He attacks the first Raider in the party, dealing @@.phy;<<hovertip '@@.phy;100% Physical Attack@@'>>"+_args[0].cur_atk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].cur_sex+"<</hovertip>> Sexual@@ damage to her. If he has "+_args[0].charging_int+" or more Rage, he attacks the last Raider in the party instead, dealing @@.phy;<<hovertip '@@.phy;100% Physical Attack@@'>>"+_args[0].cur_atk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].cur_sex+"<</hovertip>> Sexual@@ damage to her and @@.phy;<<hovertip '@@.phy;_apercent% Physical Attack@@'>>"+_atk+"<</hovertip>> Physical@@ damage to all other Raiders. He gains 1 Rage stack after he takes damage, up to "+_args[0].rage_max+" max. Rage increases his @@.phy;Physical Attack@@ by @@.phy;"+_rpercent+"%@@ per stack, reduces all damage taken by "+_mpercent+"% per stack, and lasts until the end of the night.">>
<<case "Undying Minotaur">>
<<set _heal to Math.trunc(_args[0].cur_max_hp * _args[0].undying_float)>>
<<set _rpercent to _args[0].rage_atk * 100>>
<<set _mpercent to _args[0].rage_mod * 100>>
<<set _args[0].description to "He attacks the first Raider in the party, dealing @@.phy;<<hovertip '@@.phy;100% Physical Attack@@'>>"+_args[0].cur_atk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].cur_sex+"<</hovertip>> Sexual@@ damage to her. He gains 1 Rage stack, "+_args[0].undying_int+" if he is at or below @@.health;"+_args[0].undying_percent+"% Health@@, after he takes damage, up to "+_args[0].undying_max+" max. Rage increases his @@.phy;Physical Attack@@ by @@.phy;"+_rpercent+"%@@ per stack, reduces all damage taken by "+_mpercent+"% per stack, and lasts until the end of the night.">>
<<case "Insatiable Minotaur">>
<<set _spercent to _args[0].insatiable_float * 100>>
<<set _mpercent to _args[0].rage_mod * 100>>
<<set _args[0].description to "At the start of combat, if he has "+_args[0].insatiable_int+" or more Rage, his pheromones cause all Raiders in the party to become <<hovertip '<<print setup.horny.tooltip>>'>>Horny<</hovertip>>. Then, he attacks the first Raider in the party, dealing @@.phy;<<hovertip '@@.phy;100% Physical Attack@@'>>"+_args[0].cur_atk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].cur_sex+"<</hovertip>> Sexual@@ damage to her. He gains 1 Rage stack after he takes damage, up to "+_args[0].rage_max+" max. Rage increases his @@.sex;Sexual Attack@@ by @@.sex;"+_spercent+"%@@ per stack and reduces all damage taken by "+_mpercent+"% per stack and lasts until the end of the night.">>
<<default>>
<<set _rpercent to _args[0].rage_atk * 100>>
<<set _mpercent to _args[0].rage_mod * 100>>
<<set _args[0].description to "He attacks the first Raider in the party, dealing @@.phy;<<hovertip '@@.phy;100% Physical Attack@@'>>"+_args[0].cur_atk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].cur_sex+"<</hovertip>> Sexual@@ damage to her. He gains 1 Rage stack after he takes damage, up to "+_args[0].rage_max+" max. Rage increases his @@.phy;Physical Attack@@ by @@.phy;"+_rpercent+"%@@ per stack, reduces all damage taken by "+_mpercent+"% per stack, and lasts until the end of the night.">>
<</switch>>
<<case "Slime">>
SLIME ROOM
<<switch _args[0].name>>
<<case "Giant Slime">>
<<set _patk to Math.trunc(_args[0].cur_atk * _args[0].big_float)>>
<<set _satk to Math.trunc(_args[0].cur_sex * _args[0].big_float)>>
<<set _percent to 100 * _args[0].big_float>>
<<set _args[0].description to "It attacks the all Raiders in the party, dealing @@.physical;<<hovertip '@@.phy;_percent% Physical Attack@@'>>"+_patk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;_percent% Sexual Attack@@'>>"+_satk+"<</hovertip>> Sexual@@ damage to them and inflicting them with "+_args[0].big_min_stacks+"-"+_args[0].big_max_stacks+" <<hovertip '<<print setup.sticky.tooltip>>'>>Sticky<</hovertip>>.">>
<<case "Toxic Slime">>
<<set _poisoned to _args[0].toxic_poisoned + Math.trunc(_args[0].cur_atk * _args[0].toxic_float)>>
<<set _basePoison to clone(_args[0].toxic_poisoned)>>
<<set _percent to 100 * _args[0].toxic_float>>
<<set _args[0].description to "It attacks the first Raider in the party, dealing @@.physical;<<hovertip '@@.phy;100% Physical Attack@@'>>"+_args[0].cur_atk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].cur_sex+"<</hovertip>> Sexual@@ damage to her, inflicting her with "+_args[0].min_sticky_stacks+"-"+_args[0].max_sticky_stacks+" <<hovertip '<<print setup.sticky.tooltip>>'>>Sticky<</hovertip>> and <<hovertip '_basePoison + @@.phy;_percent% Physical Attack@@'>>_poisoned<</hovertip>> <<hovertip '<<print setup.poisoned.tooltip>>'>>Poison<</hovertip>>, and she becomes <<hovertip '<<print setup.stripped.tooltip>>'>>Stripped<</hovertip>>.">>
<<case "Horny Slime">>
<<set _patk to Math.trunc(_args[0].cur_atk * _args[0].horny_float)>>
<<set _satk to Math.trunc(_args[0].cur_sex * _args[0].horny_float)>>
<<set _percent to 100 * _args[0].horny_float>>
<<set _args[0].description to "It attacks the first Raider in the party twice, dealing @@.physical;<<hovertip '@@.phy;_percent% Physical Attack@@'>>"+_patk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;_percent% Sexual Attack@@'>>"+_satk+"<</hovertip>> Sexual@@ damage to her and inflicting "+_args[0].min_sticky_stacks+"-"+_args[0].max_sticky_stacks+" <<hovertip '<<print setup.sticky.tooltip>>'>>Sticky<</hovertip>> each attack.">>
<<default>>
<<set _args[0].description to "It attacks the first Raider in the party, dealing @@.physical;<<hovertip '@@.phy;100% Physical Attack@@'>>"+_args[0].cur_atk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].cur_sex+"<</hovertip>> Sexual@@ damage to her and inflicting her with "+_args[0].min_sticky_stacks+"-"+_args[0].max_sticky_stacks+" <<hovertip '<<print setup.sticky.tooltip>>'>>Sticky<</hovertip>>.">>
<</switch>>
<<case "Slugs">>
SLUGS ROOM
<<switch _args[0].name>>
<<case "Giant Slug">>
<<set _gatk to Math.trunc(_args[0].cur_atk * _args[0].giant_float)>>
<<set _gsex to Math.trunc(_args[0].cur_sex * _args[0].giant_float)>>
<<set _gpercent to 100 * _args[0].giant_float>>
<<set _patk to Math.trunc(_args[0].cur_atk * _args[0].dmg_float)>>
<<set _satk to Math.trunc(_args[0].cur_sex * _args[0].dmg_float)>>
<<set _percent to 100 * _args[0].dmg_float>>
<<set _preg to 100 * _args[0].rate>>
<<set _args[0].description to "They attack the first Raider in the party three times. The "+_args[0].name+" attacks first, dealing @@.physical;<<hovertip '@@.phy;_gpercent% Physical Attack@@'>>"+_gatk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;_gpercent% Sexual Attack@@'>>"+_gsex+"<</hovertip>> Sexual@@ damage to her, inflicting her with "+_args[0].giant_min+"-"+_args[0].giant_max+" <<hovertip '<<print setup.sticky.tooltip>>'>>Sticky<</hovertip>>, and she becomes <<hovertip '<<print setup.stripped.tooltip>>'>>Stripped<</hovertip>>. Then, their brood attacks twice, dealing @@.physical;<<hovertip '@@.phy;_percent% Physical Attack@@'>>"+_patk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;_percent% Sexual Attack@@'>>"+_satk+"<</hovertip>> Sexual@@ damage to her and have a "+_args[0].rate+"% chance to <<hovertip '<<print setup.pregnant.tooltip>>'>>Impregnate<</hovertip>> her breasts for "+_args[0].min_pregnant+"-"+_args[0].max_pregnant+" Floors.">>
<<case "Leeching Slugs">>
<<set _patk to Math.trunc(_args[0].cur_atk * _args[0].dmg_float)>>
<<set _satk to Math.trunc(_args[0].cur_sex * _args[0].dmg_float)>>
<<set _percent to 100 * _args[0].dmg_float>>
<<set _preg to 100 * _args[0].rate>>
<<set _heal to Math.trunc(_args[0].cur_max_hp * _args[0].leeching_float)>>
<<set _hpercent to _args[0].leeching_float * 100>>
<<set _args[0].description to "They attack the first Raider in the party twice, dealing @@.physical;<<hovertip '@@.phy;_percent% Physical Attack@@'>>"+_patk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;_percent% Sexual Attack@@'>>"+_satk+"<</hovertip>> Sexual@@ damage to her, inflicting her with "+_args[0].lactation_stacks+" <<hovertip '<<print setup.lactation.tooltip>>'>>Lactation<</hovertip>>, and have a "+_args[0].rate+"% chance to <<hovertip '<<print setup.pregnant.tooltip>>'>>Impregnate<</hovertip>> her breasts for "+_args[0].min_pregnant+"-"+_args[0].max_pregnant+" Floors. After each attack, if she is <<hovertip '<<print setup.lactation.tooltip>>'>>Lactating<</hovertip>>, the Leeching Slugs increase their @@.health;Max Health@@ by @@.health;"+_args[0].leeching_health+"@@ until the end of the night and restore @@.health;<<hovertip '@@.health;_hpercent% Max Health@@'>>_heal<</hovertip>> Health@@.">>
<<case "Pooling Slugs">>
<<set _patk to Math.trunc(_args[0].cur_atk * _args[0].dmg_float)>>
<<set _satk to Math.trunc(_args[0].cur_sex * _args[0].dmg_float)>>
<<set _percent to 100 * _args[0].dmg_float>>
<<set _preg to 100 * _args[0].rate>>
<<set _tcheck to _args[0].trapcheck_rate + Math.trunc(_args[0].cur_sex * _args[0].pooling_float)>>
<<set _tbase to clone(_args[0].trapcheck_rate)>>
<<set _tpercent to _args[0].pooling_float * 100>>
<<set _args[0].description to "Instead of combat, each Raider faces two @@.trap;<<hovertip '_tbase + @@.sex;_tpercent% Sexual Attack@@'>>_tcheck<</hovertip>> Obstacle Trapchecks@@. Whenever a Raider fails one of their @@.trap;Trapchecks@@, they fall into a pit of ooze containing the "+_args[0].name+". They attack any Raiders who fall into one of their traps, dealing @@.physical;<<hovertip '@@.phy;_percent% Physical Attack@@'>>"+_patk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;_percent% Sexual Attack@@'>>"+_satk+"<</hovertip>> Sexual@@ damage to her, inflicting her with "+_args[0].pooling_int+" <<hovertip '<<print setup.sticky.tooltip>>'>>Sticky<</hovertip>>, and have a "+_args[0].rate+"% chance to <<hovertip '<<print setup.pregnant.tooltip>>'>>Impregnate<</hovertip>> her breasts for "+_args[0].min_pregnant+"-"+_args[0].max_pregnant+" Floors.">>
<<default>>
<<set _patk to Math.trunc(_args[0].cur_atk * _args[0].dmg_float)>>
<<set _satk to Math.trunc(_args[0].cur_sex * _args[0].dmg_float)>>
<<set _percent to 100 * _args[0].dmg_float>>
<<set _preg to 100 * _args[0].rate>>
<<set _args[0].description to "They attack the first Raider in the party twice, dealing @@.physical;<<hovertip '@@.phy;_percent% Physical Attack@@'>>"+_patk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;_percent% Sexual Attack@@'>>"+_satk+"<</hovertip>> Sexual@@ damage to her and have a "+_args[0].rate+"% chance to <<hovertip '<<print setup.pregnant.tooltip>>'>>Impregnate<</hovertip>> her breasts for "+_args[0].min_pregnant+"-"+_args[0].max_pregnant+" Floors.">>
<</switch>>
<<case "Snake">>
SNAKE SUMMON
<<set _ppercent to _args[0].poisoned_float * 100>>
<<set _apercent to _args[0].aroused_float * 100>>
<<set _args[0].description to "It attacks the Targeted Raider, dealing @@.phy;<<hovertip '@@.phy;100% Physical Attack@@'>>"+_args[0].atk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].sex+"<</hovertip>> Sexual@@ damage to her and inflicting <<hovertip '<<print setup.poisoned.tooltip>>'>>Poison<</hovertip>> and <<hovertip '<<print setup.aroused.tooltip>>'>>Arouse<</hovertip>>. The amount of <<hovertip '<<print setup.poisoned.tooltip>>'>>Poison<</hovertip>> inflicted is equal to "+_ppercent+"% of the @@.phy;Physical@@ damage dealt to the Raider and the amount of <<hovertip '<<print setup.aroused.tooltip>>'>>Arouse<</hovertip>> inflicted is equal to "+_apercent+"% of the Raider's @@.lust;Lust@@ after the attack, up to "+_args[0].cap+" for both.">>
<<case "Spider">>
SPIDER ROOM
<<switch _args[0].name>>
<<case "Spider Queen">>
<<set _poison to _args[0].queen_stacks + Math.trunc(_args[0].cur_atk * _args[0].queen_float)>>
<<set _aroused to _args[0].queen_stacks + Math.trunc(_args[0].cur_sex * _args[0].queen_float)>>
<<set _percent to _args[0].queen_float * 100>>
<<set _base to clone(_args[0].queen_stacks)>>
<<set _args[0].description to "She attacks the first Raider in the party, dealing @@.phy;<<hovertip '@@.phy;100% Physical Attack@@'>>"+_args[0].cur_atk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].cur_sex+"<</hovertip>> Sexual@@ damage to her, inflicting her with <<hovertip '_base + @@.phy;_percent% Physical Attack@@'>>"+_poison+"<</hovertip>> <<hovertip '<<- setup.poisoned.tooltip>>'>>Poison<</hovertip>> and <<hovertip '_base + @@.sex;_percent% Sexual Attack@@'>>"+_aroused+"<</hovertip>> <<hovertip '<<- setup.aroused.tooltip>>'>>Arouse<</hovertip>>, and has a "+_args[0].rate+"% chance to <<hovertip '<<print setup.pregnant.tooltip>>'>>Impregnate<</hovertip>> her anus for "+_args[0].min_pregnant+"-"+_args[0].max_pregnant+" Floors.">>
<<case "Silk Weaver">>
<<set _tcheck to _args[0].trapcheck_int + Math.trunc(_args[0].cur_atk * _args[0].trapcheck_float)>>
<<set _tbase to clone(_args[0].trapcheck_int)>>
<<set _tpercent to _args[0].trapcheck_float * 100>>
<<set _percent to _args[0].silk_float * 100>>
<<set _args[0].description to "At the start of combat, each Raider in the party faces a @@.trap;<<hovertip '_tbase + @@.phy;_tpercent% Physical Attack@@'>>_tcheck<</hovertip>> Obstacle Trapcheck@@. Each Raider who fails becomes entangled in the silk webbing, reducing her damage dealt by "+_percent+"% and increasing her damage taken by "+_percent+"%. She attacks the first Raider that failed the @@.trap;Trapcheck@@ or the first Raider in the party if nobody failed, dealing @@.phy;<<hovertip '@@.phy;100% Physical Attack@@'>>"+_args[0].cur_atk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].cur_sex+"<</hovertip>> Sexual@@ damage to her and has a "+_args[0].rate+"% chance to <<hovertip '<<print setup.pregnant.tooltip>>'>>Impregnate<</hovertip>> her anus for "+_args[0].min_pregnant+"-"+_args[0].max_pregnant+" Floors.">>
<<case "Cocoon Spinner">>
<<set _args[0].description to "She attacks the first Raider in the party, dealing @@.phy;<<hovertip '@@.phy;100% Physical Attack@@'>>"+_args[0].cur_atk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].cur_sex+"<</hovertip>> Sexual@@ damage to her, inflicting her with "+_args[0].cocoon_stacks+" <<hovertip '<<- setup.sticky.tooltip>>'>>Sticky<</hovertip>>, prevents her from attacking, and has a "+_args[0].rate+"% chance to <<hovertip '<<print setup.pregnant.tooltip>>'>>Impregnate<</hovertip>> her anus for "+_args[0].min_pregnant+"-"+_args[0].max_pregnant+" Floors.">>
<<default>>
<<set _args[0].description to "She attacks the first Raider in the party, dealing @@.phy;<<hovertip '@@.phy;100% Physical Attack@@'>>"+_args[0].cur_atk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].cur_sex+"<</hovertip>> Sexual@@ damage to her and has a "+_args[0].rate+"% chance to <<hovertip '<<print setup.pregnant.tooltip>>'>>Impregnate<</hovertip>> her anus for "+_args[0].min_pregnant+"-"+_args[0].max_pregnant+" Floors.">>
<</switch>>
<<case "Succubus">>
SUCCUBUS ROOM
<<switch _args[0].name>>
<<case "Futa Succubus">>
<<set _percent to _args[0].stat_float * 100>>
<<set _args[0].description to "At the start of combat, the "+_args[0].name+" increases all her stats by "+_percent+"% for each Raider in the party who is <<hovertip '<<print setup.horny.tooltip>>'>>Horny<</hovertip>>, <<hovertip '<<print setup.wet.tooltip>>'>>Wet<</hovertip>>, <<hovertip '<<print setup.perverted.tooltip>>'>>Perverted<</hovertip>>, or <<hovertip '<<print setup.edging.tooltip>>'>>Edging<</hovertip>>. Then, she attacks the first Raider in the party, dealing @@.phy;<<hovertip '@@.phy;100% Physical Attack@@'>>"+_args[0].cur_atk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].cur_sex+"<</hovertip>> Sexual@@ damage to her and inflicting her with "+_args[0].futa_min+"-"+_args[0].futa_max+" <<hovertip '<<print setup.sticky.tooltip>>'>>Sticky<</hovertip>>.">>
<<case "Succubus Mistress">>
<<set _percent to _args[0].mistress_float * 100>>
<<set _args[0].description to "At the start of combat, the "+_args[0].name+" increases all her stats by "+_percent+"% for each Raider in the party who is <<hovertip '<<print setup.horny.tooltip>>'>>Horny<</hovertip>>, <<hovertip '<<print setup.wet.tooltip>>'>>Wet<</hovertip>>, <<hovertip '<<print setup.perverted.tooltip>>'>>Perverted<</hovertip>>, or <<hovertip '<<print setup.edging.tooltip>>'>>Edging<</hovertip>>. Then, she attacks the first Raider in the party, dealing @@.phy;<<hovertip '@@.phy;100% Physical Attack@@'>>"+_args[0].cur_atk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].cur_sex+"<</hovertip>> Sexual@@ damage to her.">>
<<case "Hexmage Succubus">>
<<set _percent to _args[0].stat_float * 100>>
<<set _scheck to _args[0].rate + Math.trunc(_args[0].cur_atk * _args[0].hex_float)>>
<<set _sbase to clone(_args[0].rate)>>
<<set _spercent to _args[0].hex_float * 100>>
<<set _args[0].description to "At the start of combat, the "+_args[0].name+" increases all her stats by "+_percent+"% for each Raider in the party who is <<hovertip '<<print setup.horny.tooltip>>'>>Horny<</hovertip>>, <<hovertip '<<print setup.wet.tooltip>>'>>Wet<</hovertip>>, <<hovertip '<<print setup.perverted.tooltip>>'>>Perverted<</hovertip>>, or <<hovertip '<<print setup.edging.tooltip>>'>>Edging<</hovertip>>. Then, she attacks the first Raider in the party, dealing @@.phy;<<hovertip '@@.phy;100% Physical Attack@@'>>"+_args[0].cur_atk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].cur_sex+"<</hovertip>> Sexual@@ damage to her and faces a @@.spell;<<hovertip '_sbase + @@.mag;_spercent% Magical Attack@@'>>_scheck<</hovertip>> Spellcheck@@. If she fails, she becomes <<hovertip '<<print setup.cursed.tooltip>>'>>Cursed<</hovertip>>.">>
<<default>>
<<set _percent to _args[0].stat_float * 100>>
<<set _args[0].description to "At the start of combat, the "+_args[0].name+" increases all her stats by "+_percent+"% for each Raider in the party who is <<hovertip '<<print setup.horny.tooltip>>'>>Horny<</hovertip>>, <<hovertip '<<print setup.wet.tooltip>>'>>Wet<</hovertip>>, <<hovertip '<<print setup.perverted.tooltip>>'>>Perverted<</hovertip>>, or <<hovertip '<<print setup.edging.tooltip>>'>>Edging<</hovertip>>. Then, she attacks the first Raider in the party, dealing @@.phy;<<hovertip '@@.phy;100% Physical Attack@@'>>"+_args[0].cur_atk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].cur_sex+"<</hovertip>> Sexual@@ damage to her.">>
<</switch>>
<<case "Wizard">>
WIZARD ROOM
<<switch _args[0].name>>
<<case "Control Wizard">>
<<set _scheck to _args[0].rate + Math.trunc(_args[0].cur_atk * _args[0].rate_atk_bonus)>>
<<set _cbase to clone(_args[0].rate)>>
<<set _cpercent to _args[0].rate_atk_bonus * 100>>
<<set _percent to _args[0].sex_bonus * 100>>
<<set _args[0].description to "At the start of combat, the "+_args[0].name+" casts his Trance Spell against the Raider with the highest attack stat. If she fails the @@.spell;<<hovertip '@@.spell;_cbase@@ + @@.mag;_cpercent% Magical Attack@@'>>_scheck<</hovertip>> Spellcheck@@, she will be put in a trance, unable to attack and becoming <<hovertip '<<print setup.submissive.tooltip>>'>>Submissive<</hovertip>>, <<hovertip '<<print setup.absentminded.tooltip>>'>>Absentminded<</hovertip>>, and <<hovertip '<<print setup.brainwashed.tooltip>>'>>Brainwashed<</hovertip>>. Then, he attacks the first Raider in the party, dealing @@.mag;<<hovertip '@@.mag;100% Magical Attack@@'>>"+_args[0].cur_atk+"<</hovertip>> Magical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].cur_sex+"<</hovertip>> Sexual@@ damage to her. If she is <<hovertip '<<print setup.brainwashed.tooltip>>'>>Brainwashed<</hovertip>>, she takes "+_percent+"% more @@.sex;Sexual@@ damage from him.">>
<<case "Wizard Overlord">>
<<set _scheck to _args[0].rate + Math.trunc(_args[0].cur_atk * _args[0].rate_atk_bonus)>>
<<set _cbase to clone(_args[0].rate)>>
<<set _cpercent to _args[0].rate_atk_bonus * 100>>
<<set _percent to _args[0].sex_bonus * 100>>
<<set _args[0].description to "At the start of combat, the "+_args[0].name+" casts his Trance Spell against all Raiders. Each Raider who fails the @@.spell;<<hovertip '@@.spell;_cbase@@ + @@.mag;_cpercent Magical Attack@@'>>_scheck<</hovertip>> Spellcheck@@ will be put in a trance, becoming <<hovertip '<<print setup.brainwashed.tooltip>>'>>Brainwashed<</hovertip>> and <<hovertip '<<print setup.perverted.tooltip>>'>>Perverted<</hovertip>> and unable to attack. Then, he attacks the first Raider in the party, dealing @@.mag;<<hovertip '@@.mag;100% Magical Attack@@'>>"+_args[0].cur_atk+"<</hovertip>> Magical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].cur_sex+"<</hovertip>> Sexual@@ damage to her. If she is <<hovertip '<<print setup.brainwashed.tooltip>>'>>Brainwashed<</hovertip>>, she takes "+_percent+"% more @@.sex;Sexual@@ damage from him.">>
<<case "Summoner Wizard">>
<<set _handSex to Math.trunc(_args[0].cur_atk * _args[0].summoner_float)>>
<<set _handPercent to _args[0].summoner_float * 100>>
<<set _percent to _args[0].sex_bonus * 100>>
<<set _args[0].description to "At the start of combat, the "+_args[0].name+" conjures his Magic Hands to attack the Raider with the highest attack stat. They have the Bondage and Masturbation Fetishes and deal @@.sex;<<hovertip '@@.mag;_handPercent% Magical Attack@@'>>_handSex<</hovertip>> Sexual@@ damage to her and prevent her from attacking. Then, he attacks the first Raider in the party, dealing @@.mag;<<hovertip '@@.mag;100% Magical Attack@@'>>"+_args[0].cur_atk+"<</hovertip>> Magical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].cur_sex+"<</hovertip>> Sexual@@ damage to her. If she is being attacked by his Magic Hands, she takes "+_percent+"% more @@.sex;Sexual@@ damage from both of them.">>
<<default>>
<<set _scheck to _args[0].rate + Math.trunc(_args[0].cur_atk * _args[0].rate_atk_bonus)>>
<<set _cbase to clone(_args[0].rate)>>
<<set _cpercent to _args[0].rate_atk_bonus * 100>>
<<set _percent to _args[0].sex_bonus * 100>>
<<set _args[0].description to "At the start of combat, the Wizard casts his Trance Spell against the Raider with the highest attack stat. If she fails the @@.spell;<<hovertip '@@.spell;_cbase@@ + @@.mag;_cpercent% Magical Attack@@'>>_scheck<</hovertip>> Spellcheck@@, she will be put in a trance, becoming <<hovertip '<<print setup.brainwashed.tooltip>>'>>Brainwashed<</hovertip>> and unable to attack. Then, he attacks the first Raider in the party, dealing @@.mag;<<hovertip '@@.mag;100% Magical Attack@@'>>"+_args[0].cur_atk+"<</hovertip>> Magical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].cur_sex+"<</hovertip>> Sexual@@ damage to her. If she is <<hovertip '<<print setup.brainwashed.tooltip>>'>>Brainwashed<</hovertip>>, she takes "+_percent+"% more @@.sex;Sexual@@ damage from him.">>
<</switch>>
<<case "Wolf">>
WOLF ROOM
<<switch _args[0].name>>
<<case "Werewolf">>
<<set _executeSex to Math.trunc(_args[0].cur_sex * _args[0].execute_float)>>
<<set _executePercent to _args[0].execute_float * 100>>
<<set _patk to Math.trunc(_args[0].cur_atk * (_args[0].werewolf_float + _args[0].low_float))>>
<<set _apercent to (_args[0].werewolf_float + _args[0].low_float) * 100>>
<<set _satk to Math.trunc(_args[0].cur_sex * (_args[0].werewolf_float + _args[0].high_float))>>
<<set _spercent to (_args[0].werewolf_float + _args[0].high_float) * 100>>
<<set _args[0].description to "He attacks the Raider closest to filling her @@.lust;Lust@@, dealing @@.phy;<<hovertip '@@.phy;_apercent% Physical Attack@@'>>"+_patk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;_spercent% Sexual Attack@@'>>"+_satk+"<</hovertip>> Sexual@@ damage, increased to @@.sex;<<hovertip '@@.sex;_executePercent% Sexual Attack@@'>>"+_executeSex+"<</hovertip>>@@ against Raiders with @@.lust;"+_args[0].percent+"%@@ or more filled @@.lust;Lust@@, to her.">>
<<case "Stalking Wolf">>
<<set _executeAtk to Math.trunc(_args[0].cur_atk * _args[0].stalking_float)>>
<<set _executePercent to _args[0].stalking_float * 100>>
<<set _patk to Math.trunc(_args[0].cur_atk * _args[0].high_float)>>
<<set _apercent to _args[0].high_float * 100>>
<<set _satk to Math.trunc(_args[0].cur_sex * _args[0].low_float)>>
<<set _spercent to _args[0].low_float * 100>>
<<set _args[0].description to "He attacks the Raider with the most missing @@.health;Health@@, dealing @@.phy;<<hovertip '@@.phy;_apercent% Physical Attack@@'>>"+_patk+"<</hovertip>> Physical@@ damage, increased to @@.phy;<<hovertip '@@.phy;_executePercent% Physical Attack@@'>>"+_executeAtk+"<</hovertip>>@@ against Raiders with @@.health;"+_args[0].percent+"%@@ or more missing @@.health;Health@@, and @@.sex;<<hovertip '@@.sex;_spercent% Sexual Attack@@'>>"+_satk+"<</hovertip>> Sexual@@ damage to her. If he Captures her, she cannot attack.">>
<<case "Alpha Wolf">>
<<set _executeAtk to Math.trunc(_args[0].cur_atk * _args[0].execute_float)>>
<<set _executePercent to _args[0].execute_float * 100>>
<<set _patk to Math.trunc(_args[0].cur_atk * _args[0].high_float)>>
<<set _apercent to _args[0].high_float * 100>>
<<set _satk to Math.trunc(_args[0].cur_sex * _args[0].low_float)>>
<<set _spercent to _args[0].low_float * 100>>
<<set _args[0].description to "At the start of combat, the Alpha Wolf howls and each Raider in the party has a "+_args[0].alpha_percent+"% chance become inflicted with <<hovertip '<<- setup.zoophobia.tooltip>>'>>Zoophobia<</hovertip>>. Then, he attacks the Raider with the most missing @@.health;Health@@, dealing @@.phy;<<hovertip '@@.phy;_apercent% Physical Attack@@'>>"+_patk+"<</hovertip>> Physical@@ damage, increased to @@.phy;<<hovertip '@@.phy;_executePercent% Physical Attack@@'>>"+_executeAtk+"<</hovertip>>@@ against Raiders with @@.health;"+_args[0].percent+"%@@ or more missing @@.health;Health@@, and @@.sex;<<hovertip '@@.sex;_spercent% Sexual Attack@@'>>"+_satk+"<</hovertip>> Sexual@@ damage to her.">>
<<default>>
<<set _executeAtk to Math.trunc(_args[0].cur_atk * _args[0].execute_float)>>
<<set _executePercent to _args[0].execute_float * 100>>
<<set _patk to Math.trunc(_args[0].cur_atk * _args[0].high_float)>>
<<set _apercent to _args[0].high_float * 100>>
<<set _satk to Math.trunc(_args[0].cur_sex * _args[0].low_float)>>
<<set _spercent to _args[0].low_float * 100>>
<<set _args[0].description to "He attacks the Raider with the most missing @@.health;Health@@, dealing @@.phy;<<hovertip '@@.phy;_apercent% Physical Attack@@'>>"+_patk+"<</hovertip>> Physical@@ damage, increased to @@.phy;<<hovertip '@@.phy;_executePercent% Physical Attack@@'>>"+_executeAtk+"<</hovertip>>@@ against Raiders with @@.health;"+_args[0].percent+"%@@ or more missing @@.health;Health@@, and @@.sex;<<hovertip '@@.sex;_spercent% Sexual Attack@@'>>"+_satk+"<</hovertip>> Sexual@@ damage to her.">>
<</switch>>
<</switch>>
<</widget>><<widget "TrapDescription">>
_args[0].base_name is Trap Type
_args[0].mode is Trap Mode
<<switch _args[0].base_name>>
<<case "Crotch Bridge">>
CROTCH BRIDGE
<<switch _args[0].mode>>
<<default>>
<<set _wetCheck to _args[0].cur_check + Math.trunc(_args[0].cur_check * _args[0].wet_float)>>
<<set _wetPercent to 100 + (_args[0].wet_float * 100)>>
<<set _satk to Math.trunc(_args[0].cur_sex * _args[0].sex_float)>>
<<set _percent to _args[0].sex_float * 100>>
<<set _sPercent to _args[0].sex_mod * 100>>
<<set _args[0].description to "Each Raider in the party faces 4 @@.trap;<<hovertip '@@.trap;100% Trapcheck@@'>>"+_args[0].cur_check+"<</hovertip>> Obstacle Trapchecks@@ as they cross the Crotch Bridge, increased to @@.trap;<<hovertip '@@.trap;_wetPercent% Trapcheck@@'>>"+_wetCheck+"<</hovertip>>@@ against Raiders who are <<hovertip '<<print setup.wet.tooltip>>'>>Wet<</hovertip>>. Each time the Raider fails, she takes @@.sex;<<hovertip '@@.sex;_percent% Sexual Attack@@'>>"+_satk+"<</hovertip>> Sexual@@ damage and increases all successive @@.sex;Sexual@@ damage by "+_sPercent+"%.">>
<</switch>>
<<case "Dart Trap">>
DART TRAP
<<switch _args[0].mode>>
<<case "Toxic">>
<<set _patk to Math.trunc(_args[0].cur_atk * _args[0].high_float)>>
<<set _apercent to _args[0].high_float * 100>>
<<set _satk to Math.trunc(_args[0].cur_sex * _args[0].low_float)>>
<<set _spercent to _args[0].low_float * 100>>
<<set _stacks to Math.trunc(_args[0].cur_atk * _args[0].stacks_float)>>
<<set _percent to _args[0].stacks_float * 100>>
<<set _args[0].description to "Each Raider in the party faces a @@.trap;<<hovertip '@@.trap;100% Trapcheck@@'>>"+_args[0].cur_check+"<</hovertip>> Hidden Trapcheck@@ as they walk through the narrow corridor. Each Raider that fails their @@.trap;Trapcheck@@ triggers the Dart Trap, firing "+_args[0].atk_count+" waves of darts. Each wave deals @@.phy;<<hovertip '@@.phy;_apercent% Physical Attack@@'>>"+_patk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;_spercent% Sexual Attack@@'>>"+_satk+"<</hovertip>> Sexual@@ damage and inflicts <<hovertip '@@.phy;_percent% Physical Attack@@'>>_stacks<</hovertip>> <<hovertip '<<print setup.poisoned.tooltip>>'>>Poison<</hovertip>> to all Raiders. This Trap cannot Capture Raiders.">>
<<case "Stimulant">>
<<set _patk to Math.trunc(_args[0].cur_atk * _args[0].low_float)>>
<<set _apercent to _args[0].low_float * 100>>
<<set _satk to Math.trunc(_args[0].cur_sex * _args[0].high_float)>>
<<set _spercent to _args[0].high_float * 100>>
<<set _stacks to Math.trunc(_args[0].cur_sex * _args[0].stacks_float)>>
<<set _percent to _args[0].stacks_float * 100>>
<<set _args[0].description to "Each Raider in the party faces a @@.trap;<<hovertip '@@.trap;100% Trapcheck@@'>>"+_args[0].cur_check+"<</hovertip>> Hidden Trapcheck@@ as they walk through the narrow corridor. Each Raider that fails their @@.trap;Trapcheck@@ triggers the Dart Trap, firing "+_args[0].atk_count+" waves of darts. Each wave deals @@.phy;<<hovertip '@@.phy;_apercent% Physical Attack@@'>>"+_patk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;_spercent% Sexual Attack@@'>>"+_satk+"<</hovertip>> Sexual@@ damage and inflicts <<hovertip '@@.sex;_percent% Sexual Attack@@'>>_stacks<</hovertip>> <<hovertip '<<print setup.aroused.tooltip>>'>>Arouse<</hovertip>> to all Raiders. This Trap cannot Capture Raiders.">>
<</switch>>
<<case "Livewire Machine">>
LIVEWIRE MACHINE
<<switch _args[0].mode>>
<<case "Shock">>
<<set _args[0].description to "The first Raider in the party faces two @@.trap;<<hovertip '@@.trap;100% Trapcheck@@'>>"+_args[0].cur_check+"<</hovertip>> Captive Trapchecks@@. If she fails one of the @@.trap;Trapchecks@@, she is trapped on the machine and takes @@.phy;<<hovertip '@@.phy;100% Physical Attack@@'>>"+_args[0].cur_atk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].cur_sex+"<</hovertip>> Sexual@@ damage and becomes <<hovertip '<<print setup.stimulated.tooltip>>'>>Stimulated<</hovertip>>. If she is already <<hovertip '<<print setup.stimulated.tooltip>>'>>Stimulated<</hovertip>>, it becomes permanent. This Trap can Capture Raiders who are alone.">>
<<case "Hypno">>
<<set _args[0].description to "The last Raider in the party faces two @@.trap;<<hovertip '@@.trap;100% Trapcheck@@'>>"+_args[0].cur_check+"<</hovertip>> Captive Trapchecks@@. If she fails one of the @@.trap;Trapchecks@@, she is trapped on the machine and takes @@.phy;<<hovertip '@@.phy;100% Physical Attack@@'>>"+_args[0].cur_atk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].cur_sex+"<</hovertip>> Sexual@@ damage and becomes <<hovertip '<<print setup.brainwashed.tooltip>>'>>Brainwashed<</hovertip>>. If she is already <<hovertip '<<print setup.brainwashed.tooltip>>'>>Brainwashed<</hovertip>>, it becomes permanent. This Trap can Capture Raiders who are alone.">>
<<case "Modify">>
<<set _args[0].description to "The Raider with the highest @@.lust;Max Lust@@ faces two @@.trap;<<hovertip '@@.trap;100% Trapcheck@@'>>"+_args[0].cur_check+"<</hovertip>> Captive Trapchecks@@. If she fails one of the @@.trap;Trapchecks@@, she is trapped on the machine and takes @@.phy;<<hovertip '@@.phy;100% Physical Attack@@'>>"+_args[0].cur_atk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;100% Sexual Attack@@'>>"+_args[0].cur_sex+"<</hovertip>> Sexual@@ damage and gains "+_args[0].lactation_stacks+" <<hovertip '<<print setup.lactation.tooltip>>'>>Lactation<</hovertip>>. Then, for each <<hovertip '<<print setup.lactation.tooltip>>'>>Lactation<</hovertip>> stack she gained over the max amount, trigger the <<hovertip '<<print setup.lactation.tooltip>>'>>Lactation's<</hovertip>> effect. This Trap can Capture Raiders who are alone.">>
<</switch>>
<<case "Magic Runes">>
MAGIC RUNES
<<switch _args[0].mode>>
<<case "Fire Rune">>
<<set _matk to Math.trunc(_args[0].cur_atk * _args[0].high_float)>>
<<set _satk to Math.trunc(_args[0].cur_sex * _args[0].low_float)>>
<<set _hpercent to _args[0].high_float * 100>>
<<set _lpercent to _args[0].low_float * 100>>
<<set _args[0].description to "Each Raider in the party faces a @@.trap;<<hovertip '@@.trap;100% Trapcheck@@'>>"+_args[0].cur_check+"<</hovertip>> Arcane Trapcheck@@ until one Raider fails. The Raider who failed triggers the Fire Rune and takes @@.mag;<<hovertip '@@.mag;_hpercent% Magical Attack@@'>>"+_matk+"<</hovertip>> Magical@@ damage, @@.sex;<<hovertip '@@.sex;_lpercent% Sexual Attack@@'>>"+_satk+"<</hovertip>> Sexual@@ damage, and becomes <<hovertip '<<print setup.stripped.tooltip>>'>>Stripped<</hovertip>>. This Trap cannot Capture Raiders.">>
<<case "Lust Rune">>
<<set _matk to Math.trunc(_args[0].cur_atk * _args[0].low_float)>>
<<set _satk to Math.trunc(_args[0].cur_sex * _args[0].high_float)>>
<<set _hpercent to _args[0].high_float * 100>>
<<set _lpercent to _args[0].low_float * 100>>
<<set _args[0].description to "Each Raider in the party faces a @@.trap;<<hovertip '@@.trap;100% Trapcheck@@'>>"+_args[0].cur_check+"<</hovertip>> Arcane Trapcheck@@ until one Raider fails. The Raider who failed triggers the Lust Rune and takes @@.mag;<<hovertip '@@.mag;_lpercent% Magical Attack@@'>>"+_matk+"<</hovertip>> Magical@@ damage, @@.sex;<<hovertip '@@.sex;_hpercent% Sexual Attack@@'>>"+_satk+"<</hovertip>> Sexual@@ damage, and is inflicted with the <<hovertip '<<print setup.mark_of_lust.tooltip>>'>>Mark of Lust<</hovertip>>. This Trap cannot Capture Raiders.">>
<<case "Lewd Rune">>
<<set _matk to Math.trunc(_args[0].cur_atk * _args[0].low_float)>>
<<set _satk to Math.trunc(_args[0].cur_sex * _args[0].low_float)>>
<<set _lpercent to _args[0].low_float * 100>>
<<set _args[0].description to "Each Raider in the party faces a @@.trap;<<hovertip '@@.trap;100% Trapcheck@@'>>"+_args[0].cur_check+"<</hovertip>> Arcane Trapcheck@@ until one Raider fails. The Raider who failed triggers the Lewd Rune and takes @@.mag;<<hovertip '@@.mag;_lpercent% Magical Attack@@'>>"+_matk+"<</hovertip>> Magical@@ damage, @@.sex;<<hovertip '@@.sex;_lpercent% Sexual Attack@@'>>"+_satk+"<</hovertip>> Sexual@@ damage, becomes <<hovertip '<<print setup.horny.tooltip>>'>>Horny<</hovertip>>, and gains "+_args[0].futa_stacks+" <<hovertip '<<print setup.futanari.tooltip>>'>>Futanari<</hovertip>>. This Trap cannot Capture Raiders.">>
<</switch>>
<<case "Noxious Gas Trap">>
NOXIOUS GAS TRAP
<<switch _args[0].mode>>
<<case "Fixation">>
<<set _satk to Math.trunc(_args[0].cur_sex * _args[0].fixation_float)>>
<<set _spercent to 100 * _args[0].fixation_float>>
<<set _aroused to Math.trunc(_args[0].cur_sex * _args[0].aroused_float)>>
<<set _apercent to 100 * _args[0].aroused_float>>
<<set _args[0].description to "Each Raider in the party faces two @@.trap;<<hovertip '@@.trap;100% Trapcheck@@'>>"+_args[0].cur_check+"<</hovertip>> Hidden Trapchecks@@ as they walk through the passage. Each failed @@.trap;Trapcheck@@ triggers the trap, which releases aphrodisiac gas that has various effects depending on how much is inhaled. After one trigger, each Raider takes @@.sex;<<hovertip '@@.sex;_spercent% Sexual Attack@@'>>"+_satk+"<</hovertip>> Sexual@@ damage. After two triggers, each Raider gains <<hovertip '@@.sex;_apercent% Sexual Attack@@'>>_aroused<</hovertip>> <<hovertip '<<print setup.aroused.tooltip>>'>>Arouse<</hovertip>>. After three triggers, each Raiders' <<hovertip '<<print setup.aroused.tooltip>>'>>Aroused<</hovertip>> Stacks are doubled. This Trap cannot Capture Raiders.">>
<<case "Contamination">>
<<set _tatk to Math.trunc(_args[0].cur_atk * _args[0].fixation_float)>>
<<set _tpercent to 100 * _args[0].fixation_float>>
<<set _poisoned to Math.trunc(_args[0].cur_atk * _args[0].aroused_float)>>
<<set _ppercent to 100 * _args[0].aroused_float>>
<<set _args[0].description to "Each Raider in the party faces two @@.trap;<<hovertip '@@.trap;100% Trapcheck@@'>>"+_args[0].cur_check+"<</hovertip>> Hidden Trapchecks@@ as they walk through the passage. Each failed @@.trap;Trapcheck@@ triggers the trap, which releases poisonous gas that has various effects depending on how much is inhaled. After one trigger, each Raider takes <<hovertip '@@.phy;_tpercent% Physical Attack@@'>>"+_tatk+"<</hovertip>> True damage. After two triggers, each Raider gains <<hovertip '@@.phy;_ppercent% Physical Attack@@'>>_poisoned<</hovertip>> <<hovertip '<<print setup.poisoned.tooltip>>'>>Poison<</hovertip>>. After three triggers, each Raiders takes additional True damage equal to "+_args[0].contamination_mod+" times the amount of <<hovertip '<<print setup.poisoned.tooltip>>'>>Poisoned<</hovertip>> Stacks they have. This Trap cannot Capture Raiders.">>
<<case "Intoxication">>
<<set _percent to 100 * _args[0].intoxicated_float>>
<<set _args[0].description to "Each Raider in the party faces two @@.trap;<<hovertip '@@.trap;100% Trapcheck@@'>>"+_args[0].cur_check+"<</hovertip>> Hidden Trapchecks@@ as they walk through the passage. Each failed @@.trap;Trapcheck@@ triggers the trap, which releases intoxicating gas that has various effects depending on how much is inhaled. After one trigger, each Raider gains "+_args[0].intoxicated_stacks+" <<hovertip '<<print setup.intoxicated.tooltip>>'>>Intoxication<</hovertip>>. After two triggers, each Raider becomes <<hovertip '<<print setup.nasty.tooltip>>'>>Nasty<</hovertip>> and <<hovertip '<<print setup.kinky.tooltip>>'>>Kinky<</hovertip>>. After three triggers, each Raiders' <<hovertip '<<print setup.intoxicated.tooltip>>'>>Intoxicated<</hovertip>> Status becomes stronger, increasing all effects to "+_percent+"%. This Trap cannot Capture Raiders.">>
<</switch>>
<<case "Pitfall">>
PITFALL
<<switch _args[0].mode>>
<<case "Overgrown">>
<<set _fpercent to ((_args[0].fall_float + ((_args[0].overgrown_float * _args[0].cur_atk) / 100)) * 100).toFixed(2)>>
<<set _apercent to _args[0].patk_float * 100>>
<<set _patk to Math.trunc(_args[0].cur_atk * _args[0].patk_float)>>
<<set _fbase to _args[0].fall_float * 100>>
<<set _ffloat to _args[0].overgrown_float * 100>>
<<set _args[0].description to "Each Raider faces a @@.trap;<<hovertip '@@.trap;100% Trapcheck@@'>>"+_args[0].cur_check+"<</hovertip>> Obstacle Trapcheck@@ as they walk over the pit until one Raider fails. The Raider who failed falls into the hole and takes @@.phy;Physical@@ damage equal to @@.health;<<hovertip '_fbase% + @@.phy;_ffloat% Physical Attack@@'>>"+_fpercent+"%<</hovertip>>@@ of the Raider's @@.health;Max Health@@. Inside the pit, she is attacked by vines "+_args[0].overgrown_int+" times, taking @@.phy;<<hovertip '@@.phy;_apercent% Physical Attack@@'>>"+_patk+"<</hovertip>> Physical@@ damage, with a "+_args[0].stripped_percent+"% chance to become <<hovertip '<<print setup.stripped.tooltip>>'>>Stripped<</hovertip>> after each attack.">>
<<case "Infested">>
<<set _lpercent to ((_args[0].lust_float + ((_args[0].infested_float * _args[0].cur_sex) / 100)) * 100).toFixed(2)>>
<<set _spercent to _args[0].satk_float * 100>>
<<set _satk to Math.trunc(_args[0].cur_sex * _args[0].satk_float)>>
<<set _lbase to _args[0].lust_float * 100>>
<<set _lfloat to _args[0].infested_float * 100>>
<<set _args[0].description to "Each Raider faces a @@.trap;<<hovertip '@@.trap;100% Trapcheck@@'>>"+_args[0].cur_check+"<</hovertip>> Obstacle Trapcheck@@ as they walk over the pit until one Raider fails. The Raider who failed is sucked into the hole and attacked by tentacles "+_args[0].infested_int+" times, taking @@.sex;<<hovertip '@@.sex;_spercent% Sexual Attack@@'>>"+_satk+"<</hovertip>> Sexual@@ damage plus @@.sex;Sexual@@ damage equal to @@.lust;<<hovertip '_lbase% + @@.sex;_lfloat% Sexual Attack@@'>>"+_lpercent+"%<</hovertip>>@@ of her @@.lust;Max Lust@@ each attack. The tentacles have a "+_args[0].pregnant_percent+"% chance each attack to <<hovertip '<<print setup.pregnant.tooltip>>'>>Impregnant<</hovertip>> her womb for "+_args[0].min_pregnant+"-"+_args[0].max_pregnant+" floors.">>
<<case "Flooded">>
<<set _fpercent to ((_args[0].fall_float + ((_args[0].flooded_float * _args[0].cur_atk) / 100)) * 100).toFixed(2)>>
<<set _fbase to _args[0].fall_float * 100>>
<<set _ffloat to _args[0].overgrown_float * 100>>
<<set _aroused to Math.trunc(_args[0].cur_sex * _args[0].aroused_float)>>
<<set _afloat to _args[0].aroused_float * 100>>
<<set _abase to _args[0].aroused_base>>
<<set _args[0].description to "Each Raider faces a @@.trap;<<hovertip '@@.trap;100% Trapcheck@@'>>"+_args[0].cur_check+"<</hovertip>> Obstacle Trapcheck@@ as they walk over the pit until one Raider fails. The Raider who failed opens the trap door and all Raiders in the party tumble down the pit, taking @@.phy;Physical@@ damage equal to @@.health;<<hovertip '_fbase% + @@.phy;_ffloat% Physical Attack@@'>>"+_fpercent+"%<</hovertip>>@@ of the Raider's @@.health;Max Health@@, gaining <<hovertip '_abase + @@.sex;_afloat% Sexual Attack@@'>>_aroused<</hovertip>> <<hovertip '<<print setup.aroused.tooltip>>'>>Arouse<</hovertip>>, and becoming <<hovertip '<<print setup.wet.tooltip>>'>>Wet<</hovertip>>. Cannot Capture Raiders.">>
<</switch>>
<<case "Summoning Circle">>
SUMMONING CIRCLE
<<switch _args[0].mode>>
<<case "Summon Spirit">>
<<set _patk to Math.trunc(_args[0].cur_atk * _args[0].atk_float)>>
<<set _satk to Math.trunc(_args[0].cur_atk * _args[0].sex_float)>>
<<set _apercent to _args[0].atk_float * 100>>
<<set _spercent to _args[0].sex_float * 100>>
<<set _capEnergy to _args[0].energy_int * _args[0].energy_mod>>
<<set _dpercent to _args[0].dmg_mod * 100>>
<<set _args[0].description to "Each Raider faces a @@.trap;<<hovertip '@@.trap;100% Trapcheck@@'>>"+_args[0].cur_check+"<</hovertip>> Arcane Trapcheck@@ as they near the Summoning Circle etched in the ground. If a Raider fails her @@.trap;Trapcheck@@, Tentacles spawn from the circle and deal @@.phy;<<hovertip '@@.mag;_apercent% Magical Attack@@'>>"+_patk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.mag;_spercent% Magical Attack@@'>>"+_satk+"<</hovertip>> Sexual@@ damage to each Raider, increased by "+_dpercent+"% for each failed @@.trap;Trapchecks@@ after the first. The Summoning Circle gains "+_args[0].energy_int+" Energy for each Raider attacked, or "+_capEnergy+" Energy if they are Captured. If the Summoning Circle has "+_args[0].spirit_int+" or more Energy before the Tentacles attack, it spends "+_args[0].spirit_int+" Energy to summon Spirits that possesses each Raider, making them <<hovertip '<<- setup.perverted.tooltip>>'>>Perverted<</hovertip>> and gaining 1 of the Summoning Circle's Fetishes as a Kink before combat.">>
<<case "Summon Demon">>
<<set _patk to Math.trunc(_args[0].cur_atk * _args[0].atk_float)>>
<<set _satk to Math.trunc(_args[0].cur_atk * _args[0].sex_float)>>
<<set _apercent to _args[0].atk_float * 100>>
<<set _spercent to _args[0].sex_float * 100>>
<<set _capEnergy to _args[0].energy_int * _args[0].energy_mod>>
<<set _dpercent to _args[0].dmg_mod * 100>>
<<set _args[0].description to "Each Raider faces a @@.trap;<<hovertip '@@.trap;100% Trapcheck@@'>>"+_args[0].cur_check+"<</hovertip>> Arcane Trapcheck@@ as they near the Summoning Circle etched in the ground. If a Raider fails her @@.trap;Trapcheck@@, Tentacles spawn from the circle and deal @@.phy;<<hovertip '@@.mag;_apercent% Magical Attack@@'>>"+_patk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.mag;_spercent% Magical Attack@@'>>"+_satk+"<</hovertip>> Sexual@@ damage to each Raider, increased by "+_dpercent+"% for each failed @@.trap;Trapchecks@@ after the first. The Summoning Circle gains "+_args[0].energy_int+" Energy for each Raider attacked, or "+_capEnergy+" Energy if they are Captured. If the Summoning Circle has "+_args[0].demon_int+" or more Energy, it spends "+_args[0].demon_int+" Energy to summon a Demon that Captures a random Raider in the party who isn't already Captured. If there are no Raiders that can be Captured, the Demon is not summoned and the Energy is preserved. The Raider Captured by the Demon does not generate Energy.">>
<<case "Summon Portal">>
<<set _patk to Math.trunc(_args[0].cur_atk * _args[0].atk_float)>>
<<set _satk to Math.trunc(_args[0].cur_atk * _args[0].sex_float)>>
<<set _apercent to _args[0].atk_float * 100>>
<<set _spercent to _args[0].sex_float * 100>>
<<set _capEnergy to _args[0].energy_int * _args[0].energy_mod>>
<<set _dpercent to _args[0].dmg_mod * 100>>
<<set _imp_atk to Math.trunc(_args[0].cur_atk * _args[0].portal_atk)>>
<<set _imp_sex to Math.trunc(_args[0].cur_atk * _args[0].portal_sex)>>
<<set _percent to _args[0].portal_atk * 100>>
<<set _args[0].description to "Each Raider faces a @@.trap;<<hovertip '@@.trap;100% Trapcheck@@'>>"+_args[0].cur_check+"<</hovertip>> Arcane Trapcheck@@ as they near the Summoning Circle etched in the ground. If a Raider fails her @@.trap;Trapcheck@@, Tentacles spawn from the circle and deal @@.phy;<<hovertip '@@.mag;_apercent% Magical Attack@@'>>"+_patk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.mag;_spercent% Magical Attack@@'>>"+_satk+"<</hovertip>> Sexual@@ damage to each Raider, increased by "+_dpercent+"% for each failed @@.trap;Trapchecks@@ after the first. The Summoning Circle gains "+_args[0].energy_int+" Energy for each Raider attacked, or "+_capEnergy+" Energy if they are Captured. If the Summoning Circle has "+_args[0].portal_int+" or more Energy, it spends "+_args[0].portal_int+" Energy to summon a portal, releasing an army of Imps to attack all Raiders outside of the Dungeon. Imps deal @@.phy;<<hovertip '@@.mag;_percent% Magical Attack@@'>>"+_imp_atk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.mag;_percent% Magical Attack@@'>>"+_imp_sex+"<</hovertip>> Sexual@@ damage and have the Gangbang and "+_args[0].fetish_int+" other random Fetishes. If there are no Raiders outside the Dungeon to attack, they Capture "+_args[0].capture_int+" Raiders from the Town instead. Raiders Captured by Imps do not generate Energy.">>
<</switch>>
<<case "Wooden Horse">>
WOODEN HORSE
<<switch _args[0].mode>>
<<default>>
<<set _patk to Math.trunc(_args[0].cur_atk * _args[0].atk_float)>>
<<set _apercent to _args[0].atk_float * 100>>
<<set _satk to Math.trunc(_args[0].cur_sex * _args[0].sex_float)>>
<<set _spercent to _args[0].sex_float * 100>>
<<set _tint to Math.trunc(_args[0].trapcheck_float * _args[0].cur_check)>>
<<set _tpercent to _args[0].trapcheck_float * 100>>
<<set _args[0].description to "Each Raider in the party faces a @@.trap;<<hovertip '@@.trap;100% Trapcheck@@'>>"+_args[0].cur_check+"<</hovertip>> Captive Trapcheck@@ as they move over the Wooden Horse trap. The first two Raiders who fail their @@.trap;Trapcheck@@ becomes trapped on the Wooden Horse, taking @@.phy;<<hovertip '@@.phy;_apercent% Physical Attack@@'>>"+_patk+"<</hovertip>> Physical@@ damage and @@.sex;<<hovertip '@@.sex;_spercent% Sexual Attack@@'>>"+_satk+"<</hovertip>> Sexual@@ damage, then has a "+_args[0].percent+"% chance to become <<hovertip '<<print setup.wet.tooltip>>'>>Wet<</hovertip>>, <<hovertip '<<print setup.perverted.tooltip>>'>>Perverted<</hovertip>>, or gain the <<hovertip '<<print setup.masochist .tooltip>>'>>Masochist <</hovertip>> Trait, increased to "+_args[0].bonus_percent+"% if her @@.lust;Lust@@ is greater or equal to @@.lust;"+_args[0].lust_percent+"%@@ filled. Each Raider on the Wooden Horse continues to face the same @@.trap;Trapcheck@@, reduced by @@.trap;<<hovertip '@@.trap;_tpercent% Trapcheck@@'>>"+_tint+"<</hovertip>>@@ each time, until she passes one or fails four times, not including the initial @@.trap;Trapcheck@@. While two Raiders are on the Wooden Horse, it has the Lesbian Fetish. This Trap cannot Capture Raiders.">>
<</switch>>
<</switch>>
<</widget>><<silently>>\
* SETUP ROOM *
<<set _summon to clone($summon)>>
<<set _spell_index to clone($spell_index)>>
<<set _target to clone($spell_targeting)>>
<<unset $summon, $target, $spell_index>>
<<SummonRoomSetup $raiders _summon>>
* SETUP RAIDER *
<<RaiderSetup $raiders _summon>>
* PRE COMBAT EFFECTS *
<<PreCombat $raiders _summon>>
* DANCER BUFF *
<<for _i = 0; _i < $raiders.length; _i++>>
<<if $raiders[_i].class === "Dancer">>
<<DancerBuff $raiders[_i] _summon>>
<</if>>
<</for>>
* RAIDERS ATTACK *
<<for _i = 0; _i < $raiders.length; _i++>>
<<RaiderAttack $raiders[_i] _summon>>
<</for>>
* CREATURE NORMAL & SEXUAL ATTACK *
<<set $raiders[_target].attacked to true>>
<<for _i = 0; _i < $raiders.length; _i++>>
$raiders[_i].attacked
<<if $raiders[_i].attacked === true>>
<<NormalAttack $raiders[_i] _summon _summon.atk>>
<<SexualAttack $raiders[_i] _summon _summon.sex>>
POISONED GAINED
<<set _poisoned_stacks to (Math.trunc($raiders[_i].dmg_taken * _summon.poisoned_float)).clamp(0, _summon.cap)>>
<<if _poisoned_stacks > 0>>
<<AddStacks $raiders[_i] setup.poisoned _poisoned_stacks true>>
FIND POISONED GAINED FOR REPORT
<<if $raiders[_i].status_names.includes("Poisoned")>>
<<for _s = 0; _s < $raiders[_i].statuses.length; _s++>>
<<if $raiders[_i].statuses[_s].id === setup.poisoned.id>>
<<set _poisoned_gained to $raiders[_i].statuses[_s].gain>>
<<break>>
<</if>>
<</for>>
<</if>>
<</if>>
AROUSED GAINED
<<set _aroused_stacks to (Math.trunc(($raiders[_i].cur_lust + $raiders[_i].sex_taken) * _summon.aroused_float)).clamp(0, _summon.cap)>>
<<if _aroused_stacks > 0>>
<<AddStacks $raiders[_i] setup.aroused _aroused_stacks true>>
FIND AROUSED GAINED FOR REPORT
<<if $raiders[_i].status_names.includes("Aroused")>>
<<for _s = 0; _s < $raiders[_i].statuses.length; _s++>>
<<if $raiders[_i].statuses[_s].id === setup.aroused.id>>
<<set _aroused_gained to $raiders[_i].statuses[_s].gain>>
<<break>>
<</if>>
<</for>>
<</if>>
<</if>>
UPDATE RAIDER REPORT
<<if _text_triggers.status.poisoned.includes($raiders[_i].index) && _text_triggers.status.aroused.includes($raiders[_i].index)>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage and gained "+_poisoned_gained+" Poison and "+_aroused_gained+" Aroused.">>
<<elseif _text_triggers.status.poisoned.includes($raiders[_i].index)>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage and gained "+_poisoned_gained+" Poison.">>
<<elseif _text_triggers.status.aroused.includes($raiders[_i].index)>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage and gained "+_aroused_gained+" Arouse.">>
<<else>>
<<set _entry to "She took @@.phy;"+$raiders[_i].dmg_taken+"@@ and @@.sex;"+$raiders[_i].sex_taken+"@@ damage.">>
<</if>>
<<set _lastLog to $raiders[_i].report.log.pop()>>
<<set _lastLog.entry.push(clone(_entry))>>
<<set $raiders[_i].report.log.push(_lastLog)>>
<</if>>
<</for>>
* POST COMBAT EFFECTS *
<<for _r = 0; _r < $raiders.length; _r++>>
<<PostCombat $raiders[_r] _summon>>
<</for>>
* CHOOSE RAIDER PICTURES *
SETUP RAIDER PICS ARRAY
<<set _picArray to clone(_summon.raider_pics)>>
<<for _i = 0; _i < $raiders.length; _i++>>
* Attacked Pictures *
<<if $raiders[_i].attacked === true>>
<<set $raiders[_i].pic to _picArray[$raiders[_i].body_type].pluck()>>
<</if>>
<</for>>
* CREATURE EXP & DAMAGE *
<<CreaturePostCombat $raiders _summon>>
* END OF COMBAT REPORT *
<<PostCombatReport $raiders _summon>>
* CLEAN UP *
<<CleanUp $raiders _summon>>
* DISPLAY INFO *
<<set _cardholderID to "cardholder-raid-"+$raiders.length+"raiders">>
<<set _cardinfoID to "cardinfo-raid-"+$raiders.length+"raiders">>
<<set _picboxID to "picbox-raid-"+$raiders.length+"raiders">>
<<set _textboxID to "textbox-raid-"+$raiders.length+"raiders">>
<</silently>>\
<div class="section">\
<<NextSpellButton>>\
<div class="cardholder-raid-playerside">\
<div class="cardinfo-raid-summon">\
<div class="roomtitle-raid-player">\
Between Floors
</div>\
<div class="picbox-raid-player">\
_room_image
</div>\
<div class="namebox-raid-player">\
<strong>_summon.name</strong>
---- Health: _summon.cur_hp / _summon.max_hp ----
</div>\
<div class="textbox-raid-player">\
<ul>\
<<CreatureRoomText _summon>>
<<BlessingTriggerText _summon>>
<<EffectEndingText _summon>>
</ul>\
</div>\
</div>\
</div>\
<div class="cardholder-raid-raiderside">\
<<for _r = 0; _r < $raiders.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_textboxID">\
<ul>\
<<RaiderAtkText $raiders[_r] _summon>>\
<<if $raiders[_r].attacked === true>>\
<li>The Snake slithered around her body and sunk its fangs into her, dealing @@.phy;$raiders[_r].dmg_taken Physical@@ damage and @@.sex;$raiders[_r].sex_taken Sexual@@ damage to her.</li>\
<<RaiderFetishText $raiders[_r] _summon>>
<</if>>\
<<PostCombatText $raiders[_r] _summon>>
</ul>\
</div>\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\
<<if $spell_targeting === true>>\
<<silently>>\
*Variables*
<<set _spell_percent_list to []>> Holds all the spell percent for each raider
* Setup Raiders *
<<RaiderSetup $raiders>>
*Calc Percent for each Raider*
<<for _i = 0; _i < $raiders.length; _i++>>
<<set _spell_percent_list.push(0)>>
<</for>>
* Display Info *
<<set _cardholderID to "cardholder-"+$raiders.length+"girls">>
<<set _cardinfoID to "cardinfo-"+$raiders.length+"girls">>
<<set _picboxID to "picbox-"+$raiders.length+"girls">>
<<set _textboxID to "textbox-"+$raiders.length+"girls">>
<<set _linkboxID to "linkbox-targeting-"+$raiders.length+"girls">>
<</silently>>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|View Spells]]>><<unset $mana_cost, $spell_index>><</button>></span>
</div>\
<div class="titlebox">\
Choose a Target
</div>\
<<for _r = 0; _r < $raiders.length; _r++>>\
<<set _hotKey to _r + 1>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_picboxID">\
$raiders[_r].pic
</div>\
<div @class="_textboxID">\
Name: $raiders[_r].name
Class: $raiders[_r].subclass.name $raiders[_r].class
Role: $raiders[_r].role
Traits: <<for _i = 0; _i < $raiders[_r].traits.length; _i++>>\
<<if $raiders[_r].traits[_i].type === "Special">>\
<span style="color:gold"><<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>></span><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<<else>>\
<<hovertip "$raiders[_r].traits[_i].type: $raiders[_r].traits[_i].tooltip">>$raiders[_r].traits[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].traits.length>>, <</if>>\
<</if>>\
<</for>>
Kinks: <<if $raiders[_r].kinks.length === 0>>None<<else>>$raiders[_r].kinks<</if>>
Turn-Offs: <<if $raiders[_r].turnoffs.length === 0>>None<<else>>$raiders[_r].turnoffs<</if>>
Statuses: <<if $raiders[_r].statuses.length == 0>>\
None
<<else>>\
<<for _i = 0; _i < $raiders[_r].statuses.length; _i++>>\
<<hovertip "$raiders[_r].statuses[_i].tooltip">>$raiders[_r].statuses[_i].name<</hovertip>><<if _i + 1 < $raiders[_r].statuses.length>>, <</if>><</for>><</if>>
</div>\
</div>\
<div @class="_linkboxID">\
<<set _color to "neutral">>\
Spank Effect Chance: <span @class="_color">N/A</span> \
<<if $raiders[_r].cur_hp === 1 && $raiders[_r].cur_lust === $raiders[_r].max_lust - 1 && _spell_percent_list[_r] === 0>>\
<div class="offbutton">\
<<hovertip "Will have no effect">><<button "Target Raider">><</button>><</hovertip>>
</div>\
<<else>>\
<<capture _r, _hotKey>>\
<span @id="_hotKey"><<button "Target Raider ^^_hotKey^^" $pc_spellbook[$spell_index].passage>><<unset $spell_targeting>><<set $target to _r>><<set $spell_percent to _spell_percent_list[_r]>><</button>></span>
<</capture>>\
<</if>>\
</div>\
</div>\
<</for>>\
<<else>>\
<<silently>>\
* Setup Spell Variable *
OVERLOAD SPELL
<<if $overloadSpellBool === true>>
<<set $pc_spellbook[$spell_index].cur_dmg += (Math.round($pc_spellbook[$spell_index].cur_dmg * setup.blessing_02_12.float)).clamp(1, 1000000)>>
<<set $pc_spellbook[$spell_index].cur_sex += (Math.round($pc_spellbook[$spell_index].cur_sex * setup.blessing_02_12.float)).clamp(1, 1000000)>>
<</if>>
* Setup Raiders *
<<RaiderSetup $raiders>>
CASTING SPELL WIDGET
<<CastingSpell $pc_spellbook[$spell_index] $mana_cost>>
CREATE NEW SPELL VARIABLE
<<set _spellStats to setup.newSpell>>
UPDATE VARIABLE
<<set _spellStats.name to $pc_spellbook[$spell_index].name>>
<<set _spellStats.cast to $pc_spellbook[$spell_index].cast>>
<<set _spellStats.attack_type to "Physical">>
<<set _spellStats.mana to $mana_cost>>
<<set _spellStats.percent to $spell_percent>>
<<set _spellStats.fetishes to $pc_spellbook[$spell_index].fetishes>>
<<set _spellStats.dmg to $pc_spellbook[$spell_index].cur_dmg>>
<<set _spellStats.sex to $pc_spellbook[$spell_index].cur_sex>>
<<set _spellStats.pic to $pc_spellbook[$spell_index].img>>
* Attack Count *
<<set _atkNum to random($pc_spellbook[$spell_index].min_atk, $pc_spellbook[$spell_index].max_atk)>>
* Spank Raider *
<<for _a = 1; _a <= _atkNum; _a++>>
PHYSICAL DAMAGE
<<NormalAttack $raiders[$target] _spellStats _spellStats.dmg>>
SEXUAL DAMAGE
<<SexualAttack $raiders[$target] _spellStats _spellStats.sex>>
<</for>>
POST COMBAT
<<PostCombat $raiders[$target] _spellStats>>
SET PIC ARRAY
<<set _picArray to clone($pc_spellbook[$spell_index].raider_pics)>>
<<set _pic to _picArray[$raiders[$target].body_type].random()>>
UPDATE REPORT
<<set _entry to "She took @@.phy;"+$raiders[$target].dmg_taken+"@@ and @@.sex;"+$raiders[$target].sex_taken+"@@ damage from your Telekinetic Spank Spell.">>
<<set _lastLog to $raiders[$target].report.log.pop()>>
<<set _lastLog.entry.push(_entry)>>
<<set $raiders[$target].report.log.push(_lastLog)>>
* DISPLAY INFO *
<<set _raiderTargetArray to []>>
<<set _raiderTargetArray.push($raiders[$target])>>
<<set _cardholderID to "cardholder-raid-"+_raiderTargetArray.length+"raiders">>
<<set _cardinfoID to "cardinfo-raid-"+_raiderTargetArray.length+"raiders">>
<<set _picboxID to "picbox-raid-"+_raiderTargetArray.length+"raiders">>
<<set _textboxID to "textbox-raid-"+_raiderTargetArray.length+"raiders">>
<</silently>>\
<div class="section">\
<<NextSpellButton>>\
<div class="cardholder-raid-playerside">\
<div class="cardinfo-raid-spell">\
<div class="roomtitle-raid-player">\
$pc_name Attacks
</div>\
<div class="picbox-raid-player">\
_spellStats.pic
</div>\
<div class="namebox-raid-player">\
<span style="font-size: 125%;"><strong>_spellStats.name</strong></span>
---- Spellcheck: $pc_spellbook[$spell_index].cur_check ----
</div>\
<div class="textbox-raid-player">\
<ul>\
<<SpellRoomText _spellStats>>
</ul>\
</div>\
</div>\
</div>\
<div class="cardholder-raid-raiderside">\
<<for _r = 0; _r < _raiderTargetArray.length; _r++>>\
<div @class="_cardholderID">\
<div @class="_cardinfoID">\
<div @class="_textboxID">\
<ul>\
<li>She was spanked _atkNum times, taking @@.phy;_raiderTargetArray[_r].dmg_taken Physical@@ damage and @@.sex;_raiderTargetArray[_r].sex_taken Sexual@@ damage.</li>\
<<RaiderFetishText _raiderTargetArray[_r] _spellStats>>
<<PostCombatText _raiderTargetArray[_r] _spellStats>>
</ul>\
</div>\
<div @class="_picboxID">\
_pic
</div>\
</div>\
</div>\
<</for>>\
</div>\
</div>\
<</if>>\<<if $missionLog.anna.num === 0>>\
<<silently>>\
* Variables *
<<set $missionName to setup.annaMisLine[$missionLog.anna.num].name>>
<<if !$reward_page>>
<<set $reward_page to 1>>
<</if>>
* Display *
<</silently>>\
<<switch $reward_page>>\
<<case 1>>\
<div class="section">\
<div class="titlebox">\
$missionName
</div>\
<div class="picbox-intro">\
[img[images/town/anna/body_0.jpg]]
</div>\
<div class="textbox-intro">\
As you enter the Slave Market with the Descendant hidden under a cloak, Anna spots you both and quick comes to greet you.
@@.npc-dialogue;Hey rookie, you sure you caught her?@@
@@.pc-dialogue;Almost positive, I've never seen a woman with scales, horns, and a tail like this before.@@
@@.npc-dialogue;Let's go to the back and I'll have a look. Hopefully you didn't hurt her that much.@@
@@.pc-dialogue;She's still walking right?@@
Anna glares at you and leads you and the Descendant through the crowd and to the door leading behind the stage where the available slaves are showcased. Once inside, you go a little further until you find yourself in a private office.
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[Next|Anna Reward]]>><<set $reward_page++>><</button>></span>
</div>\
</div>\
<<case 2>>\
<div class="section">\
<div class="titlebox">\
$missionName
</div>\
<div class="picbox-intro">\
[img[images/town/anna/body_1.jpg]]
</div>\
<div class="textbox-intro">\
Anna removes the cloak from the Descendant. She nods to you, confirms that this was indeed the runaway slave, then sighs in relief.
@@.npc-dialogue;You had me worried, you know? Your Queen and I have a deal. She buys any Descendants that I get, and in return, I keep them protected from all the men and monsters while they're in my custody.@@
The Descendant looked down. It appears she thought her fate was going to be worse than it was, which was probably why she escaped.
@@.npc-dialogue;I'm glad you're safe though and nothing happened to you.@@
She looked at you and then back at Anna, but did not speak.
@@.pc-dialogue;Who is this queen?@@
@@.npc-dialogue;You're joking right? You really are a rookie in more ways than one.@@
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Anna Reward]]>><<set $reward_page-->><</button>></span> <span id="forward"><<button [[Next|Anna Reward]]>><<set $reward_page++>><</button>></span>
</div>\
</div>\
<<case 3>>\
<div class="section">\
<div class="titlebox">\
$missionName
</div>\
<div class="picbox-intro">\
[img[images/descendant/queen/body_0.jpg]]
</div>\
<div class="textbox-intro">\
Anna dug through some papers and pulled out a drawing of a different Descendant woman. Her features were soft and welcoming. Despite her beautiful appearance, you can tell she has incredible power and is not to be trifled with. The other Descendant bows her head, showing respect even if it is only a painting of her Queen.
@@.npc-dialogue;This is their current Queen, who lives in their homeland to the east. Descendants are a prideful and strong race, and the Queen is no exception. She looks over her kindred, even if they are outside the kingdom, and protects them from all the terrible things monsters and men are capable of.@@
The Descendant looks at you and blushes. You hope she doesn't tell the Queen about what happened in your dungeon or between you two. If you had known sooner, you would have shown more restraint, probably. Nah, it was definitely worth it. Besides, you don't even know if she is capable of speaking as you still never hear come from her mouth other than moans.
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Anna Reward]]>><<set $reward_page-->><</button>></span> <span id="forward"><<button [[Next|Anna Reward]]>><<set $reward_page++>><</button>></span>
</div>\
</div>\
<<case 4>>\
<div class="section">\
<div class="titlebox">\
$missionName
</div>\
<div class="picbox-intro">\
[img[images/town/anna/body_3.jpg]]
</div>\
<div class="textbox-intro">\
@@.npc-dialogue;You look awful proud of yourself rookie, anything you want to share?@@
@@.pc-dialogue;Hell no.@@
@@.npc-dialogue;You're lucky she wasn't a virgin, otherwise I'd kill you myself and save the Queen the trouble.@@
@@.pc-dialogue;Oh...@@
@@.npc-dialogue;Since you seem to be good at capturing adventurers, why don't we make a deal? I'll buy any captured adventurers for a fair price after your raids. You earn some extra gold and I have a new supplier for slaves. To avoid suspicion though, I'll only buy one a night and will only keep her until the next day. What do you say?@@
@@.pc-dialogue;Do I have a choice?@@
@@.npc-dialogue;Do you want to live?@@
@@.pc-dialogue;I think we have a deal.@@
@@.npc-dialogue;Good call rookie. You should leave now before you get into more trouble.@@
<div class="text-center-bold">Anna didn't kill you and you got a new Blessing: <<hovertip '<<- setup.annaMisLine[$missionLog.anna.num].blessing_reward.tooltip>>'>>@@.special;<<- setup.annaMisLine[$missionLog.anna.num].blessing_reward.name>>@@<</hovertip>></div>
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Anna Reward]]>><<set $reward_page-->><</button>></span> <span id="forward"><<button [[Next|Town Menu]]>><<set $pc_blessing_list.push(setup.annaMisLine[$missionLog.anna.num].blessing_reward.name)>><<set $missionLog.anna.num++>><<set $missionLog.anna.unlocked to false>><<set $missionLog.anna.started to false>><<set $missionLog.anna.completed to false>><<set $missionLog.anna.int to 0>><<unset $reward_page, $missionName>><</button>></span>
</div>\
</div>\
<</switch>>\
<</if>>\<<if $missionLog.sara.num === 0>>\
<<silently>>\
* Variables *
<<set $missionName to setup.saraMisLine[$missionLog.sara.num].name>>
<<if !$reward_page>>
<<set $reward_page to 1>>
<</if>>
* Display *
<</silently>>\
<<switch $reward_page>>\
<<case 1>>\
<div class="section">\
<div class="titlebox">\
$missionName
</div>\
<div class="picbox-intro">\
[img[images/town/sara/body_0.jpg]]
</div>\
<div class="textbox-intro">\
You head to the Treasure Shop to let Sara know you finished her request. To your surprise, you find her outside waiting for you.
@@.npc-dialogue;Oyyy matey! I was wondering when ya would turn up. I heard ya chased off the pirates for me.@@
@@.pc-dialogue;It was surprisingly simple, but I'm not complaining. How are things now with the new trade route open?@@
She stood up and started walking inside her shop.
@@.npc-dialogue;Come take a look for ya self.@@
</div>\
<div class="exit-link-right">\
<span id="forward"><<button [[Next|Sara Reward]]>><<set $reward_page++>><</button>></span>
</div>\
</div>\
<<case 2>>\
<div class="section">\
<div class="titlebox">\
$missionName
</div>\
<div class="picbox-intro">\
[img[images/town/sara/body_2.jpg]]
</div>\
<div class="textbox-intro">\
She takes you to the back of her shop and lets you take a look at her storage. It was filled to the brim with gold coins, so much that you could barely see the floor.
@@.pc-dialogue;You already made this much gold from just having a new trade route?@@
@@.npc-dialogue;Hehe nooooo, I had this from before. But soon I will have even more coin from all the gold I be savin on this new route. As the one who opened this route for me, I'll give you a special discount on any Treasure ya want, and there will be plenty more to pick from too!@@
@@.pc-dialogue;So I don't get any of this gold?@@
@@.npc-dialogue;Absolutely not.@@
@@.pc-dialogue;Fine, I guess I got some gold from the Guild that you put down for the quest. I feel like you could have done this yourself and saved your gold. Didn't you use to be a pirate?@@
@@.npc-dialogue;Aye, but I can't be in open waters since it still be out there.@@
@@.pc-dialogue;What's out there?@@
@@.npc-dialogue;The Kraken...@@
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Sara Reward]]>><<set $reward_page-->><</button>></span> <span id="forward"><<button [[Next|Sara Reward]]>><<set $reward_page++>><</button>></span>
</div>\
</div>\
<<case 3>>\
<div class="section">\
<div class="titlebox">\
$missionName
</div>\
<div class="picbox-intro">\
[img[images/town/sara/body_3.jpg]]
</div>\
<div class="textbox-intro">\
You chuckle, but Sara's look is serious and full of fear.
@@.pc-dialogue;Why are you so afraid of this Kraken? I'm sure you have seen a fair share of sea monsters while you were a pirate.@@
@@.npc-dialogue;The Kraken is different. Legend says the Kraken will choose one woman to be the queen of the sea. Once it has found someone, it will stalk them around the ocean, waiting for its chance to steal her away.@@
@@.pc-dialogue;And you think you are that someone?@@
@@.npc-dialogue;Aye, I know it! It chased my ship for three days until it finally caught us.@@
@@.pc-dialogue;What happened?@@
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Sara Reward]]>><<set $reward_page-->><</button>></span> <span id="forward"><<button [[Next|Sara Reward]]>><<set $reward_page++>><</button>></span>
</div>\
</div>\
<<case 4>>\
<div class="section">\
<div class="titlebox">\
$missionName
</div>\
<div class="imagebox">\
[img[images/town/sara/sex_0.jpg]]
</div>\
<div class="textbox-center">\
She sits down and starts explaining how the Kraken used her body to pleasure its tentacles over two days after dispatching her crew. She described what it did to her in great detail, with her fear turning into arousal. While it was fascinating to listen to, you weren't sure how much of it was real. This world sure is strange if giant sea creatures stalk their favorite pirate, although you don't blame it for choosing Sara. She has a fantastic body. After about another hour of vivid detail, going into how each of the Kraken's eight tentacles was violating her, she excused herself as she walked awkwardly to the back of her shop. You decided to take your leave and let her take care of business. You'll have to remember to ask how she got away next time.
<div class="text-center-bold">You gained @@.le;<<- setup.annaMisLine[$missionLog.anna.num].lust_reward>> Lust Essence@@ and you got a new Blessing: <<hovertip '<<- setup.saraMisLine[$missionLog.sara.num].blessing_reward.tooltip>>'>>@@.special;<<- setup.saraMisLine[$missionLog.sara.num].blessing_reward.name>>@@<</hovertip>></div>
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Back|Sara Reward]]>><<set $reward_page-->><</button>></span> <span id="forward"><<button [[Next|Town Menu]]>><<set $pc_blessing_list.push(setup.saraMisLine[$missionLog.sara.num].blessing_reward.name)>><<set $missionLog.sara.num++>><<set $missionLog.sara.unlocked to false>><<set $missionLog.sara.started to false>><<set $missionLog.sara.completed to false>><<set $missionLog.sara.int to 0>><<unset $reward_page, $missionName>><</button>></span>
</div>\
</div>\
<</switch>>\
<</if>>\<<silently>>
*Variables*
<<if !$page>>
<<set $page to 1>>
<</if>>
*Display*
<</silently>>
<<switch $page>>
<<case 1>>
<div class="wrapper">
<div class="titlebox">
Dungeon Rank
</div>
<div class="guidebook-titlebox">
</div>
<div class="guidebook-textbox">
Your Dungeon's Rank is recognized by the Town and determines many factors about your Dungeon and the Raiders who come to your Dungeon. As your Rank increases, you will be able to build more Floors, allowing more Creatures and Traps to guard your Vault. You will also have access to new Creature and Traps from the Goddess, more services from the Town, and new Jobs for your Slaves. Depending on your Rank, only a couple different Rank of Raiders will be allowed to Raid your Dungeon, which of those Ranks will show up depends on your Threat. Higher-Ranked Dungeons also have more Raiders Raid each night.<br>
<br>
To Rank Up, you will need to reach the Reputation Milestone for your current Rank. Once you reach that amount, you can Rank Up from your Quarters, even if you lose @@.rep;Reputation@@ after. This will give you access to more tools, but also increase the number and difficulty of Raiders. The best practice is to make sure you have enough @@.gold;Gold@@ and @@.le;Lust Essence@@ before Ranking Up so you can utilize all the new things you unlocked before that night's Raid.<br>
<br>
After Ranking Up, your @@.rep;Reputation@@ will be set to 0 and your Threat will be halved. Your level cap will increase by 10, your Creatures' level cap by 5,and your Traps' Rank by 1.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Threat]]>><<set $page to 3>><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Raids]]>><<set $page to 1>><</button>></span>
</div>
</div>
<</switch>>Double-click this passage to edit it.<<silently>>
*Variables*
<<if !$page>>
<<set $page to 1>>
<</if>>
*Display*
<</silently>>
<<switch $page>>
<<case 1>>
<div class="wrapper">
<div class="titlebox">
Creatures
</div>
<div class="guidebook-titlebox">
</div>
<div class="guidebook-textbox">
Creatures are one of the two types of Units you can assign inside your Dungeon. They protect your Vault by battling any Raiders who enter their Floor. You can There are 4 different types of Creatures and each Creature can be Upgraded into a stronger form.
</div>
<div class="wrapper-guidebook-table">
<div class="guidebook-header">
Creature Chapters
</div>
<div class="guidebook-smalltable">
<ol>
<li><<link [[Unlocking Creatures|Creatures]]>><<set $page to 2>><</link>></li>
<li><<link [[Using Creatures|Creatures]]>><<set $page to 3>><</link>></li>
<li><<link [[Upgrading Creatures|Creatures]]>><<set $page to 4>><</link>></li>
</ol>
</div>
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Raiders]]>><<set $page to 5>><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Creatures]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 2>>
<div class="wrapper">
<div class="titlebox">
Creatures
</div>
<div class="guidebook-titlebox">
Unlocking Creatures
</div>
<div class="guidebook-textbox">
Before you can assign a Creature to a Floor, you will need to learn how to Summon it. This can be done in Ahri's Quarters, which is located in Amenities. Learning new Creatures costs @@.le;Lust Essence@@, but once learned, it doesn't cost anything to Summon it and assign it to your Dungeon, even after removing it from your Dungeon. As you increase your Dungeon Rank and relation with Ahri, more Units will become available. Don't be afraid to experiment and try new Creatures. If you remove a Creature from a Floor, it will have the same EXP and Level the next time you Summon it, but will be in its base form.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Creatures]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Creatures]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 3>>
<div class="wrapper">
<div class="titlebox">
Creatures
</div>
<div class="guidebook-titlebox">
Using Creatures
</div>
<div class="guidebook-textbox">
Creatures are reliable and come in many forms. To assign a Creature to your Dungeon, go to the Dungeon Manager and open an Empty Floor. Then, choose the Creature you want to assign to that Floor. During Raids, the Creature will battle any Raiders they Encounter during Raids to protect your Vault. They gain EXP from battling Raiders, increased if they Capture any of them. As they gain levels, they grow stronger and can Upgrade once they reach a certain level. Their level is capped at 5 and increases by 5 each time you Rank Up your Dungeon. They are generally stronger than Traps and any Creature is capable of Capturing Raiders. Be careful though, if your Creature's @@.health;Health@@ reaches 0 during an Encounter, they won't be able to fight anyone else until the next day.<br>
<br>
Creatures can be one of four types. Note that these descriptions don't cover everything and are a generalization.<br>
<ul>
<li><u>Beasts</u>: These are powerful Creatures with high @@.health;Health@@ and @@.phy;Physical@@ Attack stats, making them great in combat. Most Beasts don't inflict any Statuses.</li>
<li><u>Humanoids</u>: They use powerful effects to inflict Statuses and turn the battle in their favor. If their tactic doesn't work against the Raiders, they won't last very long in your Dungeon.</li>
<li><u>Insects</u>: These Creatures like to Impregnate Raiders or use venom to inflict Statuses. They can be very durable because of their abnormal size or large swarms, but don't have much offensive power on their own.</li>
<li><u>Monsters</u>: They have more @@.sex;Sexual@@ Attack and Fetishes then most Creatures. Their focus on @@.sex;Sexual@@ damage makes them weak against Raiders who have a high @@.toler;Tolerance@@ or have a Turn-Off that is one of their Fetishes.</li>
</ul>
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Creatures]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Creatures]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 4>>
<div class="wrapper">
<div class="titlebox">
Creatures
</div>
<div class="guidebook-titlebox">
Upgrading Creatures
</div>
<div class="guidebook-textbox">
Once a Creature has reached a certain Level, it will be able to Upgrade into one of three options. These Upgrades improve the Creature's stats and can have a variety of other benefits. To Upgrade one of your Creatures, open the Dungeon Manager and go to its Floor. Then, open Upgrade, choose one of the three choices and confirm. You can Upgrade during a Raid, which will fully heal the Creature as well! If you don't like the Upgrade you picked later, you can remove the Creature from the Floor and Summon it again. It will have the same EXP and Level as before but will be Summoned in its base form.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Creatures]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Traps]]>><<set $page to 1>><</button>></span>
</div>
</div>
<</switch>><<silently>>
*Variables*
<<if !$page>>
<<set $page to 1>>
<</if>>
*Display*
<</silently>>
<<switch $page>>
<<case 1>>
<div class="wrapper">
<div class="titlebox">
Traps
</div>
<div class="guidebook-titlebox">
</div>
<div class="guidebook-textbox">
Traps are one of the two types of Units you can assign inside your Dungeon. Traps can be very different from one another in terms of how they function and their role, unlike Creatures. There are 4 types of Traps and most Traps can change between multiple modes.
</div>
<div class="wrapper-guidebook-table">
<div class="guidebook-header">
Trap Chapters
</div>
<div class="guidebook-smalltable">
<ol>
<li><<link [[Unlocking Traps|Traps]]>><<set $page to 2>><</link>></li>
<li><<link [[Using Traps|Traps]]>><<set $page to 3>><</link>></li>
<li><<link [[Trap Modes|Traps]]>><<set $page to 4>><</link>></li>
</ol>
</div>
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Creatures]]>><<set $page to 4>><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Traps]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 2>>
<div class="wrapper">
<div class="titlebox">
Traps
</div>
<div class="guidebook-titlebox">
Unlocking Traps
</div>
<div class="guidebook-textbox">
Before you can assign a Trap to a Floor, you will need to learn how to Construct it. This can be done in Ahri's Quarters, which is located in Amenities. Learning new Traps costs @@.le;Lust Essence@@, but once learned, it doesn't cost anything to Construct and assign it to your Dungeon, even after removing it from your Dungeon. As you increase your Dungeon Rank and relation with Ahri, more Units will become available. Your Traps' Ranks are always the same as your Dungeon Rank, so you can try using a new Trap anytime.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Traps]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Traps]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 3>>
<div class="wrapper">
<div class="titlebox">
Traps
</div>
<div class="guidebook-titlebox">
Using Traps
</div>
<div class="guidebook-textbox">
Traps are powerful tools that have many unique effects. They require to be triggered before they can affect the party, making them less reliable than Creatures. Not all Traps are capable of Capturing Raiders either, making them more situational. Despite these conditions, Traps can deal a lot of damage or inflict Statues, often to multiple Raiders. It is best to read the Trap's description to understand how best to use it in your Dungeon.<br>
<br>
Traps can be one of four types. Note that these descriptions don't cover everything and are a generalization.<br>
<ul>
<li><u>Hidden</u>: They are concealed from view and have high @@.trap;Trapchecks@@ or multiple @@.trap;Trapchecks@@. They often affect the whole party, but are unable to Capture Raiders.</li>
<li><u>Obstacle</u>: They involve some deterrent that impedes the Raiders' progress, sometimes forcing all Raiders to make @@.trap;Trapchecks@@. While they might have many @@.trap;Trapchecks@@, they often aren't very difficult.</li>
<li><u>Arcane</u>: They either use @@.spell;Spellchecks@@ to trigger or deal @@.mag;Magical@@ damage. These can be very powerful effects, but often only affect a single Raider.</li>
<li><u>Captive</u>: Their design lets them detain Raiders who fail their @@.trap;Trapcheck@@, allowing them to deal a lot of damage. They have a high @@.trap;Trapcheck@@, but rely on only having one or a couple of chances to catch their target.</li>
</ul>
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Traps]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Traps]]>><<set $page++>><</button>></span>
</div>
</div>
<<case 4>>
<div class="wrapper">
<div class="titlebox">
Traps
</div>
<div class="guidebook-titlebox">
Trap Modes
</div>
<div class="guidebook-textbox">
Traps often have multiple Modes they can be set to. A Mode can change the amount of damage it deals, Status conditions, number of Raiders it affects, and more. Most Traps can even change Modes during the Raid, making them more flexible. To change the Trap's Mode, go to the Dungeon Manager and the Trap's Floor. Then, open the Modes and select the Mode you wish to use. Be sure to read each Mode's description carefully in order to best utilize it. You can change a Trap's Mode as many times as you like.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Traps]]>><<set $page-->><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Spells]]>><<set $page to 1>><</button>></span>
</div>
</div>
<</switch>>Double-click this passage to edit it.Double-click this passage to edit it.Double-click this passage to edit it.Double-click this passage to edit it.Double-click this passage to edit it.<<if $visited_forge === false && $tutorial_guides === true>>\
<<silently>>\
* Variables *
<<set $visited_forge to true>>
* Dialogue Bools *
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Dragonscale Forge
</div>\
<div class="dialogue-container">\
<div class="dialogue-box">\
<div class="dialogue-pic">\
[img[images/town/twins/face_0.jpg]]
</div>\
<div class="dialogue-text">\
DRAGONSCALE FORGE TUTORIAL PLACEHOLDER
</div>\
</div>\
<div class="dialogue-buttonbox">\
<div class="dialogue-3buttons">\
</div>\
<div class="dialogue-3buttons">\
<div class="dialogue-buttonholder">\
<div class="titlebutton">\
<span id="forward"><<button [[Continue|Dragonscale Forge]]>><</button>></span>
</div>\
</div>\
</div>\
<div class="dialogue-3buttons">\
</div>\
</div>\
</div>\
</div>\
<<else>>\
<<silently>>\
* Variables *
<<if !$missionLog.twins>>
<<set $missionLog.twins = {
num: "",
unlocked: false,
started: false,
completed: false,
int: 0
}>>
<</if>>
* Set First Quest *
<<if $missionLog.twins.num === "">>
<<set $missionLog.twins.num to 0>>
<</if>>
* Shopkeeper Dialogue *
<<if $took_creature_bool === true>>
<<set _dialogue to "You're taking your $took_name back? So soon? Well, feel free to bring it back again!">>
<<elseif $left_creature_bool === true>>
<<set _dialogue to "Don't you worry, I'll take good care your $left_name for ya!">>
<<elseif $train_creature_bool === true>>
<<set _dialogue to "I'll shape up your $train_name in a jiffy!">>
<<elseif $entered_keeper_bool === true>>
<<set _list to ["Hey $pc_name! What creatures did you bring me today?", "Welcome in, what can I do for you today?", "$pc_name! Welcome! How are your creatures doing?", "I wonder how I got so wet again? Oh, welcome in! Didn't see you there."]>>
<<set _dialogue to _list.random()>>
<<else>>
<<set _list to ["If you need any help on how to care of your creatures, just let me know!", "One day, I'm going to have my own zoo full of amazing creatures!", "There are so many creatures in this world, please bring me many different kinds to take care of.", "I'm the best creature keeper in town! I'm also the only one.", "Taking care of other people's creatures can be exhausting sometimes, but it can be very satisfying!"]>>
<<set _dialogue to _list.random()>>
<</if>>
* Dialogue Bools *
<<set $entered_keeper_bool to false>>
<<set $took_creature_bool to false>>
<<set $left_creature_bool to false>>
* Display *
<</silently>>\
<div class="section">\
<div class="titlebox">\
Dragonscale Forge
</div>\
<div class="dialoguebox-townshops">\
<div class="dialoguepic-townshops">\
[img[images/town/twins/face_0.jpg]]
</div>\
<div class="dialoguetext-townshops">\
_dialogue
</div>\
</div>\
<div class="cardholder-townshops">\
<div class="infobox-townshops">\
<div class="infobox-title-townshops">\
Rosemary's Equipment
</div>\
<div class="infobox-body-townshops">\
Craft an Equipment that can be attached to one of your Creatures.
</div>\
<div class="infobox-link-townshops">\
<span id="1"><<button "Craft ^^1^^" "Rosemary Shop">><</button>></span>
</div>\
</div>\
</div>\
<div class="cardholder-townshops">\
<div class="infobox-townshops">\
<div class="infobox-title-townshops">\
Upgrade Equipment
</div>\
<div class="infobox-body-townshops">\
Improve one of your Equipments.
</div>\
<div class="infobox-link-townshops">\
<span id="2"><<button "Upgrade ^^2^^" "Upgrade Equipment">><</button>></span>
</div>\
</div>\
</div>\
<div class="cardholder-townshops">\
<div class="infobox-townshops">\
<div class="infobox-title-townshops">\
Thyme's Equipment
</div>\
<div class="infobox-body-townshops">\
Craft an Equipment that can be attached to one of your Traps.
</div>\
<div class="infobox-link-townshops">\
<span id="3"><<button "Craft ^^3^^" "Thyme Shop">><</button>></span>
</div>\
</div>\
</div>\
<div class="exit-link-right">\
<span id="back"><<button [[Leave|Town Menu]]>><</button>></span> <span id="q"><<button "<u>Q</u>uick Menu" "Quick Menu">><</button>></span>
</div>\
</div>\
<</if>>\<<silently>>
*Variables*
<<if !$page>>
<<set $page to 1>>
<</if>>
*Display*
<</silently>>
<div class="wrapper">
<div class="titlebox">
Treasures
</div>
<div class="guidebook-titlebox">
</div>
<div class="guidebook-textbox">
@@.gold;Treasures@@ are items that can be purchased from the Treasure Shop in Town, stolen from Captured Raiders, or earned when your Slaves complete Quests. They provide a variety of effects while you have them in your Vault. Having multiple of the same @@.gold;Treasure@@ stacks its effect. Your Vault can only hold a certain number of @@.gold;Treasures@@, but you can increase the size in your Quarters. Raiders who Clear your Dungeon will be able to take one of your @@.gold;Treasures@@ in addition to any @@.gold;Gold@@ they steal. There are 4 different rarities of @@.gold;Treasures@@: Common, @@.uncommon;Uncommon@@, @@.rare;Rare@@, and @@.legendary;Legendary@@. There is only one of each @@.legendary;Legendary Treasure@@, making them extremely rare and valuable.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Spells]]>><<set $page to 4>><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Equipments]]>><<set $page++>><</button>></span>
</div>
</div><<silently>>
*Variables*
<<if !$page>>
<<set $page to 1>>
<</if>>
*Display*
<</silently>>
<div class="wrapper">
<div class="titlebox">
Equipments
</div>
<div class="guidebook-titlebox">
</div>
<div class="guidebook-textbox">
Equipment are items you can craft using materials or purchase from the Dragonscale Forge in Town. They give a Creature or Trap increased Stats and special effects as long it is attached. Once you have an Armory, you can store and attach your Equipment to your Creature and Traps. Each Equipment also has 3 different Upgrades, which increase the Stats it grants or add additional effects. You can Upgrade each Equipment multiple times, but each additional Upgrade costs more @@.gold;Gold@@ and materials.
</div>
<div class="exit-link-right">
<span id="left"><<button [[<|Treasures]]>><<set $page to 4>><</button>></span> <span id="back"><<button "Close Book" $return>><<unset $return $page>><</button>></span> <span id="c"><<button "Table of <u>C</u>ontents" "Guidebook">><</button>></span> <span id="forward"><<button [[>|Slaves]]>><<set $page to 1>><</button>></span>
</div>
</div>