code:
#+STARTUP: overview
* /Scratch Inbox for Completed Sprints
** dupe and split
:PROPERTIES:
:VISIBILITY: children
:END:
*** Log copies: send to /time/source
**** sprinting [2019-11-25 Mon 02:11]

***** add ssh key to gitgud

https://help.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent

ssh-keygen -t rsa -b 4096
leaving off email for rsync.net compatibility
[2019-11-25 Mon 02:12]

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDGPHSKGXABW2WpT3Sw0EFeM4EEDmiXKTr3+9bB1ydFLEOFeiqwwLhOH84xzAc2WT82juy75BN2skdcjfLneDuqYw9ByS5s/nDeYbCTYaduik3yj7nnQ9u5p5Q/YYh3EsbCjnBoWftbfoo54/7J4wuXYIa60MUExm06KoMn+yBNpQE4J8obADuM4OzFmHabA/8Le84Z7T3IkFKLOQV43ogj1D3DYs1OVt3oewYrMfevX37SjlLgt0VE3+yDDmhbpXHWM3eP8Ethgzi53kw2YWJALcevTBXcDm7a3D2CgMExEmv7JWRXIdHCtAF1JryYvzSzkoU5oiYi3S2r00uu1zT7pOjqVRfwPOydzTMekIdZ60hsUxm67OO3AeBPNN06kERN3QNtAndDBWdGqKU1J1zs/rz/q9OiOHBhfDuIvixT0aJVLbyZZyKpO3POY8K4/5I/iha+ySfR0A8EAAsRLY7EY2jITipS9iR/B9qFrsiARNmyA2FumcVAs0gCQ74OdgLbQDSPGFqL5aqdPIY4kr6bDP4Mt0EVfu6PwL5cPevmSmiRKhaWObovbITCtxVquKUWBWSTZYSm3OUxBkgrLfr0XktodYBazRwC2fGsl9RNQ699zCeDd4VWIiLC4+fn3WnH0Q46B7/xmSRweC+ScCyk02nLZoNyT/IdKLtUSoRj5Q== demo@imac.local
[2019-11-25 Mon 02:17]

added to gitgud
[2019-11-25 Mon 02:19]

tested push. works
[2019-11-25 Mon 02:20]

import my private dictionary? nah. It's private.
later I can upload this local dictionary to gitgud.
[2019-11-25 Mon 02:21]

outbox: login to gitgud. setup lastpass separate account.
[2019-11-25 Mon 02:22]

***** prep cotw notes for playthrough

pushed
[2019-11-25 Mon 02:24]

back
[2019-11-25 Mon 02:35]

started recording
[2019-11-25 Mon 02:37]

C-down keybind isn't working
probably camtasia interference
stop recording.
[2019-11-25 Mon 02:37]

nah actually it's just mac keybind settings.
gotta eliminate those.

ok, got rid of them.
[2019-11-25 Mon 02:40]

resumed recording.
[2019-11-25 Mon 02:40]

filing cotw
whew, need a break
[2019-11-25 Mon 03:07]

back
[2019-11-25 Mon 03:23]

whoops, need to disable some more macos keybinds.
done
[2019-11-25 Mon 03:24]

nope missed

macos disable f3 keyboard shortcut

toggled fn kbd button
now it works
weird.
[2019-11-25 Mon 03:31]

good now F3 for macros works.
[2019-11-25 Mon 03:32]

I've erred. I forgot to turn on the emacs package that shows what keys I'm pressing
definitely a must while I'm recording.
[2019-11-25 Mon 03:38]

can't remember the package name.
guess I'll have to stop the recording to find it.
[2019-11-25 Mon 03:39]

pushed
[2019-11-25 Mon 03:39]

back
[2019-11-25 Mon 03:56]

***** get command-log-mode working

updated personal layer
restarted emacs
enabled it globally

well it's annoying in some layouts
so I won't leave it on all the time.
[2019-11-25 Mon 04:00]

pretty easy to toggle the buffer with C-c o
cool.

***** prep cotw notes for playthrough

these cotw headings were originally part of my main Textmind's sprint
so they're currently divided by an irrelevant chronology
I'm trying to break them into runs
then I can digest each run into the chronology of the run, and asides
[2019-11-25 Mon 04:04]

filing

leo-headingfy should check it has 1 blank line above it
[2019-11-25 Mon 04:17]

dashboard cleanup
[2019-11-25 Mon 04:18]

atomized the big inbox, except the runs.

sometimes I have to keyboard switch over to my laptop's pandora pianobar to discipline my channel. no lyrics!
[2019-11-25 Mon 04:27]

filing

pulled treefactor
[2019-11-25 Mon 04:33]

hm, considering the cotw directory schema
I guess this is alright.
[2019-11-25 Mon 04:36]

filed to depth=1
[2019-11-25 Mon 04:45]

planned task '3dashboard.
[2019-11-25 Mon 04:48]

this is too complex to run solely from the dashboard

dashboard dump:
****** read in-game help

grab or at least note relevant

****** proc online text

ensure site list exhaustive
mine sites
crunch guides

****** synthesize plan for part 1
[2019-11-25 Mon 04:50]

ok, that's enough for tonight. good work.
[2019-11-25 Mon 04:50]

git pushed
[2019-11-25 Mon 04:51]

***** troubleshooting directory permissions

****** /

can't open ~/
Desktop
Documents
Downloads

in dired.
unknown why.

could be interference from other open mac user.

try restarting. the windoze way.
[2019-11-25 Mon 23:20]

restarted imac

I should VC the demo Textmind persp
[2019-11-25 Mon 23:26]

no change.
[2019-11-25 Mon 23:26]

no idea why it's happening
futzing isn't helping
let's google the error message
[2019-11-25 Mon 23:27]

setup synergy
[2019-11-25 Mon 23:30]

****** /

googled
emacs macos Listing directory failed but ‘access-file’ worked

https://www.reddit.com/r/emacs/comments/6nvpl7/listing_directory_failed_but_accessfile_worked/

> For future reference, the culprit was --group-directories-first switch as part of the string in dired-listing-switches. And thanks for your function--I think I'll convert it to a hydra.

that doesn't explain why only 3 directories are affected.
and didn't help
[2019-11-25 Mon 23:31]

https://www.reddit.com/r/emacs/comments/dathqw/macos_catalina_and_access_to_system_folders/

here's the answer.
Catalina woes.
[2019-11-25 Mon 23:32]

hm
https://gist.github.com/dive/f64c645a9086afce8e5dd2590071dbf9

lotsa possible fixes.

I suppose the first step is to check whether emacs started from the terminal is affected.
if not, that's an easy fix.
[2019-11-25 Mon 23:36]

yep, from the terminal it works fine. cool.
had to give permission once per directory.
hope I don't need to do that every session
doubt I do. my imac@leo3 Emacs is always started from Terminal and I haven't noticed the problem there.
[2019-11-25 Mon 23:38]

didn't record this troubleshooting session in case I needed to do a lot of switching to other accounts.

done OH
(which means Original Heading)
[2019-11-25 Mon 23:39]

also, cuz I wanted to move my recording directory around with dired.

***** move cyborganize vid directory

hm

#+begin_src bash
Rename ‘/Users/demo/Documents/Cyborganize-demo-2019.cmproj’ to ‘/Users/demo/Documents/2019.cmproj’ failed:
(file-error Renaming Permission denied /Users/demo/Documents/Cyborganize-demo-2019.cmproj /Users/demo/Documents/2019.cmproj)
#+end_src

still not working perfectly.
[2019-11-25 Mon 23:41]

mv ~/Documents/Cyborganize-demo-2019.cmproj ~/Documents/Cyborganize/Demo/2019-11-25.cmproj/

sudo mv ~/Documents/Cyborganize-demo-2019.cmproj ~/Documents/Cyborganize/Demo/2019-11-25.cmproj/

can't admin.
made demo admin
gotta restart.
[2019-11-25 Mon 23:46]

aha, persp mode isn't working cuz still loading Textmind-main rather than Textmind-demo at startup
maybe I could add some conditional logic about username = demo then load a different persp
[2019-11-25 Mon 23:53]

want to save 'Meta.org to the persp
need to batch kill the irrelevant buffers first. wasn't it ido-buffer list or something? I've forgotten how.
[2019-11-25 Mon 23:57]

strange that 'Meta.org isn't loading off of my main Textmind persp anyhow
[2019-11-25 Mon 23:59]

sudo mv ~/Documents/Cyborganize-demo-2019.cmproj ~/Documents/Cyborganize/Demo/2019-11-25.cmproj/
that worked
[2019-11-26 Tue 00:00]

bizarrely, the project is read only.
guess I gotta
chmod -R 760 /Users/demo/Documents/Cyborganize/Demo/2019-11-25.cmproj/
failed
sudo chmod -R 760 /Users/demo/Documents/Cyborganize/Demo/2019-11-25.cmproj/
worked
[2019-11-26 Tue 00:03]

now opening the document fails.
getting worse.
try restoring the original name
did so

nope, still can't be opened.
doesn't matter, that was already uploaded anyway.
can just delete it

good to know for future reference, though.

I wonder if still broken at chmod 777?
cd /Users/demo/Documents/Cyborganize/Demo/
sudo chmod -R 777
[2019-11-26 Tue 00:06]

yep now it opens fine. weird.
maybe I needed to chown it as well.
[2019-11-26 Tue 00:06]

sudo chown -R demo
still works
sudo chmod -R 760

nope no difference
Catalina is annoying
This must be the post-Jobs decline in effect.
sudo chmod -R 777

mv
2019-11-25.cmproj
renamed
[2019-11-26 Tue 00:10]

still opens fine
all catalina, then.
[2019-11-26 Tue 00:10]

done OH
[2019-11-26 Tue 00:10]

I'll just break up projects by one directory per day, maybe multiple if I record a lot.
can delete them once the underlying media files are safely uploaded to Wasabi.
[2019-11-26 Tue 00:11]

git pushed
[2019-11-26 Tue 00:12]

ok, ready to resume recording.
after a break.
[2019-11-26 Tue 00:13]

back
[2019-11-26 Tue 00:31]

let's try to set some catalina security settings.
granted a bunch of full-disk access
that should help.
[2019-11-26 Tue 00:33]

emacs launcher still can't edit those directories, but terminal-launched seems to work alright now.
good enough.
[2019-11-26 Tue 00:34]

perused camtasia settings.
going for original recording dimensions this time
will let vimeo chop it down
maybe that will reduce text fuzziness.
[2019-11-26 Tue 00:39]

recording
[2019-11-26 Tue 00:39]

at the end of every day, or sooner if needed, I do a "proc sprinted"
in which I process the day's sprint.
this whole heading is a sprint.
[2019-11-26 Tue 00:40]

oh, forgot to enable keystroke display
on now.
[2019-11-26 Tue 00:42]

Created new sprinting heading via leo-create-new-sprinting
[2019-11-26 Tue 00:42]

**** Sprinting [2019-11-26 Tue 00:42]

***** proc sprinted

****** deletion pass from bottom up

done OH
[2019-11-26 Tue 00:50]

****** headingfy

done OH
[2019-11-26 Tue 00:54]

****** lazy

this means lazy-titling
or titling headings lazily
[2019-11-26 Tue 00:55]

done OH
[2019-11-26 Tue 01:06]

****** promote

done OH
[2019-11-26 Tue 01:06]

****** file

doing OH

All the org-tagged headings go into
/Users/demo/1-Mansort/1-Textmind/1-Agenda/
which contains org metadata, not bulk prose, to speed up agenda searches.

sleepy and slow, almost quitting time.
[2019-11-26 Tue 01:12]

specify outbox destinations in dirname to avoid ambiguity.
[2019-11-26 Tue 01:14]

done OH
[2019-11-26 Tue 01:16]

****** file to depth=1

done OH
[2019-11-26 Tue 01:25]

****** sort tasks

done OH
[2019-11-26 Tue 01:26]

****** done OH
[2019-11-26 Tue 01:26]

***** /

and now it's time for a break, or else a close to the day, more likely.
[2019-11-26 Tue 01:26]

git push
[2019-11-26 Tue 01:26]

ugh gotta set the email address again
thanks catalina.
[2019-11-26 Tue 01:27]

git config --global user.email "bibliodemos@gmail.com"
[2019-11-26 Tue 01:30]

git push
[2019-11-26 Tue 01:30]

wow, none of that recorded.
why.
guess the upgrade to camtasia 2019 caught me
[2019-11-26 Tue 01:32]

nothing, not even temp files saved.
maybe it's catalina.
[2019-11-26 Tue 01:35]

did another test recording
it didn't get added to the media area either
[2019-11-26 Tue 01:36]

but it was saved to ~/Movies
and after opening it in Dired, it was added to Camtasia's media bin
so the prior recording is truly gone. ouch.

Catalina's revenge.

I don't know what to do about this. more testing required.
See whether my leo3 account is similarly broken, or whether it's due to something I did on demo@
[2019-11-26 Tue 01:39]

git push
[2019-11-26 Tue 01:39]

found the recording
duration: 51m
exported

raw: 1.2 gb

exported: 1g

decided to optimize for the upload, since Vimeo re-encodes it anyway.
[2019-11-26 Tue 02:48]

looks pretty sharp. I like it.
I feel it was worth the upgrade.
[2019-11-26 Tue 02:50]

git push
[2019-11-26 Tue 02:51]

recording
[2019-11-28 Thu 01:11]

hm, meta still doesn't display on startup.
update personal layer?
[2019-11-28 Thu 01:12]

deploy script wasn't deploying the Textmind-demo  persp file
now it works. nice.
[2019-11-28 Thu 01:19]

hafta update personal layer from leo3@
should add my demo@ ssh key to github
confirmed it's not added yet.
[2019-11-28 Thu 01:25]

***** prep for cotw playthrough

****** /

oh, capslock might've been the problem.
[2019-11-28 Thu 01:28]

spellcheck working now.

I need to install captin so that doesn't happen again.
[2019-11-28 Thu 01:28]

still finding my feet with MacOS. Started Windows, then Linux, now MacOS. Easiest way for people to use Textmind.
[2019-11-28 Thu 01:30]

configured captin
[2019-11-28 Thu 01:32]

****** /

set synergy to start on login.
[2019-11-28 Thu 01:34]

take a closer look at the standout YT playthroughs
[2019-11-28 Thu 01:35]

even though the above sprint is pretty light, I find it's best to do a proc sprinted if a day has passed, since the above context will have decayed out of my short term memory.
[2019-11-28 Thu 01:36]

Created new sprinting heading via leo-create-new-sprinting
[2019-11-28 Thu 01:37]

**** Sprinting [2019-11-28 Thu 01:37]

***** proc sprinted

****** deletion pass from bottom up

I should really automate the duplication of sprinted.
or maybe not. It's such a critical operation, wouldn't want blind automation to screw something up due to an unexpected state.
[2019-11-28 Thu 01:39]

done OH
[2019-11-28 Thu 01:45]

****** headingfy

done OH
[2019-11-28 Thu 01:48]

****** lazy

done OH
[2019-11-28 Thu 01:51]

****** promote

n/a
[2019-11-28 Thu 01:51]

****** file

reckon I should file info on my binary assets under Codary

I am steadily growing to hate Catalina's "security" measures.
why can't I move this obnoxious file?
[2019-11-28 Thu 02:02]

possibly because this emacs isn't launched from the terminal.
try adding ruby to full disc access.
[2019-11-28 Thu 02:03]

nope, already done.
try terminal emacs anyway.
[2019-11-28 Thu 02:04]

still fails.
[2019-11-28 Thu 02:05]

perhaps copying it would help.

ok, so the problem was that I inserted that file from leo3@, so the folder wasn't owned by me.
I'll be doing that frequently.

hm, obnoxious
better to just sync them indirectly from the remote server, then.
hafta modify my checklist and restore leo3@'s local copy of demo@Textmind
[2019-11-28 Thu 02:08]

****** file to depth=1

done OH
[2019-11-28 Thu 02:11]

****** sort tasks

done OH
[2019-11-28 Thu 02:14]

***** [[id:CFBEC8C5-BDCA-4E8B-A865-8BAA5FDD87F7][process my cotw runs into topical content and refile the headings]]

whew. that was much more annoying than usual.
good to work out the kinks on an unimportant game such as cotw.
[2019-11-28 Thu 02:14]

back. recording.
[2019-11-28 Thu 02:34]

refactoring my cotw runs.
that's enough for today, I reckon.
[2019-11-28 Thu 03:18]

***** winding down

planned task
[2019-11-28 Thu 03:19]

exporting
[2019-11-28 Thu 03:22]

git push
[2019-11-28 Thu 03:22]

***** setup screenflick recording

I'm back.
[2020-01-08 Wed 05:37]

Googled macos screen recording reviews
verdict: happy with screenflick
but also glad to have Camtasia for heavier editing.
best of both worlds!
[2020-01-08 Wed 05:43]

had to download and install screenflick
even though I already installed it on imac-main.

however, once installed, it was already registered. cool.
[2020-01-08 Wed 05:47]

tested. it works. nice.
[2020-01-08 Wed 05:48]

started recording.
[2020-01-08 Wed 05:49]

***** setup casual DCSS play

****** /

is dcss installed?

dungeon crawl stone soup

downloading. 6m eta
[2020-01-08 Wed 05:52]

cd /Users/demo/1-Mansort/2-Other-text/Github/
git clone https://github.com/cyberthal/dcss-my-games.git Dcss
[2020-01-08 Wed 05:54]

hm.
ssh key wasn't accepted for the Github push
strange.
[2020-01-08 Wed 05:57]

I'll have to troubleshoot this.
[2020-01-08 Wed 05:59]

paused recording.
[2020-01-08 Wed 05:59]

ok, got it.
the issue is that I'm not logged into Github, so it gives me an https clone URL instead of the usual git one.
which causes magit to authenticate via https login rather than SSH
the SSH key is working fine.
[2020-01-08 Wed 06:10]

the prefix is just
git@github.com:
worked.
[2020-01-08 Wed 06:12]

****** /

quit dcss on other user
[2020-01-08 Wed 06:14]

bibliodemos-docs.nfshost.com

Started HOFi Zyexanek (axe)
[2020-01-08 Wed 06:18]

works fine
interface looks weird on lower resolution, double zoomed though.
[2020-01-08 Wed 06:23]

fix that.

fixed.
world's easiest starting vault, too.
[2020-01-08 Wed 06:25]

****** /

now what?
guess I need audio.
so that'll end this recording.

setup my browser reference tabs.
[2020-01-08 Wed 06:30]

2020-01-08-06-31

export complete
YT 2nd highest quality setting
font is fuzzy. dislike.
[2020-01-08 Wed 06:53]

184 mb for 24 minutes.

184:? 24:60
(* 184 60)11040
(/ 11040 24)460
460 mb / hr

original recording size?
146 mb
output is larger.
[2020-01-08 Wed 06:57]

trying a prores mov export
it's not youtube's recommended settings
we'll see how it looks after export, and then after upload and conversion.
[2020-01-08 Wed 07:01]

hm, still a bit blurry.
disappointing.
[2020-01-08 Wed 07:07]

quick test on YT max quality
still blurry!
bah.
it seems to affect spacemacs primarily
perhaps due to the low contrast between background and text.
[2020-01-08 Wed 07:12]

quicktime max res is no better.
[2020-01-08 Wed 07:18]

prores export was 16 gb, way too big.

let's try YT max quality with size restricted to reasonable 1920
probably hafta settle for that.

max quality is same size as before.
maybe cuz I controlled the resolution.
still blurry for spacemacs text.
I reckon it's the grey on grey it can't handle.
[2020-01-08 Wed 07:29]

the solution might be to change the spacemacs theme to light. sigh.
how do I do that?

well leuven theme is unusable.
[2020-01-08 Wed 07:31]

or is it? It's certainly high contrast. Test the res.

see how this does.
[2020-01-08 Wed 07:32]

yep leuven is definitely way more readable
so that's settled.
[2020-01-08 Wed 07:35]

audio test successful
used the imac's internal mic
which picks up some keyboard clacking.
solution is just to talk louder
doesn't much matter anyway. The commentary is superfluous.

well. I should really wear headphones and just give up on listening to background music.
let's try that.
[2020-01-08 Wed 08:04]

clickety clack
[2020-01-08 Wed 08:06]

ok let's how bad the clickety clack is now.
[2020-01-08 Wed 08:14]

better.

and now the mic is by throat.
should be fewer mouth noises.
[2020-01-08 Wed 08:15]

I bumped the quality in settings up to second highest.
check how that impacts file size.
if negligible, increase it again.
low framerate recording, can afford it.
[2020-01-08 Wed 08:16]

in fact, perhaps I should lower the framerate to 15 fps.
or 10. let's try that.
[2020-01-08 Wed 08:17]

****** /

ok, time to record some casual DCSS play!
[2020-01-08 Wed 08:20]

HOFi Zyexanek had an amazingly dicey run
nailbiters vs menkaure and duvessa

lessons learned:
never assume the direction of a yell pull
level HOFI Dex first, not Int.
slow down.
it's not over till it's over.

restarting to fix the misapplied stats.
[2020-01-08 Wed 10:27]

started
HOFi Sunut
[2020-01-08 Wed 10:28]

cleared D4
char OP
leveled Dex this time. Much better.
[2020-01-08 Wed 11:26]

2020-01-08-11-26

export is good
need to speak up
throat mike position no good.
try past cheek, out of airstream.
[2020-01-08 Wed 12:26]

2.16 gb for 2h49m
quality markedly better.
spacemacs dark theme comfortably legible.
should still switch to leuven, though.
forgot when started recording.
should just always use leuven on imac@demo, then.
[2020-01-08 Wed 12:28]

1/2.16 1/2h49m
(/ 49 60.0).82
x/2.16 1/2.82
(/ 2.16 2.82)
.77 gb/hr
seems fine.
[2020-01-08 Wed 12:32]

back
[2020-01-08 Wed 23:07]

dcss
sunut
shafted D7-10!
recovered. cleared d8
fun.
[2020-01-09 Thu 01:22]

dcss planning
[2020-01-09 Thu 01:23]

removed the "exceptions" list to keystroke display
started export, YT max settings.
[2020-01-09 Thu 01:28]

whoah, screenflick YT max settings for the dcss setup vid uploaded to vimeo at 240p!
garbage.
[2020-01-09 Thu 16:25]

2020-01-08-06-31-max-mov-15fps uploaded to vimeo at 360p
still no good. bah.
[2020-01-09 Thu 16:42]

maybe it's a resolution issue?
mov was 100% size
YT was unknown
try mov 1920

nope, 360p max again.
[2020-01-09 Thu 16:59]

trying quicktime max
wow, that's the sharpest yet on the local player. nice.
also the smallest filesize. impressive.
uploaded vastly better - 720p. still nowhere near as good as camtasia's uploads at 2k, though.
hm.
[2020-01-09 Thu 17:16]

screenflick qt export is probably good enough for DCSS gameplay
it's inadequate for Textmind demo, though. even in leuven.

prores was 5gb at 10 fps.
not a serious option.
can't adjust quality.

I doubt camtasia can import .sfmovies

Perhaps I could import the quicktime vid into Camtasia and export to vimeo at higher res?
before doing that, try uploading to YT.
Perhaps YT will convert qt better than Vimeo.

created YT Bibliodemos account
uploaded to 720p on YT as well.

I may as well leave it on YT then.
gives relevant background for the DCSS gameplay

uploaded it:
https://www.youtube.com/watch?v=gjiJv3Kmu8o&feature=youtu.be

looks good enough
deleted it from Vimeo

I should move the Oroon vid over to YT as well, perhaps?
probably the quality wouldn't be good enough given the zoom. just leave it then. doesn't matter.
[2020-01-09 Thu 18:09]

exporting the other two vids using QT low fps preset.

uploading 2nd vid, exporting third.
[2020-01-09 Thu 18:34]

don't need to link chardumps cuz it's all in the repo.

Hm it uploaded with only 360p
unlike the first which uploaded to 720p.
unacceptable. why?
[2020-01-09 Thu 19:02]

compared the qt movs fruitlessly
re-exporting the qt mov with data rate 35
[2020-01-09 Thu 19:06]

third vid had same problem. sigh.
[2020-01-09 Thu 19:12]

qt data rate export same size
doubt it will make a difference

trying YT export option. original size. max quality.
[2020-01-09 Thu 19:20]

ok, both have 720p now.
just took a while for the higher quality settings to become available.
annoying that YT has no UI indication of this delayed effect.
quality is acceptable for DCSS but blurry for Textmind.
[2020-01-09 Thu 19:24]

I don't need to save the exports, just the sources, to binmind.
[2020-01-09 Thu 19:25]

still waiting on export of
2020-01-08-11-26-yt-max-orig-size.mp4
15 min ETA
compare it to the size of the qt version when done
and do a test YT upload to see whether a higher quality level results.
if not then I may continue using the qt export to upload to YT

I wonder whether Vimeo's higher quality renderings were also merely delayed.
Anyhow, YT is the appropriate platform for DCSS vids.
[2020-01-09 Thu 19:27]

couldn't find mention of vimeo delayed quality settings

Vimeo upload quality 360 720 delayed

#+begin_quote
 Dave O'Rourke, Senior Software Engineer
1444 Posts   419 Reply Likes
Vimeo (and YouTube) does not directly display the video that you upload.  Instead, they take the uploaded video and transcode it, to different sizes and formats, as appropriate for streaming to different screen sizes and playback devices.  It takes time to transcode your video to all these formats.  Often, the first video you see on the site will be a lower quality version of your video, because encoding at a smaller size is fastest.  Later, when the higher resolution videos have finished encoding, those will show up on the site.

So if you're not seeing the quality you expect, you may just need to wait a little bit.  As long as you're uploading a high quality file, you should (eventually) see a high quality video on the site.

Hope this helps.
#+end_quote
https://feedback.techsmith.com/techsmith/topics/vimeo-upload-quality-is-terrible-ive-tried-everything

Yep it's the same. Ok.

The delay is annoying for evaluating export settings.

Qt toolchain likely offers best performance on MacOS, so stick to that for uploading to Vimeo, unless it fails.

the YT export is 2.2 gb to the qt's 1.3
very inefficient.
[2020-01-09 Thu 19:44]

30m YT upload ETA, and longer to see the max quality result.
[2020-01-09 Thu 19:45]

qt upload to vimeo complete. 720p so far.
https://vimeo.com/383733005
check it again tomorrow, I suppose. see if higher ones ever unlocked.
[2020-01-09 Thu 20:01]

***** play dcss

****** /

HOFi Beogh focuses defense, followers provide offense.
so wear large shield, give up on gish Necro for now.
[2020-01-10 Fri 00:14]

dcss
HOFi Sunut cleared thru Lair:2
ez.
played well except forgot skilling for a floor or so, with fairly bad mis-skilling. wasted points into Necro.
didn't matter tho.
only one smite, to put down Erica.
[2020-01-10 Fri 02:02]

cya

2020-01-10-02-05

Pre-Orc.

My Beogh pronounciation experiment at the end was totally wrong. The "gh" does mean something, but not the same as the "uh" of Kikubaaqudgha. Instead, it's like orcs chanting the name, with the second syllable lower in tone: Beee YOH Beee YOH!

Sorry about that. I am not a cunning linguist.
[2020-01-10 Fri 02:07]

cleared ice cave
rough without rC+, spent significant resources. 10+/23ish paralysis charges.
should've leaned more on disint vs the Ice Fiends. Soften them up.
On the other hand, that's noisy...
clearing Lair:3
[2020-01-10 Fri 06:12]

Could've and should've softened up every Ice Fiend after the first pair with a Disintegration after kiting back far enough to avoid the noise.
Necessary without rC+.
[2020-01-10 Fri 06:16]

upload complete
YT screenflick upload maxed at 720p
assume that's the best it can do, except maybe ProRes.
[2020-01-10 Fri 06:36]

back
[2020-01-10 Fri 23:31]

recorded dcss thru Lair:4.
[2020-01-11 Sat 01:03]

do orcs turn hostile if one reads vuln on them? inadvertently?

cleared Lair:5

Be more aggressive about blind-reading one-stack unidentified scrolls once Magic Mapping is found.

Poison needles counter Blink Frogs.
[2020-01-11 Sat 06:01]

if allied orc is netted, recall and walk away to save it.

2020-01-12-03-30
HOFi Beogh - Sunut - Lair:6 - DCSS

Run from Rupert's rage

quit HOFi Sunut
in order to try a Str-leveling start.
started HOFi Xousk
[2020-01-12 Sun 04:40]

2020-01-12-06-13
HOFi Beogh - Xousk - D:1 - DCSS
recorded
[2020-01-12 Sun 06:44]

venom kited 2-headed ogre with TLA and venom dagger
highly effective. cheap kill. cuz isolated.
XL10-11 D:8
requires sparse floor for room to kite

wasted a blink scroll conquering a bailey
didn't realize could cast blink naked.

that's a blink bailey, so immediately inventory whether you have it.
if no blink or apport, let kobolds exhaust their ammo before killing them, to be able to collect it.

should've immediately retreated to the single-tile walkway, once triggered the orc knights.

Xousk to ?D9?. Found Orc and Lair.
[2020-01-13 Mon 04:48]

2020-01-13-04-50
HOFi Beogh - Xousk - D:8 - DCSS

Fsim tests.

Spoilers:
Queen bee hive.
2-headed ogre venom dagger kite kill with Troll Leather Armor.
Orc entrance vault.
Harold with acid.
Bailey: Kobold tomahawk walkway.
[2020-01-13 Mon 04:55]

remember to empty inv before gauntlet.

never stairdance an axe wielder into your orc pack.
[2020-01-13 Mon 11:57]

2020-01-13-12-01

Causing casualties.

Spoiler:

Gastronok
Urug
Gauntlet
[2020-01-13 Mon 12:11]

****** /

HOFi Xousk

mistakes:
ettin: has medium AC, use acid.
Dual wield is shield-breaker. Can't venom kite.

Low HP (7-10?) vs Ettin while venom kiting at 1/2 HP. Ineffective. Probably regens too fast. Big mistake.

Did D11, then Orc:1
Delaying Lair worked well. Building orc army easily now. Clearing Lair:3
[2020-01-14 Tue 01:47]

2020-01-14-01-48
HOFi Beogh - Xousk - Orc:1- DCSS

Dual wield breaks shield

Spoiler:

Snorg
Ettin
Lair
Nergalle
[2020-01-14 Tue 02:45]

Correct play with Urug was to net her to save allied orcs and quickly finish.
Nets are most effective on surrounded unhasted foes. Slowed, ideally.

cleared Lair:4 ez.
Don't recall significant mistakes.
Training hand xbow.

2020-01-14-04-27
HOFi Beogh - Xousk - Lair:3- DCSS

Acrobat/Regenerat

Spoiler:

A belated but lucrative return to bypassed Grinder and Yiuf, followed by an easy orc training run through Lair:3-4.
[2020-01-14 Tue 04:34]

Did some wizmode testing:

The only way to level an orc is to kill a monster he can see. He gains at most 2 HD per kill. From HD 11 onward, only 1 HD per kill. HD15 is max for Orc Warlord.

So I wasn't leveling followers properly.
[2020-01-14 Tue 04:51]

cleared L:5 and volcano.
no significant mistakes.
orc training slowing.
opened L:6
[2020-01-15 Wed 02:29]

2020-01-15-02-29
HOFi Beogh - Xousk - Lair:5 - DCSS

Spoiler:

Volcano

Did some additional fsim testing. Orcs have an XP counter. They gain no XP from seeing weaker monsters defeated. If the monster is stronger, they split the XP. If the XP is enough to level them, they go up by no more than the maximum allowed HD.

Thus it's important to kill hard monsters in front of lots of orcs. The limiting factors to growth, in order of importance, are monster significance, HD cap, and total XP last.

There's little point in trying to level orcs with weak monsters. Only the weakest would be affected, and they can level off hard ones just as well. When fighting a hard monster, summon all the orcs to ensure the weak ones level.

Since stronger orcs gain nothing from kills, it's more important to ensure that the weak orcs have opportunities, than to try to concentrate XP in the strongest orcs to build a strong A-team. That will waste lots of XP because none is gained when a weaker monster dies.

Thus the best strategy is to keep a huge crowd of orcs atop one's current stair. Don't assault an uncleared floor with orcs, as this reduces the odds that Beogh will gift you more. Gifts are a source of gear as well as followers.

Total XP per kill is limited and gets diluted among many orcs, true. However, if there aren't enough orcs strong enough to absorb the XP to level up the max amount allowed, it's wasted. Therefore it's better to dilute than waste.

Past a certain point, it becomes very hard to level an orc via your XP sharing, because monsters aren't considered hard enough. For example, Orbs of Fire no longer level HD12 Orc Knights, and thus can't promote them to Warlord. The orc must earn the XP himself.

Aha, the orc XP counter is in parentheses by the HD.

Weak monsters don't increase it.

Oh, maybe weak monsters aren't registering because a rat has 1 XP and it splits into a fraction.
But a weaker adder HD2 still helps an orc HD3.

1 orc, 1 adder. orc gets 22 xp. adder worth 13.
2 orcs, 1 adder. both get 18 xp.
eh?
3 orcs, 1 adder. all get 17 xp.
bizarre.
same orcs, 2nd adder. now they're at 19, all.
3rd adder, 21. 4th, 23. gnoll, 25.

Ok so XP returns are great for harder monsters than previously fought, or hard monsters relative to HD cap. But returns are terrible otherwise. Dilution effect is minimal, so exploit that by leveling everyone together.

Now, can stairdancing at 1 HP work?

Yep, it does. pdam is what's tracked, not what floor it occurred on or who was watching.
All three new orcs got 17 XP.
But bringing a monster to 1 HP via wizmode doesn't count as pdam, FYI.

Cool.
So the strategy is:
Keep everyone upstairs, and bring hard monsters up when they're nearly dead.
[2020-01-15 Wed 03:33]

HO
-9 schools
of 12 schools
(/ 9 12.0)
int ~ -2 apt
str ~ +2 apt
ergo Str ~ 2*Int

cleared Lair:6

mistakes:
didn't call in orcs to floor enough. should've for Rupert and end vault.

New orc training technique highly successful. Excellent.
[2020-01-15 Wed 06:55]

cya
2020-01-15-06-56

HOFi Beogh - Xousk - Lair:6 - DCSS

Spoiler:

New orc training technique highly successful.
Should've called orcs onto floor for Rupert and end vault.

Riposting hydras with non-flaming blades is disabled to avoid inadvertent head multiplication.

After doing wizmode, always exit the client before resuming real game, to avoid phantom alarm trap and possibly other bugs.
[2020-01-15 Wed 06:59]

HOFi ideal stats:
starts 18 8 10
+1 Str / 5 XL
25/5 = +5 Str
23 8 10
max enc = 23

Str apt ~ 2
Int apt ~ -2
Dex apt ~ -1

Int * 2 = St
Dex * 1.68 ~ Dex * 2/3 = Str

remaining level-up points:
27/3 = 9
target:
23 11.5 15.3

However, HOFi won't have stealth for a large portion of the game, at first due to shield and plate and later due to TSO.
Which drops stealth apt by at least 1/2, even if Stealth is considered important for the Zin phase in Abyss
Which it shouldn't be, really, considering that Recite is noisy and he has an axe for swarms and plenty of Teleport.

Minimum apt is -5, so Stealth is +4 for this calculation. It loses -2 to -3 apt.
That puts Dex at -2 apt easily.

how does that affect targets?
23 11.5 11.5
big difference.
Only worth putting 1-2 points into Dex for the game, if that.
Meanwhile, Int's utility spells are undervalued by this method, increasing the target to at least 12

Forgetting Stealth entirely since the investment is so dubious, Dex remains at 10.
The goal is to put everything available into Int.
Final stats are
23 16 10
a respectable gish.

Ok, so here's the plan:

Get followers quick. Level them via stairdancing into whole pack.
Be a brush-beater. Yell monsters into the ambush. Inverse stealth. Always be yelling. Explore away from stairs last.
That's his counter to everything: stairdance.
It's how he'll rapidly overlevel his orcs. Which will lead to rapid piety gain due to reduced resting. Snowball.

That's how he can afford to exclusively level Int. Voila.

The shield allows him to survive a reposition back to the stairs.
[2020-01-15 Wed 07:39]

restart HOFi
level Int only
activate ascendant ambush army ASAP

The true Orc Warlord wins with his wits.

In orc society, volume indicates status. Therefore the Messiah is ALWAYS ROARING.

You may assume that he is hurling racist epithets of orcish supremacy and prophesied dominion.
[2020-01-15 Wed 07:45]

This is why I've played the early game in a loop. Because there are hidden depths, mine alone to plumb.

how do I find out what the vault name of a portion of the map is with wizmode?

quit HOFi Xousk
started HOFi Neciott
[2020-01-15 Wed 09:55]

don't challenge D2 sigmund

screwed up by fsimming edmund in a hard fight on D:4
turns out the higher base damage axe was better than the +0 spear of freezing, even trained to secondary.
unfortunate, because that was arguably a bug caused by my response to difficulty, which is similar to rerolling hard starts.
[2020-01-15 Wed 10:45]

quit Neciott
started HOFi Miog Yrphaco
[2020-01-15 Wed 10:47]

HOFi Miog Yrphaco
level 2x off a bullfrog kill on D:2
impossible.
must be leftover wizmode bug in the client.
quitting him and client.

started HOFi Ridapsy
went well enough
not a hard start, unfortunately.
[2020-01-15 Wed 11:38]

2020-01-15-11-39
HOFi Beogh - Ridapsy - D:1 - DCSS

Spoiler:

Restarted Xousk to level Int under aegis of optimal follower training.

Then Wizmode bugs cause two restarts. The first was a tough start, unfortunately. Never fsim while adjacent to a significant opponent, as it may kill him as a bug.

Neciott gave his run for the scientific result that the war axe was 2x better than the +0 spear of freezing vs Edmund with protection flail on D:4. A secular orcish messiah.
[2020-01-15 Wed 11:47]

****** /

quit HOFi Ridapsy in order to implement ELair.
started HOFi Umojick
[2020-01-16 Thu 02:26]

commentating distracted, tactical error with scorpion random energy, had to blind quaff out of it, got 2x berserkitis and teleportitis
joined trog and then quit the char
want to focus ELair.
[2020-01-16 Thu 03:09]

HOFi Ruxza

accidentally ID'd inventory
invalidating the run.
[2020-01-16 Thu 03:30]

2020-01-16-03-33
HOFi Beogh - Ruxza - D:1 - DCSS

Spoiler:

Restarting characters due to wizmode and commentating.

Need to figure out how to load a char for safe fsim.
[2020-01-16 Thu 03:36]

started HOFi Galost Fiawk

cleared thru D:4
played correctly:
no music
focus.
minimize mistakes.
[2020-01-16 Thu 05:19]

2020-01-16-05-20
HOFi Beogh - Galost Fiawk - D:1 - DCSS

Spoiler:

Jessica
D:4 Temple Ely
Sigmund
Blork
[2020-01-16 Thu 05:23]

This god progression frontloads difficulty to early Dungeon, where it's already highest.
Obviously if Ely is late one could pick a different god and sacrifice long-term power for reduced immediate difficulty.
That may even be optimal. It likely is at the current low difficulty.
But that is not the point of this exercise.
[2020-01-16 Thu 23:53]

fog is best deployed in corridors

test whether orc followers perform better with light or heavy weapons
and again for high rank ones

sceptre of torment totally incompatible with Beogh.

cleared thru Lair entrance on D9
minor mistakes.
overtrained Invo to 2x primary
wasted last remove curse, costing delayed and expensive ID of 2 rings and a ringmail via ID scroll.
[2020-01-17 Fri 02:41]

2020-01-17-02-45
HOFi Beogh - Galost Fiawk - D:5 - DCSS

Spoiler:

sceptre of Torment
Pikel
[2020-01-17 Fri 03:15]

cleared Lair:1-2
ez
no significant mistakes.
pacified first two hydras, killed third.
[2020-01-17 Fri 10:15]

2020-01-17-10-16
HOFi Beogh - Galost Fiawk - Lair:1 - DCSS

Spoiler:

Pacification clutch vs first two hydras. This is why early Good Gods is the dominant essential start: Guaranteed Lair.

Venom kiting where appropriate: vs high AC monsters and packs, under controlled conditions.
Freezing falchion vs rC- monsters, often venomous.

****** /

cleared Lair:3-4
opened Lair:5
combatted a stairblock with an agi and 1 pip piety
enslaved Urug to help with the rush

no significant mistakes.

2020-01-18-07-04
HOFi Beogh - Galost Fiawk - Lair:3 - DCSS

Spoiler:

Death Yak venom brand kiting - fine with an Ely tank
Lair:5 stairblock, alarm trap, enslaved Urug, Divine Vigor, Agi
[2020-01-18 Sat 07:08]

****** /

cleared Lair:5
2 significant errors:
under penance cuz attacked enslaved killer bee.
also, didn't flank bee pack too stupid to path around obstacle to my yelling.
[2020-01-18 Sat 09:29]

Lair:6 elephant vault trap:
close door on anaconda and immediately retreat out to beat the dire elephant ambush.
[2020-01-18 Sat 11:08]

cleared d10 ez
counter to Snorg is Berserk. Narrows window for her to regen and zerk, exploits low AC.
spent 2x teleport recently, down to 5
opened D11.
[2020-01-18 Sat 11:44]

2020-01-18-11-44
HOFi Beogh - Galost Fiawk - Lair:5 - DCSS

Spoiler:

Lair:5 stairblock busted, Urug, Queen Bee vault, needless Ely penance
Lair:6 end vault: Dire Elephant statues
D:10 Harold, Snorg

`
2020-01-19-02-29
HOFi Beogh - Galost Fiawk - D:11 - DCSS

Spoiler:

Cleared D11-13
Mutation roulette win
Psyche
[2020-01-19 Sun 02:31]

standard fsim target should be elephant
can't wear armor
if forget to hit f after &, won't ID items like yak

resting upstairs limits monsters' opportunity to aggro and form a stairblock.

2020-01-20-07-43
HOFi Beogh - Galost Fiawk - D:11 - DCSS

Headphone mic wasn't plugged in. Audio quality may suffer.

Spoiler:

Orc:1
Lair:6 end vault Dire Elephants
Orc:2
Opened D:14
[2020-01-20 Mon 07:48]

****** /

cleared thru D15
[2020-01-21 Tue 01:35]

2020-01-21-01-35
HOFi Beogh - Galost Fiawk - D:14 - DCSS

Spoiler:

Kirke, Immo, brief Ely penance
Ghost vault
Cleared thru D15.
[2020-01-21 Tue 01:39]

2020-01-22-03-31
HOFi Beogh - Galost Fiawk - D:12 vault - DCSS

Spoiler -

Cleared D12 vault - poorly, but spent mainly piety, so doesn't matter. Found +Flight.
Cleared Swamp:1 well. Switched to gish in swamp armor for it. Works fine.
[2020-01-22 Wed 03:31]

Re the d12 vault: I suspect the play was to fight in place, pinning the monsters who could see me to the wrong side of the glass wall, then defeat them in a second wave at leisure. AI hack.
[2020-01-22 Wed 06:12]

2020-01-23-05-17
HOFi Beogh - Galost Fiawk - D:12 vault - DCSS

Spoiler:

Swamp:2 Ice Cave: statues, simulacra and Very Ugly Things
Cleared thru Swamp:3
Opened Spider:1 with an heroic Swamp Drake. Should've been taking every one into Spider.
Found rPois ring, gish ambitions delayed.
[2020-01-23 Thu 05:18]

***** /

started recording
[2020-01-23 Thu 07:16]

chattered
[2020-01-23 Thu 07:18]

error in template:
'1Sprinting S shouldn't be capitalized
[2020-01-23 Thu 07:21]

Created new sprinting heading via leo-create-new-sprinting
[2020-01-23 Thu 07:23]

**** Sprinting [2020-01-23 Thu 07:23]

***** proc sprinted

****** deletion pass from bottom up

done OH
[2020-01-23 Thu 07:30]

****** headingfy

done oH
[2020-01-23 Thu 07:37]

****** lazy

done OH
[2020-01-23 Thu 07:44]

****** promote

done OH
[2020-01-23 Thu 07:45]

****** file

done OH
[2020-01-23 Thu 07:48]

****** file to depth=1

done OH
[2020-01-23 Thu 07:51]

shouldn't be seeing
.DS_Store
in dired.
figure out how to disable
[2020-01-23 Thu 07:52]

textmind template: 'Meta:
fix - [ ] elisp:ts-refresh-org-agenda
to
- [ ] elisp:leo-refresh-org-agenda
[2020-01-23 Thu 07:53]

done OH
[2020-01-23 Thu 07:58]

***** [[id:CFBEC8C5-BDCA-4E8B-A865-8BAA5FDD87F7][process my cotw runs into topical content and refile the headings]]

2020-01-23-09-28 Textmind

Textmind | 2020-01-23 | proc sprinted

Processed prior sprinted, consisting mostly of DCSS notes. Selected next task. Found place in CotW notes.

good filing session
making major progress atomizing the backlog
[2020-01-23 Thu 11:39]

Textmind | 2020-01-23 | refactoring logs | CotW

Refactored raw notes into atomic headings, either chronological or topical.

Main command: treefactor-org-refactor-heading

Subject matter: Castle of the Winds.
2020-01-23-16-06
[2020-01-23 Thu 16:06]

***** play DCSS

2020-01-24-04-14
HOFi Ely - Galost Fiawk - Swamp:4 - DCSS

Commentary sporadic. Audio, pace and resolution greatly improved. No more keystroke callouts. Using Camtasia instead of Screenflick.

Spoiler:

Opened Swamp:4
Swamp Dragon pet ineffective in Spider. Swamp Drake pet highly effective.
Cleared Spider:1-2 with pet cheese.
[2020-01-24 Fri 04:14]

exporting.
[2020-01-24 Fri 04:30]

***** [[id:CFBEC8C5-BDCA-4E8B-A865-8BAA5FDD87F7][process my cotw runs into topical content and refile the headings]]

good filing session
things are taking shape

I should finish refiling all the headings I threw up, intended for by-part

ok, did so.
[2020-01-24 Fri 13:17]

done!

Textmind | refactoring notes | CotW | 2020-01-24 13:00

Castle of the Winds notes directory hierarchy taking its final form.
Heavy use of Treefactor and Dired.
[2020-01-24 Fri 17:26]

updated spacemacs packages.
[2020-01-27 Mon 04:26]

***** play dcss

updated meta checklist
[2020-01-27 Mon 04:32]

2020-01-27-05-42
HOFi Ely - Galost Fiawk - Spider:3 - DCSS

Spoiler:

Cleared Spider:3 with Swamp Drake.
Killed Arachne with stairdance TLA healing and Purification.
Killed Bai Suzhen with stairs, acid and Flight.
[2020-01-27 Mon 05:42]

2020-01-28-03-18
HOFi Ely - Galost Fiawk - Spider:4 - DCSS

Spoiler:

Cleared Spider:4 with Swamp Drakes.
When swarmed with Swamp Drake, retreat under cloud cover to preserve pet.
Ely OP vs Ghost Moths
Reset Emperor Scorpion fights with webs.
Beware Spider:4 end-vault triggered rushes.
[2020-01-28 Tue 03:18]

Variable altar sequence introduces varied build paths and thus replayability. HOFi needs an early god, and thus any strong Invo god is a valid choice. First god picks by tier:
Ely
Zin, Beogh, TSO
Nem, Yred, Lug, Makhleb, Usk
Qaz, Fedhas

Finding an Usk altar allows one to hold out longer for tier 1-2 altars, since piety is immediately available if one's progression is blocked.
[2020-01-28 Tue 03:30]

I wonder whether switching to Beogh after Spider is better than switching to Zin.
Maybe I can get Beogh's orcs working in Slime. At least for stairpulls onto cleared floors.
That would allow blocking mutations.

With Beogh, after find Abyss entrance, can burn all troops on Vaults:5.

Advantage of god swap: can burn out Ely piety on Swamp ending.
Also get to use one's banned consumables.
[2020-01-28 Tue 03:49]

***** prep to play dcss

set demo@imac to default unscaled resolution
downloaded inconsolata
then spacemacs Leo layer set font size correctly.
[2020-01-30 Thu 07:02]

set dcss dotfile to default resolution
[2020-01-30 Thu 07:07]

got persp-mode working
[2020-01-30 Thu 07:18]

***** play dcss

after clearing Spider and 3/4s of Swamp, HOFi Galost's ration count is 9
yet more reason to switch from Ely to Beogh for the mid-game, to prevent hunger crunch.
[2020-01-30 Thu 07:24]

looted Spider:4
Acquired a weapon. Armor better for followers? Maybe.
Cleared Swamp:4

Rations at 9, will convert to Beogh for Vaults.
[2020-01-30 Thu 07:56]

Probably not very beneficial to receive yet another axe
Whereas armor still makes good gifts, and more of it can be worn simultaneously
Gish mode would be beneficial, with the right gear.
[2020-01-30 Thu 07:58]

 One minor positioning error. Didn't matter.
[2020-01-30 Thu 08:01]

2020-01-30-0807
HOFi Ely - Galost Fiawk - Swamp:4 - DCSS

Spoiler:

Looted Spider:4
Acquired a weapon. Armor probably better. Don't need more axes.
Cleared Swamp:4
Inconsequential positioning error in Swamp:4 rune vault; off by one.

It's clear that abandoning Ely after Water and Poison is optimal, if only for ration count. Zin would further pressure ration count in Elf and Vaults due to no-sapients food conduct, so Beogh is a welcome alternative.

Galost has been a battle shaman up to this point, channeling totemic healing. But now he takes the war to orc-kind's traditional enemies, under Beogh's based banner. Green power!
[2020-01-30 Thu 08:07]

sharing to YT.
[2020-01-30 Thu 08:08]

done
[2020-01-30 Thu 12:34]

how dangerous can artifact rings be to equip?
[2020-01-30 Thu 12:38]

amulets can be fragile or drain, but rings weren't in my test.
probably safe to wield-ID them with remove curse.
[2020-01-30 Thu 12:42]

Moved stash to D12. Converted to Beogh.
Cleared Vaults:1

Spent a lot of paralysis charges on an Orc Knight with 9x charm wand. Should've just swung on him at melee range. The Curare worked well.

Spent Flame Lamp on quick Wizard takedown, and Convoker. Probably fine.
Erred in going rF-- vs unknown wiz book tho. Fireball possible.

Overall, a trivial floor. Already have Beogh **.
Rations holding steady at 8.

Ely wrath was negligible. I noticed it once. She's still angry, though.

Training Armor and Shields to primary now, to get Animate Skeleton etc castable.
Already have Summon Butterfly; haven't needed it.
[2020-01-30 Thu 13:58]

2020-01-30-1358
HOFi Beogh - Galost Fiawk - Vaults:1 - DCSS

No sound.

Spoiler:

Spent a lot of paralysis charges on an Orc Knight with 9x charm wand. Should've just swung on him at melee range. The Curare worked well.

Spent Flame Lamp on quick Wizard takedown, and Convoker. Probably fine.
Erred in going rF-- vs unknown wiz book tho. Fireball possible.

Overall, a trivial floor. Already have Beogh **.
Rations holding steady at 8.

Ely wrath was negligible. I noticed it once. She's still angry, though.

Training Armor and Shields to primary now, to get Animate Skeleton etc castable.
Already have Summon Butterfly; haven't needed it.
[2020-01-30 Thu 14:05]

export to YT started.
[2020-01-30 Thu 14:06]

split HOFi playlists.
[2020-01-30 Thu 21:07]

***** play DCSS

****** /

2020-01-31-0716
HOFi Beogh - Galost Fiawk - Vaults:2 - DCSS

Spoiler

Redzoned vs Jory. Haven't fought him many times.
Should've gone all out. Meaning Clouds and Smite.
Instead focused on Acid and melee. Ineffective.
Ely wrath was potent stacked on Jory. Heavily depleted resources.

Completed Desolation of Salt. Great loot.
Magic Mapping + edge running counters.
Didn't have time to drop surplus equipment before entering, but it was fine.

Lessons learned:
Jory's vamping means time's your enemy. Max DPT  counters. Cost immaterial. Need rN+ vs Vamp Drain.

That was the earliest floor Jory can spawn, so the threat was much higher than I realized.
It's a good idea to check the spawn range for extremely dangerous uniques. An early one may be cause to switch branches.

On the bright side, used those resources to essentially clear Vaults:2 while buffed with the Sceptre of Torment in a chokepoint.
[2020-01-31 Fri 07:16]

started YT upload.
[2020-01-31 Fri 07:23]

Lessons learned re Sojobo:
Her weakness is AC.
Iceblast when she's grouped with elementals.
Box of Beasts counters via constrict.
Find a way around her EV.
She scatters clouds, so that's not it.
Pick off her pack first.
Expect the knockback.
[2020-01-31 Fri 11:07]

2020-01-31-1113
HOFi Beogh - Galost Fiawk - Vaults:2 part 2 - DCSS

Spoiler:

Cleared Vaults:2
Killed Sojobo: Iceblast and Box of Beasts constr were counters, didn't need Smite. Clouds were a waste, largely. Couldn't land hits due to her EV.
Expended way too many resources on this floor, between Sojobo and Jory. This was the earliest Sojobo could spawn as well, making it an extremely difficult floor, and with a Desolation of Salt portal, no less. Despite my inexperience fighting both uniques, Galost powered thru without losing significant piety, and even started building his army.
Frederick also spawned, also the earliest possible floor! Killed him easily, though. Stairs to counter Spellforged, needles into his weak EV, then won melee while rmsl his spells.

After reviewing unique spawn ranges, I realize that Vaults is considered deeper than Elf. Therefore Elf should be done before Vaults, usually. The uniques starting from Vaults:2 are higher tier than those whose primary range is late Dungeon, Poison, Water and Elf. So while I certainly could've handled the encounters more skillfully, the recent difficulty is largely due to skipping Elf:1-2.

Judging by unique ranges, progression should be:
Elf:1-2
Vaults:1
Depths:1-2
Elf:3
Vaults:2-4
Depths:3-5

The above are relatively similar, so difficulty smoothing takes precedence over branch selection. By contrast, Slime, Vaults:5, Crypt, Vestibule, Abyss and Zot are much more distinctive, and thus one's character determines their timing.

So by doing Vaults:2, I was actually skipping Elf:1-2, Depths:1-2, and Elf:3, 5 floors.

I'll have to test how well unique ranges match floor difficulty, of course.

Applying the technique to early branches doesn't yield clear breakpoints, except that D:10 seems significant. Branch character is strongly distinct at that stage, so I don't think it makes sense to rely on the technique, except to respect the step to D:10, which adds Josephine, Nergalle, Fannar, Sonja and Snorg.

How does this differ from the meta?

https://crawl.develz.org/info/index.php?q=hyperelliptic
> Lair -> D:12 -> Orc -> D:15 -> S:3 -> maybe other S:3 -> maybe Elf:1-2 -> get one S rune -> Vaults:4 -> get second S rune -> maybe Crypt -> Depths:5 -> get three runes -> Zot ("S" means Shoals/Snake/Spider/Swamp)

Hm, I should just use absolute depth as a proxy for difficulty. Always express in terms of the path to the Orb, and round up. Thus:
Lair1~D11
Orc1~D12
Elf1~D14
Lairiable1~Lair4~D14
Vaults1~D15
Depths1~D16

Whether to rate a branch as higher or lower difficulty than its absolute depth depends on the character's fit. I should make a table from a spreadsheet.

The wiki's depth values for Orc and Lair can't be trusted because at least some reflect longer branch depths than .23 has.
[2020-01-31 Fri 12:07]

Absolutely depth isn't a good proxy for difficulty. However, it is instructive, when combined with a branch difficulty rating, and a knowledge of unexpected difficulty spikes. For example, branch entrances and ends are more difficult than normal. But there are certain points in the middle that spike, too: D:10 and Depths:3.
[2020-01-31 Fri 12:36]

****** uv4

******* he wrote

#+begin_quote
Ultraviolent4
5 hours ago (edited)
@ 8:12 Unaware of how long it takes to put on a helmet leading to the 1st enemy of the game having a completely free attack. No explored territory to retreat to if free attack did significant damage. Potentially lethal mistake.

@ 13:45 Consistently failing to retreat far enough to completely attenuate combat noise. Constantly risking additional enemies being alerted to make multi-staggered-engagement fights. Totally unnecessary and avoidable risk. This lazy (or uninformed - impossible to tell) play is extremely disappointing to me. I wasn't expecting to see suboptimal tactics from someone who takes pride in slow but optimal play.

@ 15:53 Decides to run from elec whip kobold by going downstairs to D2. Very dangerous move because no retreat back up is possible. Could possibly meet worse enemies on D2 and then have to fight the elec kobold while injured. Doesn't even occur to him to shaft the kobold to D2 so that D1 can be fully explored and mined for max XP and consumables.

@ 16:03 Not checking safety of pillar properly. This pillar is of crucial importance because Leo is effectively trapped on D2 due to elec whip kobold on the floor above. Then goes on to willingly fight a worm with no safe pillars and no possible retreat upwards. Insanity. If forced to run, could meet a D2 adder while significantly hurt.

@ 19:44 Going up the unknown stair when a known stair is only a handful of steps further. If more D1 exploration is desired, it's safer to take the known stair and walk through tested paths. The unknown stair risks being adjacent to the elec kobold + new monsters in unknown territory. At worst, the known stair risks being adjacent to the elec kobold but at least it will be known territory with no new monsters. Yep indeed. The unknown stair turns out to be right near where the elec kobold was. Lucky to be unpunished this time.

@ 20:17 Exploring in the known vicinity of Robin is a mistake when there is still unexplored territory on the the opposite side of the floor.

@ 21:11 Retreating towards Robin's area while poisoned to heal. Better to stay in place. Better to not even be near Robin at all!

@ 20:40 Seeming surprise at meeting Robin after walking around her area all this time. Pretty funny.

@ 22:15 Choosing to fight Robin in a hallway when she can trap with thrown and mighted goblins is simply wrong. If she has potions she could be kited to reset but if trapped, this is impossible.

@ 24:45 Leo thinks he would need to use the flame wand to kill the elec kobold safely. Decides not to, presumably to conserve the consumable wand charges. Doesn't realise the kill is risk-free from range with a hunting sling. Could have a free elec weapon + whatever other items and consumables are on D1 + whatever extra XP is there. Early elec whip would be fantastic because it cross trains with axes which are already trained.

@ 28:31 Poor and rushed movement leads to free Terrence attack.

@ 30:21 Moving towards the last-known location of the elec kobold after shouting and alerting it. Kobold is allowed it to get a free move, closing the gap and allowing less time to shoot from range. Mistake not acknowledged, possibly unnoticed. Flaming wand charge wasted. Sling would have sufficed.

@ 32:17 Acknowledges that Terrence isn't so dangerous then proceeds to fire sling bullets instead of stones. Risk of mulching the more valuable ranged ammunition for no appreciable reason. Doesn't seem to realise this choice was made. Maybe lazy, maybe unaware.

No further time to continue watching now. May continue later but probably not. There is no attempt to be entertaining so the play itself must carry. Play is largely unimpressive at present, however.
#+end_quote

******* my reply

I don't want to switch tasks to read this now, but there's a prominent false premise. This playlist is called "casual" and isn't my attempt at optimal play. I started recording DCSS because I caught a virus and was too sick to focus on work, so just fired it up. I'm not really using Textmind here and haven't compiled my notes. However I am TAKING notes and playing in a way that's fun for me. It's not useful to play optimally during experimentation, because it takes too long to get informative results about the current question. A strategic improvement will be noticeable despite tactical sloppiness.

In short, I don't recommend or expect anyone to watch this, I'm just practicing. I have no intention to produce definitive DCSS video until I've recorded the Castle of the Winds run. And I'm busy doing Spacemacs code to support Textmind right now, so that's on hold as well.
[2020-01-31 Fri 18:02]

****** /

changed camtasia keybinds to s-S-7 and s-S-8
that'll work much better
also need the menu bar visible so that I can see whether the recording button is lit
can do by just leaving my mouse at top.
nope, have to sacrifice some screen space by un-fullscreening.
maybe I can limit the recording window accordingly, then?
that'll have to do
[2020-02-01 Sat 03:02]

changed mute key to s-M
[2020-02-01 Sat 03:07]

****** /

dcss recording session
major jump in production values, thanks to the pause key.
would be even better if I can learn to always mute when not speaking
ready to join the big leagues now. Awesome and unexpected. I had despaired of solving the commentary problem. All I needed was pause.

2020-02-01-0425
HOFi Beogh - Galost Fiawk - Elf:1 - DCSS

Looted Vaults:2. Cleared Elf:1.
Was way too easy. Overleveled for it.
[2020-02-01 Sat 04:25]

started upload
pushed repos
[2020-02-01 Sat 04:29]

I should start giving my Textmind commits meaningful titles
the rest is already automatically captured.
[2020-02-01 Sat 04:30]

******

attempted to disable wizmode
pressing & accidentally took a step off-camera due to shift not working due to some weird state involving keyboard switch.
[2020-02-02 Sun 08:23]

capslock won't activate
toggling keyboard switch fixed.
[2020-02-02 Sun 08:24]

uncleared sections of Elf:2 and Elf:3 are too deep, and call for Vault Sentinel mark pulls.
I'll try Depths:1 now, and see whether the difficulty is appropriate.
If not, I can try to grab two Vault Sentinels from Vaults:2 for Elf pulls.
I'll need to clear the path of orc followers first.
[2020-02-02 Sun 10:12]

That welcome was too warm for my taste
2 Deep Trolls dropped Galost to 1/2 HP.
Not ready for Depths yet.
Try to collect 2 Vaults Sentinels then.
[2020-02-02 Sun 10:18]

Orc knight has -2 weapon, and 2h arbalest, so I'll give him a 2h polearm

I'll try pulling elf with just one Vault Sentinel and see how that works.
[2020-02-02 Sun 10:35]

I can just leave him on Elf:3 and use him to pull repeatedly. They'll keep falling back to their original positions.

That went great! Held HoB rush at a chokepoint.

Could've called in Orc support instead of using the Lamp of Flame. Meh.

Notice the tremendous strategic value of MR-, which has allowed me to defeat the HoB in detail with -Tele!

no useful weapons in HoB. Delayed it too long. Should pull the Vaults Sentinels from Vaults:1. That's why it's much easier than Vaults:2.

Suicide bomber elf did damnation on himself and orc crowd. ouch.

Should've used disintegration on the Vault Sentinel once he had the Disintegration wand.

cleared Elf:3
[2020-02-02 Sun 14:26]

2020-02-02-1426
HOFi Beogh - Galost Fiawk - Elf:2 - DCSS

Spoiler:

Elf:2 cleared. Hall of Blades cleared with Vaults Sentinel pull. Highly effective. Standard Elf doctrine now is to pull a Vault Sentinel from Vaults:1 for this purpose. That must be why Vaults:1 is so much less dangerous than Vaults:2.
Elf:3 cleared. Vaults Sentinel used for end vault. Highly effective.

Tactics a bit sloppy since branch trivialized. Triggered a Zot trap needlessly; should've simply excluded that stair permanently. A few avoidable smites and some lost Disintegration charges. Cacodemon had LoF for a turn.

Orc army leveled quite well.

It's obvious now that all of Elf should be completed before doing more of Vaults:1 than is necessary to collect a Vaults Sentinel or two. Slime is usually the branch to delay, since it serves to level Zin or Jiyva piety in preparation for Abyss, and to mollify the prior god's wrath. Crypt serves the same function for TSO.

Vaults:5 is risky for HOFi Beogh and thus should be delayed until after the switch to Zin and farming of Abyss.

The prevalence of harder-hitting monsters in Depths relative to Vaults means that Vaults:2-4 should be completed prior to Depths:1.

The complete essential HOFi god-branch progression:

Ely*: Lair, Orc, Dungeon, Poison and Water when have flight
Lose Ely piety securing Elf:1 entrance
Convert to Beogh. Do Elf:1. Bypass vaults.
Clear Elf:2 except Hall of Blades.
Breach Vaults:1 and get a Vaults Sentinel pet
Clear Elf:1-2 vaults with Sentinel pull. Do Elf:3 similarly.
Vaults:1-4
Depths:1 to Abyss entrance
Kill Beogh followers and expend all piety in Vaults:5 ambush. Otherwise will lose their gear.
Convert to Zin. Donate.
Slime:1-5 to build piety and mollify wrath.
Farm Abyss
Vaults:5, Zot
Convert to TSO. Crypt, Vestibule, Hell, Pan, Tomb.
Zin for Orb run or Usk for Ziggurats.

*Note that HOFi is vulnerable without a heavy-Invo god, so delaying for a late Ely can be riskier than accepting a secondary choice, such as Beogh or Zin.
[2020-02-02 Sun 15:07]

I should probably upload this to Bibliodemos' essential combos page.
I can take it off the YT vid tho.
[2020-02-02 Sun 15:08]

****** /

Edited god-branch progression.
[2020-02-04 Tue 01:10]

2020-02-04-0255
HOFi Beogh - Galost Fiawk - Vaults:3 - DCSS

Looted Elf

Spoiler:

Cleared Vaults:3
Used MR- with Vaults Sentinels to pull to stairs

Minor mistakes:
Switched to Troll Leather Armor prematurely
MR- gear on with LoF to Ogre Mage
Forgot to check training, overtrained Slings a bit.

Vaults difficulty is appropriate now. Progression path confirmed.
[2020-02-04 Tue 02:53]

remember to adjust playstyle by food status

recording with inbuilt imac mic this time.
[2020-02-04 Tue 15:54]

inbuilt imac mic has an unpleasant interaction with Mutify
Mutify doesn't completely kill sound intake, so the mic picks up very quiet noises
but it adjusts so that those noises are equally prominent to speech in camtasia, if the two aren't simultaneous
max noise reduction reduces but doesn't eliminate this.
it's not a dealbreaker, but it's mildly annoying.

2020-02-04-1727
HOFi Beogh - Galost Fiawk - Vaults:4 - DCSS

Spoiler:

Cleared Vaults:4.
Max piety. First warlord.
Minimal resources spent, as usual. Mostly rechargeable evocables.

Experimented with bringing the whole orc army out onto the floor, but it was too cumbersome. Elite squad only, for very temporary assistance, and mind the line of retreat.
Key tactic is bouncing stairs with Sentinel mark pulls.
Descending with whole army to combat a camped stair also doesn't work. Causes noob casualties. Might work better with elite squad.
If the army is too densely packed around the stair, stairdancing monsters up will put them on the periphery where they can cause noob causualties. Avoid.
[2020-02-04 Tue 17:27]

need to sync dictionaries between imac accounts
[2020-02-04 Tue 17:35]

****** /

2020-02-05-0813
HOFi Beogh - Galost Fiawk - Depths:1 - DCSS

Looted Vaults:4

Spoiler:

Cleared Depths:1
Entrance rush broken cheaply with stairdancing and 1/8 Might. Should've used a bigger ambush to counter the rush.
Killed Mara easily with Orc overwhelm.
Small unit training had limited application due to single entrance, but still made strong progress.
Killed Enchantress. Should've used Lightning Rod to reduce expenditure when fighting her pack. Cost some smites and Iceblasts, and dropped to ~1/3 HP.
Good use of Enslavement for Pearl Dragon zombie rearguard. Lost an orc knight and priest. Should've ordered them to follow when the zombie's charm ran out.
[2020-02-05 Wed 08:13]

****** /

Investigate Draconian Qaz connection
nah, stealth apt decent.

impossible to suicide hardcore orcs
just slime wall them to death to preserve proper branch progression

2020-02-05-1919
HOFi Beogh - Galost Fiawk - Depths:2 - DCSS

Lots more audio commentary now. Getting the hang of it.

Spoiler:

Cleared Depths:2. Found Abyss entrance. Ready to switch to Zin and do Slime.
Last task: kill my orc followers before switching to Zin.

Result: 4+ hour session. Because I refused to quit until I succeeded in killing them, and they refused to die. The result of our mutual stubbornness was clearing Vaults:5, Vestibule, Depths, Zot, and Crypt. Finally I murdered three of the four remaining immortals on the Slime entrance walls and converted to Zin, slaying the last on the altar.

As a result, my play after Depths:2 was increasingly rushed and tilted. Nearly died to a Curse Skull in the Depths Silent Spectre prison vault cuz forgot lig is for Torment. Derp.

Anyway rushing Beogh worked surprisingly well, because I had a faith amulet to Smite sources of damage that multiply by party number. I wasn't even looting. It was fun to play fast, or would've been if I hadn't been annoyed.

Game is too easy, obviously.

Killed Boris twice, Geryon, converted Roka.
[2020-02-05 Wed 19:19]

****** /

Faith amulet breaks Beogh balance, makes him viable thru Zot.

Galost Fiawk already proved this. Now restart HOFi, cuz screwed up the god-branch progression.

He donated 14k, waiting brought him up to piety 5p, couldn't get 6. Fair enough.
[2020-02-07 Fri 05:48]

Galost Fiawk quit with 600k points.
[2020-02-07 Fri 05:49]

****** /

started HOFi Jyisharikk

pronounce the second k

quit cuz hard name

started HOFi Giac

2020-02-07-0708
HOFi Ely - Giac - D:1 - DCSS

Spoiler:

Found early D4 Crystal Plate Armour.
Maybe took a risk stairdancing an Ogre.
Cleared almost all D5
D5 temple Ely.
Shafted to D8.
Killed Two-Headed Ogre. Wasn't in 1-hit range. Was at 46 HP and his clubs had negative enchants, unlike (maybe) the fsimmed one.
[2020-02-07 Fri 07:08]

started upload
[2020-02-07 Fri 07:29]

***** /

meta checklist:
- [ ] (org-reset-checkbox-state-subtree)
needs to go inside the tree.
check template.
remove obsolete
  - [ ] (leo-checklist-to-not-done)
[2020-02-07 Fri 09:49]

Created new sprinting heading via leo-create-new-sprinting
[2020-02-07 Fri 09:51]
*** Work copies: send up with H-g

repo_name: Bibliodemos/textmind

license: unknown


code:
* Dashboard

** video checklist

- [ ] (org-reset-checkbox-state-subtree)

- [-] record the take
  - [X] unfullscreen apps
  - [X] mic off
  - [ ] record
  - [X] pause liberally
  - [X] type all thoughts

- [X] save project

- [ ] video
  - [ ] crop
  - [ ] cut?

- [ ] add audio post-commentary
  - [ ] mic in lap
  - [ ] camtasia mic test

- [ ] process audio
  - [ ] clip speed +20-30%
  - [ ] noise removal
  - [ ] pitch -40

- [ ] upload
  - [ ] share project
  - [ ] edit YT vid details, both screens


code:
# IDE, temp, generated, and other local-only files
.idea/
*.iml
node_modules/
tweego.exe
*.html

* Ignoring working folder for Quin2k
mod/

repo_name: Host/degrees

path: .gitignore


code:
<NotepadPlus>
	<UserLang name="Sugarcube4" ext="twee tw" udlVersion="2.1">
		<Settings>
			<Global caseIgnored="no" allowFoldOfComments="no" foldCompact="yes" forcePureLC="0" decimalSeparator="0" />
			<Prefix Keywords1="yes" Keywords2="no" Keywords3="no" Keywords4="no" Keywords5="no" Keywords6="no" Keywords7="no" Keywords8="no" />
		</Settings>
		<KeywordLists>
			<Keywords name="Comments">00 01 02 03/% 03/* 03<!-- 04%/ 04*/ 04--></Keywords>
			<Keywords name="Numbers, prefix1"></Keywords>
			<Keywords name="Numbers, prefix2"></Keywords>
			<Keywords name="Numbers, extras1"></Keywords>
			<Keywords name="Numbers, extras2"></Keywords>
			<Keywords name="Numbers, suffix1"></Keywords>
			<Keywords name="Numbers, suffix2"></Keywords>
			<Keywords name="Numbers, range"></Keywords>
			<Keywords name="Operators1">+ - * / = += -= *= /= ++ -- == != === !== > < >= <= ! && || & | ( )</Keywords>
			<Keywords name="Operators2"></Keywords>
			<Keywords name="Folders in code1, open"><<if</Keywords>
			<Keywords name="Folders in code1, middle"></Keywords>
			<Keywords name="Folders in code1, close"><</if>></Keywords>
			<Keywords name="Folders in code2, open"></Keywords>
			<Keywords name="Folders in code2, middle"></Keywords>
			<Keywords name="Folders in code2, close"></Keywords>
			<Keywords name="Folders in comment, open"></Keywords>
			<Keywords name="Folders in comment, middle"></Keywords>
			<Keywords name="Folders in comment, close"></Keywords>
			<Keywords name="Keywords1">$ _</Keywords>
			<Keywords name="Keywords2"></Keywords>
			<Keywords name="Keywords3"></Keywords>
			<Keywords name="Keywords4"></Keywords>
			<Keywords name="Keywords5"></Keywords>
			<Keywords name="Keywords6"></Keywords>
			<Keywords name="Keywords7"></Keywords>
			<Keywords name="Keywords8"></Keywords>
			<Keywords name="Delimiters">00:: 01 02((EOL)) 03<< 04 05>> 06[[ 07 08]] 09< 10 11> 12'' 13 14'' 15// 16 17// 18@@ 19 20@@ 21[img[ 22 23]]</Keywords>
		</KeywordLists>
		<Styles>
			<WordsStyle name="DEFAULT" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
			<WordsStyle name="COMMENTS" fgColor="808080" bgColor="FFFFFF" fontName="" fontStyle="2" nesting="0" />
			<WordsStyle name="LINE COMMENTS" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
			<WordsStyle name="NUMBERS" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
			<WordsStyle name="KEYWORDS1" fgColor="004080" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
			<WordsStyle name="KEYWORDS2" fgColor="8080C0" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
			<WordsStyle name="KEYWORDS3" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
			<WordsStyle name="KEYWORDS4" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
			<WordsStyle name="KEYWORDS5" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
			<WordsStyle name="KEYWORDS6" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
			<WordsStyle name="KEYWORDS7" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
			<WordsStyle name="KEYWORDS8" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
			<WordsStyle name="OPERATORS" fgColor="800040" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
			<WordsStyle name="FOLDER IN CODE1" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
			<WordsStyle name="FOLDER IN CODE2" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
			<WordsStyle name="FOLDER IN COMMENT" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
			<WordsStyle name="DELIMITERS1" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="5" fontSize="12" nesting="0" />
			<WordsStyle name="DELIMITERS2" fgColor="800080" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="50334724" />
			<WordsStyle name="DELIMITERS3" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="1024" />
			<WordsStyle name="DELIMITERS4" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
			<WordsStyle name="DELIMITERS5" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="32" />
			<WordsStyle name="DELIMITERS6" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="2" nesting="16" />
			<WordsStyle name="DELIMITERS7" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="0" nesting="0" />
			<WordsStyle name="DELIMITERS8" fgColor="8080FF" bgColor="FFFFFF" fontName="" fontStyle="1" nesting="0" />
		</Styles>
	</UserLang>
</NotepadPlus>


code:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="48" height="48" version="1.1" inkscape:version="0.48.0 r9654">
  <defs id="defs4"/>
  <sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="11.313708" inkscape:cx="27.203376" inkscape:cy="26.578528" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" inkscape:window-width="1280" inkscape:window-height="968" inkscape:window-x="-4" inkscape:window-y="-4" inkscape:window-maximized="1">
	<inkscape:grid type="xygrid" id="grid2985" empspacing="5" visible="true" enabled="true" snapvisiblegridlinesonly="true"/>
  </sodipodi:namedview>
  <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1004.3622)">
	<g id="g3000" transform="translate(-6,1003)">
	  <path sodipodi:nodetypes="ccccc" inkscape:connector-curvature="0" id="path2987" d="m 30,2.3621826 -20,10.0000004 20,10 20,-10 z" style="fill:#f9f9f9;stroke:none"/>
	  <path style="fill:#ececec;stroke:none" d="m 30,22.362183 0,25 20,-10 0,-25 z" id="path2989" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc"/>
	  <path sodipodi:nodetypes="ccccc" inkscape:connector-curvature="0" id="path2991" d="m 30,22.362183 0,25 -20,-10 0,-25 z" style="fill:#cccccc;stroke:none"/>
	  <path inkscape:connector-curvature="0" id="path2993" d="M 30,2.3749996 10,12.375 l 0,25 20,10 20,-10 0,-25 L 30,2.3749996 z" style="fill:none;stroke:#4d4d4d;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"/>
	</g>
  </g>
  <metadata>
	<rdf:RDF>
	  <cc:Work>
		<dc:format>image/svg+xml</dc:format>
		<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
		<cc:license rdf:resource="http://creativecommons.org/licenses/publicdomain/"/>
		<dc:publisher>
		  <cc:Agent rdf:about="http://openclipart.org/">
			<dc:title>Open Clip Art Library</dc:title>
		  </cc:Agent>
		</dc:publisher>
		<dc:title>Sugar Cube icon</dc:title>
		<dc:date>2010-10-10T11:46:52</dc:date>
		<dc:description>A sugar cube.</dc:description>
		<dc:source>http://openclipart.org/detail/89407/sugar-cube-icon-by-jhnri4</dc:source>
		<dc:creator>
		  <cc:Agent>
			<dc:title>jhnri4</dc:title>
		  </cc:Agent>
		</dc:creator>
		<dc:subject>
		  <rdf:Bag>
			<rdf:li>SVG</rdf:li>
			<rdf:li>block</rdf:li>
			<rdf:li>clip art</rdf:li>
			<rdf:li>clipart</rdf:li>
			<rdf:li>cube</rdf:li>
			<rdf:li>icon</rdf:li>
			<rdf:li>sugar</rdf:li>
			<rdf:li>white</rdf:li>
		  </rdf:Bag>
		</dc:subject>
	  </cc:Work>
	  <cc:License rdf:about="http://creativecommons.org/licenses/publicdomain/">
		<cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction"/>
		<cc:permits rdf:resource="http://creativecommons.org/ns#Distribution"/>
		<cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks"/>
	  </cc:License>
	</rdf:RDF>
  </metadata>
</svg>


code:
#!/bin/bash

if [ ! -f "$(command -v tweego)" ]; then
	echo "Cannot find tweego. Please install tweego before compiling."
	exit 1
fi

VERSION="$(git describe --tags --always --dirty)"

TWEEGO_PATH="./StoryFormats" tweego -o "Degrees of Lewdity $VERSION.html" game

path: compile


code:
@set TWEEGO_PATH=%cd%\StoryFormats
@tweego -o "Degrees of Lewdity VERSION.html" game


code:
function colourContainerClasses() {
	var V = State.variables;
	return 'hair-'  + (V.haircolour||'').replace(/ /g,'-') +
		' ' + 'eye-'   + (V.eyecolour||'').replace(/ /g,'-') +
		' ' + 'upper-' + (V.uppercolour||'').replace(/ /g,'-') +
		' ' + 'lower-' + (V.lowercolour||'').replace(/ /g,'-') +
		' ' + 'under-' + (V.undercolour||'').replace(/ /g,'-')
}
window.colourContainerClasses = colourContainerClasses; // export function


code:
:: Widgets Lower Clothing [widget]

<<widget "lowernaked">><<nobr>>
<<lowerstrip>>
<<if $lowertemp is "init">>
<<set $lowertemp to 1>>
<<elseif $lowertemp is 1>>
<<set $lowertemp to 0>>
<</if>>
<<set $lowerclothes to "naked">>
<<set $lowervariable to "naked">>
<<set $lowerintegrity to 0>>
<<set $lowerintegritymax to 0>>
<<set $lowerfabricstrength to 0>>
<<set $lowerreveal to 1000>>
<<set $lowerword to "n">>
<<set $loweronepiece to 0>>
<<set $lowerstate to 0>>
<<set $skirt to 0>>
<<set $skirtdown to 0>>
<<set $lowerstatebase to 0>>
<<set $lowervaginaexposed to 1>>
<<set $loweranusexposed to 1>>
<<set $lowerplural to 0>>
<<set $lowercolour to 0>>
<<set $lowerexposed to 2>>
<<set $lowerexposedbase to 2>>
<<set $lowervaginaexposedbase to 1>>
<<set $loweranusexposedbase to 1>>
<<set $lowertype to "naked">>
<<if $clothingchange isnot 1 and $ruined isnot 1>>
	<<if $upperset is $lowerset>>
	<<set $clothingchange to 1>><<uppernaked>>
	<</if>>
<</if>>
<<set $clothingchange to 0>>
<<set $lowerset to "lower">>
<<set $lowergender to "n">>
<</nobr>><</widget>>

<<widget "lowersundress">><<nobr>>
<<lowerstrip>><<lowerundress>>
<<set $lowerclothes to "sundress skirt">>
<<set $lowervariable to "lowersundress">>
<<set $lowersundressintegritymax to 100>>
<<set $lowerintegritymax to $lowersundressintegritymax>>
<<set $fabricstrength to 30>>
<<set $lowerreveal to 200>>
<<set $lowerword to "a">>
<<set $loweronepiece to 1>>
<<set $lowerstate to "waist">>
<<set $skirt to 1>>
<<set $skirtdown to 1>>
<<set $lowerstatebase to "waist">>
<<set $lowervaginaexposed to 0>>
<<set $loweranusexposed to 0>>
<<set $lowerplural to 0>>
<<if $lowersundressnew is 1>><<set $lowersundressnew to 0>><<set $lowersundressintegrity to $lowersundressintegritymax>>
<</if>>
<<set $lowercolour to $sundresscolour>>
<<set $lowerintegrity to $lowersundressintegrity>>
<<set $lowerexposed to 0>>
<<set $lowerexposedbase to 0>>
<<set $lowervaginaexposedbase to 0>>
<<set $loweranusexposedbase to 0>>
<<set $lowertype to "normal">>
<<if $clothingchange isnot 1>>
	<<if $upperset is $lowerset>>
	<<set $clothingchange to 1>><<upperstrip>><<upperundress>>
	<</if>>
<</if>>
<<set $clothingchange to 0>>
<<set $lowerset to "sundress">>
<<set $lowergender to "f">>
<</nobr>><</widget>>

<<widget "lowerpjs">><<nobr>>
<<lowerstrip>><<lowerundress>>
<<set $lowerclothes to "pyjama bottoms">>
<<set $lowervariable to "lowerpjs">>
<<set $lowerpjsintegritymax to 100>>
<<set $lowerintegritymax to $lowerpjsintegritymax>>
<<set $lowerfabricstrength to 20>>
<<set $lowerreveal to 100>>
<<set $lowerword to "n">>
<<set $loweronepiece to 0>>
<<set $lowerstate to "waist">>
<<set $skirt to 0>>
<<set $skirtdown to 0>>
<<set $lowerstatebase to "waist">>
<<set $lowervaginaexposed to 0>>
<<set $loweranusexposed to 0>>
<<set $lowerplural to 1>>
<<if $lowerpjsnew is 1>><<set $lowerpjsnew to 0>><<set $lowerpjsintegrity to $lowerpjsintegritymax>><<set $lowerpjscolour to either("blue", "white", "red", "green", "black", "pink", "purple", "tangerine", "yellow")>>
<<if $lowerpjscolourchoice isnot 0>>
<<set $lowerpjscolour to $lowerpjscolourchoice>>
<</if>>
<</if>>
<<set $lowercolour to $lowerpjscolour>>
<<set $lowerintegrity to $lowerpjsintegrity>>
<<set $lowerexposed to 0>>
<<set $lowerexposedbase to 0>>
<<set $lowervaginaexposedbase to 0>>
<<set $loweranusexposedbase to 0>>
<<set $lowertype to "sleep">>
<<if $clothingchange isnot 1>>
	<<if $upperset is $lowerset>>
	<<set $clothingchange to 1>><<upperstrip>><<upperundress>>
	<</if>>
<</if>>
<<set $clothingchange to 0>>
<<set $lowerset to "lower">>
<<set $lowergender to "n">>
<</nobr>><</widget>>

<<widget "lowertowel">><<nobr>>
<<lowerstrip>><<lowerundress>>
<<set $lowerclothes to "towel">>
<<set $lowervariable to "lowertowel">>
<<set $lowertowelintegritymax to 10>>
<<set $lowerintegritymax to $lowertowelintegritymax>>
<<set $lowerfabricstrength to 20>>
<<set $lowerreveal to 800>>
<<set $lowerword to "n">>
<<set $loweronepiece to 0>>
<<set $lowerstate to "waist">>
<<set $skirt to 1>>
<<set $skirtdown to 1>>
<<set $lowerstatebase to "waist">>
<<set $lowervaginaexposed to 0>>
<<set $loweranusexposed to 0>>
<<set $lowerplural to 0>>
<<if $lowertowelnew is 1>><<set $lowertowelnew to 0>><<set $lowertowelintegrity to $lowertowelintegritymax>><<set $lowertowelcolour to either("blue", "white", "red", "green", "black", "pink", "purple", "tangerine", "yellow")>>
<<if $lowertowelcolourchoice isnot 0>>
<<set $lowertowelcolour to $lowertowelcolourchoice>>
<<set $lowertowelcolourchoice to 0>>
<</if>>
<</if>>
<<set $lowercolour to $lowertowelcolour>>
<<set $lowerintegrity to $lowertowelintegrity>>
<<set $lowerexposed to 0>>
<<set $lowerexposedbase to 0>>
<<set $lowervaginaexposedbase to 0>>
<<set $loweranusexposedbase to 0>>
<<set $lowertype to "normal">>
<<if $clothingchange isnot 1>>
	<<if $upperset is $lowerset>>
	<<set $clothingchange to 1>><<upperstrip>><<upperundress>>
	<</if>>
<</if>>
<<set $clothingchange to 0>>
<<set $lowerset to "lower">>
<<set $lowergender to "n">>
<</nobr>><</widget>>

<<widget "lowerbikini">><<nobr>>
<<lowerstrip>><<lowerundress>>
<<set $lowerclothes to "bikini bottoms">>
<<set $lowervariable to "lowerbikini">>
<<set $lowerbikiniintegritymax to 20>>
<<set $lowerintegritymax to $lowerbikiniintegritymax>>
<<set $lowerfabricstrength to 20>>
<<set $lowerreveal to 900>>
<<set $lowerword to "n">>
<<set $loweronepiece to 0>>
<<set $lowerstate to "waist">>
<<set $skirt to 0>>
<<set $skirtdown to 0>>
<<set $lowerstatebase to "waist">>
<<set $lowervaginaexposed to 0>>
<<set $loweranusexposed to 0>>
<<set $lowerplural to 1>>
<<if $lowerbikininew is 1>><<set $lowerbikininew to 0>><<set $lowerbikiniintegrity to $lowerbikiniintegritymax>><<set $lowerbikinicolour to either("blue", "white", "red", "green", "black", "pink", "purple", "tangerine", "yellow")>>
<<if $lowerbikinicolourchoice isnot 0>>
<<set $lowerbikinicolour to $lowerbikinicolourchoice>>
<</if>>
<</if>>
<<set $lowercolour to $lowerbikinicolour>>
<<set $lowerintegrity to $lowerbikiniintegrity>>
<<set $lowerexposed to 1>>
<<set $lowerexposedbase to 1>>
<<set $lowervaginaexposedbase to 0>>
<<set $loweranusexposedbase to 0>>
<<set $lowertype to "swim">>
<<if $clothingchange isnot 1>>
	<<if $upperset is $lowerset>>
	<<set $clothingchange to 1>><<upperstrip>><<upperundress>>
	<</if>>
<</if>>
<<set $clothingchange to 0>>
<<set $lowerset to "lower">>
<<if $undertype isnot "chastity">>
<<underundress>>
<</if>>
<<set $lowergender to "f">>
<</nobr>><</widget>>

<<widget "waistapron">><<nobr>>
<<lowerstrip>><<lowerundress>>
<<set $lowerclothes to "waist apron">>
<<set $lowervariable to "waistapron">>
<<set $waistapronintegritymax to 10>>
<<set $lowerintegritymax to $waistapronintegritymax>>
<<set $lowerfabricstrength to 20>>
<<set $lowerreveal to 800>>
<<set $lowerword to "a">>
<<set $loweronepiece to 0>>
<<set $lowerstate to "waist">>
<<set $skirt to 1>>
<<set $skirtdown to 1>>
<<set $lowerstatebase to "waist">>
<<set $lowervaginaexposed to 1>>
<<set $loweranusexposed to 1>>
<<set $lowerplural to 0>>
<<if $waistapronnew is 1>><<set $waistapronnew to 0>><<set $waistapronintegrity to $waistapronintegritymax>><<set $waistaproncolour to either("blue", "white", "red", "green", "black", "pink", "purple", "tangerine", "yellow")>>
<<if $waistaproncolourchoice isnot 0>>
<<set $waistaproncolour to $waistaproncolourchoice>>
<</if>>
<</if>>
<<set $lowercolour to $waistaproncolour>>
<<set $lowerintegrity to $waistapronintegrity>>
<<set $lowerexposed to 1>>
<<set $lowerexposedbase to 1>>
<<set $lowervaginaexposedbase to 1>>
<<set $loweranusexposedbase to 1>>
<<set $lowertype to "normal">>
<<if $clothingchange isnot 1>>
	<<if $upperset is $lowerset>>
	<<set $clothingchange to 1>><<upperstrip>><<upperundress>>
	<</if>>
<</if>>
<<set $clothingchange to 0>>
<<set $lowerset to "lower">>
<<set $lowergender to "n">>
<</nobr>><</widget>>

<<widget "shorts">><<nobr>>
<<lowerstrip>><<lowerundress>>
<<set $lowerclothes to "shorts">>
<<set $lowervariable to "shorts">>
<<set $shortsintegritymax to 120>>
<<set $lowerintegritymax to $shortsintegritymax>>
<<set $lowerfabricstrength to 20>>
<<set $lowerreveal to 300>>
<<set $lowerword to "n">>
<<set $loweronepiece to 0>>
<<set $lowerstate to "waist">>
<<set $skirt to 0>>
<<set $skirtdown to 0>>
<<set $lowerstatebase to "waist">>
<<set $lowervaginaexposed to 0>>
<<set $loweranusexposed to 0>>
<<set $lowerplural to 1>>
<<if $shortsnew is 1>><<set $shortsnew to 0>><<set $shortsintegrity to $shortsintegritymax>><<set $shortscolour to either("blue", "white", "red", "green", "black", "pink", "purple", "tangerine", "yellow")>>
<<if $shortscolourchoice isnot 0>>
<<set $shortscolour to $shortscolourchoice>>
<</if>>
<</if>>
<<set $lowercolour to $shortscolour>>
<<set $lowerintegrity to $shortsintegrity>>
<<set $lowerexposed to 0>>
<<set $lowerexposedbase to 0>>
<<set $lowervaginaexposedbase to 0>>
<<set $loweranusexposedbase to 0>>
<<set $lowertype to "normal">>
<<if $clothingchange isnot 1>>
	<<if $upperset is $lowerset>>
	<<set $clothingchange to 1>><<upperstrip>><<upperundress>>
	<</if>>
<</if>>
<<set $clothingchange to 0>>
<<set $lowerset to "lower">>
<<set $lowergender to "n">>
<</nobr>><</widget>>

<<widget "schoolshorts">><<nobr>>
<<lowerstrip>><<lowerundress>>
<<set $lowerclothes to "school shorts">>
<<set $lowervariable to "schoolshorts">>
<<set $schoolshortsintegritymax to 160>>
<<set $lowerintegritymax to $schoolshortsintegritymax>>
<<set $lowerfabricstrength to 20>>
<<set $lowerreveal to 200>>
<<set $lowerword to "n">>
<<set $loweronepiece to 0>>
<<set $lowerstate to "waist">>
<<set $skirt to 0>>
<<set $skirtdown to 0>>
<<set $lowerstatebase to "waist">>
<<set $lowervaginaexposed to 0>>
<<set $loweranusexposed to 0>>
<<set $lowerplural to 1>>
<<if $schoolshortsnew is 1>><<set $schoolshortsnew to 0>><<set $schoolshortsintegrity to $schoolshortsintegritymax>><<set $schoolshortscolour to either("blue", "white", "red", "green", "black", "pink", "purple", "tangerine", "yellow")>>
<<if $schoolshortscolourchoice isnot 0>>
<<set $schoolshortscolour to $schoolshortscolourchoice>>
<</if>>
<</if>>
<<set $lowercolour to $schoolshortscolour>>
<<set $lowerintegrity to $schoolshortsintegrity>>
<<set $lowerexposed to 0>>
<<set $lowerexposedbase to 0>>
<<set $lowervaginaexposedbase to 0>>
<<set $loweranusexposedbase to 0>>
<<set $lowertype to "school">>
<<if $clothingchange isnot 1>>
	<<if $upperset is $lowerset>>
	<<set $clothingchange to 1>><<upperstrip>><<upperundress>>
	<</if>>
<</if>>
<<set $clothingchange to 0>>
<<set $lowerset to "lower">>
<<set $lowergender to "m">>
<</nobr>><</widget>>

<<widget "schoolskirt">><<nobr>>
<<lowerstrip>><<lowerundress>>
<<set $lowerclothes to "school skirt">>
<<set $lowervariable to "schoolskirt">>
<<set $schoolskirtintegritymax to 160>>
<<set $lowerintegritymax to $schoolskirtintegritymax>>
<<set $lowerfabricstrength to 20>>
<<set $lowerreveal to 200>>
<<set $lowerword to "a">>
<<set $loweronepiece to 0>>
<<set $lowerstate to "waist">>
<<set $skirt to 1>>
<<set $skirtdown to 1>>
<<set $lowerstatebase to "waist">>
<<set $lowervaginaexposed to 0>>
<<set $loweranusexposed to 0>>
<<set $lowerplural to 0>>
<<if $schoolskirtnew is 1>><<set $schoolskirtnew to 0>><<set $schoolskirtintegrity to $schoolskirtintegritymax>><<set $schoolskirtcolour to either("blue", "white", "red", "green", "black", "pink", "purple", "tangerine", "yellow")>>
<<if $schoolskirtcolourchoice isnot 0>>
<<set $schoolskirtcolour to $schoolskirtcolourchoice>>
<</if>>
<</if>>
<<set $lowercolour to $schoolskirtcolour>>
<<set $lowerintegrity to $schoolskirtintegrity>>
<<set $lowerexposed to 0>>
<<set $lowerexposedbase to 0>>
<<set $lowervaginaexposedbase to 0>>
<<set $loweranusexposedbase to 0>>
<<set $lowertype to "school">>
<<if $clothingchange isnot 1>>
	<<if $upperset is $lowerset>>
	<<set $clothingchange to 1>><<upperstrip>><<upperundress>>
	<</if>>
<</if>>
<<set $clothingchange to 0>>
<<set $lowerset to "lower">>
<<set $lowergender to "f">>
<</nobr>><</widget>>

<<widget "lowerschoolswimsuit">><<nobr>>
<<lowerstrip>><<lowerundress>>
<<set $lowerclothes to "school swimsuit bottom">>
<<set $lowervariable to "lowerschoolswimsuit">>
<<set $lowerschoolswimsuitintegritymax to 40>>
<<set $lowerintegritymax to $lowerschoolswimsuitintegritymax>>
<<set $fabricstrength to 30>>
<<set $lowerreveal to 600>>
<<set $lowerword to "a">>
<<set $loweronepiece to 1>>
<<set $lowerstate to "waist">>
<<set $skirt to 0>>
<<set $skirtdown to 0>>
<<set $lowerstatebase to "waist">>
<<set $lowervaginaexposed to 0>>
<<set $loweranusexposed to 0>>
<<set $lowerplural to 0>>
<<if $lowerschoolswimsuitnew is 1>><<set $lowerschoolswimsuitnew to 0>><<set $lowerschoolswimsuitintegrity to $lowerschoolswimsuitintegritymax>>
<</if>>
<<set $lowercolour to $schoolswimsuitcolour>>
<<set $lowerintegrity to $lowerschoolswimsuitintegrity>>
<<set $lowerexposed to 1>>
<<set $lowerexposedbase to 1>>
<<set $lowervaginaexposedbase to 0>>
<<set $loweranusexposedbase to 0>>
<<set $lowertype to "swim">>
<<if $clothingchange isnot 1>>
	<<if $upperset is $lowerset>>
	<<set $clothingchange to 1>><<upperstrip>><<upperundress>>
	<</if>>
<</if>>
<<set $clothingchange to 0>>
<<set $lowerset to "school swimsuit">>
<<if $undertype isnot "chastity">>
<<underundress>>
<</if>>
<<set $lowergender to "f">>
<</nobr>><</widget>>

<<widget "schoolswimshorts">><<nobr>>
<<lowerstrip>><<lowerundress>>
<<set $lowerclothes to "school swim shorts">>
<<set $lowervariable to "schoolswimshorts">>
<<set $schoolswimshortsintegritymax to 40>>
<<set $lowerintegritymax to $schoolswimshortsintegritymax>>
<<set $lowerfabricstrength to 20>>
<<set $lowerreveal to 600>>
<<set $lowerword to "n">>
<<set $loweronepiece to 0>>
<<set $lowerstate to "waist">>
<<set $skirt to 0>>
<<set $skirtdown to 0>>
<<set $lowerstatebase to "waist">>
<<set $lowervaginaexposed to 0>>
<<set $loweranusexposed to 0>>
<<set $lowerplural to 1>>
<<if $schoolswimshortsnew is 1>><<set $schoolswimshortsnew to 0>><<set $schoolswimshortsintegrity to $schoolswimshortsintegritymax>><<set $schoolswimshortscolour to either("blue", "white", "red", "green", "black", "pink", "purple", "tangerine", "yellow")>>
<<if $schoolswimshortscolourchoice isnot 0>>
<<set $schoolswimshortscolour to $schoolswimshortscolourchoice>>
<</if>>
<</if>>
<<set $lowercolour to $schoolswimshortscolour>>
<<set $lowerintegrity to $schoolswimshortsintegrity>>
<<set $lowerexposed to 1>>
<<set $lowerexposedbase to 1>>
<<set $lowervaginaexposedbase to 0>>
<<set $loweranusexposedbase to 0>>
<<set $lowertype to "swim">>
<<if $clothingchange isnot 1>>
	<<if $upperset is $lowerset>>
	<<set $clothingchange to 1>><<upperstrip>><<upperundress>>
	<</if>>
<</if>>
<<set $clothingchange to 0>>
<<set $lowerset to "lower">>
<<if $undertype isnot "chastity">>
<<underundress>>
<</if>>
<<set $lowergender to "m">>
<</nobr>><</widget>>

<<widget "lowerplant">><<nobr>>
<<lowerstrip>><<lowerundress>>
<<set $lowerclothes to "plant skirt">>
<<set $lowervariable to "lowerplant">>
<<set $lowerplantintegritymax to 10>>
<<set $lowerintegritymax to $lowerplantintegritymax>>
<<set $lowerfabricstrength to 20>>
<<set $lowerreveal to 900>>
<<set $lowerword to "a">>
<<set $loweronepiece to 0>>
<<set $lowerstate to "waist">>
<<set $skirt to 1>>
<<set $skirtdown to 1>>
<<set $lowerstatebase to "waist">>
<<set $lowervaginaexposed to 1>>
<<set $loweranusexposed to 1>>
<<set $lowerplural to 0>>
<<if $lowerplantnew is 1>><<set $lowerplantnew to 0>><<set $lowerplantintegrity to $lowerplantintegritymax>><<set $lowerplantcolour to "green">>
<</if>>
<<set $lowercolour to $lowerplantcolour>>
<<set $lowerintegrity to $lowerplantintegrity>>
<<set $lowerexposed to 1>>
<<set $lowerexposedbase to 1>>
<<set $lowervaginaexposedbase to 1>>
<<set $loweranusexposedbase to 1>>
<<set $lowertype to "swim">>
<<if $clothingchange isnot 1>>
	<<if $upperset is $lowerset>>
	<<set $clothingchange to 1>><<upperstrip>><<upperundress>>
	<</if>>
<</if>>
<<set $clothingchange to 0>>
<<set $lowerset to "lower">>
<<if $undertype isnot "chastity">>
<<underundress>>
<</if>>
<<set $lowergender to "n">>
<</nobr>><</widget>>

<<widget "lowereveninggown">><<nobr>>
<<lowerstrip>><<lowerundress>>
<<set $lowerclothes to "evening gown skirt">>
<<set $lowervariable to "lowereveninggown">>
<<set $lowereveninggownintegritymax to 200>>
<<set $lowerintegritymax to $lowereveninggownintegritymax>>
<<set $fabricstrength to 30>>
<<set $lowerreveal to 200>>
<<set $lowerword to "a">>
<<set $loweronepiece to 1>>
<<set $lowerstate to "waist">>
<<set $skirt to 1>>
<<set $skirtdown to 1>>
<<set $lowerstatebase to "waist">>
<<set $lowervaginaexposed to 0>>
<<set $loweranusexposed to 0>>
<<set $lowerplural to 0>>
<<if $lowereveninggownnew is 1>><<set $lowereveninggownnew to 0>><<set $lowereveninggownintegrity to $lowereveninggownintegritymax>>
<</if>>
<<set $lowercolour to $eveninggowncolour>>
<<set $lowerintegrity to $lowereveninggownintegrity>>
<<set $lowerexposed to 0>>
<<set $lowerexposedbase to 0>>
<<set $lowervaginaexposedbase to 0>>
<<set $loweranusexposedbase to 0>>
<<set $lowertype to "normal">>
<<if $clothingchange isnot 1>>
	<<if $upperset is $lowerset>>
	<<set $clothingchange to 1>><<upperstrip>><<upperundress>>
	<</if>>
<</if>>
<<set $clothingchange to 0>>
<<set $lowerset to "evening gown">>
<<set $lowergender to "f">>
<</nobr>><</widget>>


code:
:: Widgets Under Clothing [widget]

<<widget "undernaked">><<nobr>>
	<<if $undertype isnot "chastity">>
<<understrip>>
<<if $undertemp is "init">>
<<set $undertemp to 1>>
<<elseif $undertemp is 1>>
<<set $undertemp to 0>>
<</if>>
<<set $underclothes to "naked">>
<<set $undervariable to "naked">>
<<set $underintegrity to 0>>
<<set $underintegritymax to 0>>
<<set $underfabricstrength to 0>>
<<set $underreveal to 1000>>
<<set $underword to "n">>
<<set $understate to 0>>
<<set $understatebase to 0>>
<<set $undervaginaexposed to 1>>
<<set $underanusexposed to 1>>
<<set $underplural to 0>>
<<set $undercolour to 0>>
<<set $underexposed to 1>>
<<set $underexposedbase to 1>>
<<set $undervaginaexposedbase to 1>>
<<set $underanusexposedbase to 1>>
<<set $undertype to "naked">>
<<set $undergender to "n">>
	<</if>>
<</nobr>><</widget>>

<<widget "plainpanties">><<nobr>>
	<<if $undertype isnot "chastity">>
<<understrip>><<underundress>>
<<set $underclothes to "plain panties">>
<<set $undervariable to "plainpanties">>
<<set $plainpantiesintegritymax to 100>>
<<set $underintegritymax to $plainpantiesintegritymax>>
<<set $underfabricstrength to 15>>
<<set $underreveal to 200>>
<<set $underword to "n">>
<<set $understate to "waist">>
<<set $understatebase to "waist">>
<<set $undervaginaexposed to 0>>
<<set $underanusexposed to 0>>
<<set $underplural to 1>>
<<if $plainpantiesnew is 1>><<set $plainpantiesnew to 0>><<set $plainpantiesintegrity to $plainpantiesintegritymax>><<set $plainpantiescolour to either("blue", "white", "red", "green", "black", "pink", "purple", "tangerine", "yellow")>>
<<if $plainpantiescolourchoice isnot 0>>
<<set $plainpantiescolour to $plainpantiescolourchoice>>
<</if>>
<</if>>
<<set $undercolour to $plainpantiescolour>>
<<set $underintegrity to $plainpantiesintegrity>>
<<set $underexposed to 0>>
<<set $underexposedbase to 0>>
<<set $undervaginaexposedbase to 0>>
<<set $underanusexposedbase to 0>>
<<set $undertype to "normal">>
<<if $lowertype is "swim">>
	<<if $upperset is $lowerset>>
	<<uppernaked>>
	<</if>>
<<lowerundress>>
<</if>>
<<set $undergender to "f">>
	<</if>>
<</nobr>><</widget>>

<<widget "lacepanties">><<nobr>>
	<<if $undertype isnot "chastity">>
<<understrip>><<underundress>>
<<set $underclothes to "lace panties">>
<<set $undervariable to "lacepanties">>
<<set $lacepantiesintegritymax to 60>>
<<set $underintegritymax to $lacepantiesintegritymax>>
<<set $underfabricstrength to 15>>
<<set $underreveal to 400>>
<<set $underword to "n">>
<<set $understate to "waist">>
<<set $understatebase to "waist">>
<<set $undervaginaexposed to 0>>
<<set $underanusexposed to 0>>
<<set $underplural to 1>>
<<if $lacepantiesnew is 1>><<set $lacepantiesnew to 0>><<set $lacepantiesintegrity to $lacepantiesintegritymax>><<set $lacepantiescolour to either("blue", "white", "red", "green", "black", "pink", "purple", "tangerine", "yellow")>>
<<if $lacepantiescolourchoice isnot 0>>
<<set $lacepantiescolour to $lacepantiescolourchoice>>
<</if>>
<</if>>
<<set $undercolour to $lacepantiescolour>>
<<set $underintegrity to $lacepantiesintegrity>>
<<set $underexposed to 0>>
<<set $underexposedbase to 0>>
<<set $undervaginaexposedbase to 0>>
<<set $underanusexposedbase to 0>>
<<set $undertype to "normal">>
<<if $lowertype is "swim">>
	<<if $upperset is $lowerset>>
	<<uppernaked>>
	<</if>>
<<lowerundress>>
<</if>>
<<set $undergender to "f">>
	<</if>>
<</nobr>><</widget>>

<<widget "yfronts">><<nobr>>
	<<if $undertype isnot "chastity">>
<<understrip>><<underundress>>
<<set $underclothes to "Y fronts">>
<<set $undervariable to "yfronts">>
<<set $yfrontsintegritymax to 100>>
<<set $underintegritymax to $yfrontsintegritymax>>
<<set $underfabricstrength to 15>>
<<set $underreveal to 200>>
<<set $underword to "n">>
<<set $understate to "waist">>
<<set $understatebase to "waist">>
<<set $undervaginaexposed to 0>>
<<set $underanusexposed to 0>>
<<set $underplural to 1>>
<<if $yfrontsnew is 1>><<set $yfrontsnew to 0>><<set $yfrontsintegrity to $yfrontsintegritymax>><<set $yfrontscolour to either("blue", "white", "red", "green", "black", "pink", "purple", "tangerine", "yellow")>>
<<if $yfrontscolourchoice isnot 0>>
<<set $yfrontscolour to $yfrontscolourchoice>>
<</if>>
<</if>>
<<set $undercolour to $yfrontscolour>>
<<set $underintegrity to $yfrontsintegrity>>
<<set $underexposed to 0>>
<<set $underexposedbase to 0>>
<<set $undervaginaexposedbase to 0>>
<<set $underanusexposedbase to 0>>
<<set $undertype to "normal">>
<<if $lowertype is "swim">>
	<<if $upperset is $lowerset>>
	<<uppernaked>>
	<</if>>
<<lowerundress>>
<</if>>
<<set $undergender to "m">>
	<</if>>
<</nobr>><</widget>>

<<widget "chastitybelt">><<nobr>>
	<<if $undertype isnot "chastity">>
<<understrip>><<underundress>>
<<set $underclothes to "chastity belt">>
<<set $undervariable to "chastitybelt">>
<<set $chastitybeltintegritymax to 2000>>
<<set $underintegritymax to $chastitybeltintegritymax>>
<<set $underfabricstrength to 15>>
<<set $underreveal to 1000>>
<<set $underword to "a">>
<<set $understate to "chastity">>
<<set $understatebase to "chastity">>
<<set $undervaginaexposed to 0>>
<<set $undervaginaexposedbase to 0>>
<<if $analshield is 1>>
<<set $underanusexposed to 0>>
<<set $underanusexposedbase to 0>>
<<else>>
<<set $underanusexposed to 1>>
<<set $underanusexposedbase to 1>>
<</if>>
<<set $underplural to 0>>
<<if $chastitybeltnew is 1>><<set $chastitybeltnew to 0>><<set $chastitybeltintegrity to $chastitybeltintegritymax>>
<</if>>
<<set $undercolour to "restrictive">>
<<set $underintegrity to $chastitybeltintegrity>>
<<set $underexposed to 1>>
<<set $underexposedbase to 1>>
<<set $undertype to "chastity">>
<<set $undergender to "n">>
	<</if>>
<</nobr>><</widget>>

<<widget "tights">><<nobr>>
	<<if $undertype isnot "chastity">>
<<understrip>><<underundress>>
<<set $underclothes to "tights">>
<<set $undervariable to "tights">>
<<set $tightsintegritymax to 120>>
<<set $underintegritymax to $tightsintegritymax>>
<<set $underfabricstrength to 5>>
<<set $underreveal to 800>>
<<set $underword to "n">>
<<set $understate to "waist">>
<<set $understatebase to "waist">>
<<set $undervaginaexposed to 0>>
<<set $underanusexposed to 0>>
<<set $underplural to 1>>
<<if $tightsnew is 1>><<set $tightsnew to 0>><<set $tightsintegrity to $tightsintegritymax>><<set $tightscolour to "sheer">>
<<if $tightscolourchoice isnot 0>>
<<set $tightscolour to $tightscolourchoice>>
<</if>>
<</if>>
<<set $undercolour to $tightscolour>>
<<set $underintegrity to $tightsintegrity>>
<<set $underexposed to 1>>
<<set $underexposedbase to 1>>
<<set $undervaginaexposedbase to 0>>
<<set $underanusexposedbase to 0>>
<<set $undertype to "normal">>
<<if $lowertype is "swim">>
	<<if $upperset is $lowerset>>
	<<uppernaked>>
	<</if>>
<<lowerundress>>
<</if>>
<<set $undergender to "f">>
	<</if>>
<</nobr>><</widget>>