-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.html
797 lines (728 loc) · 47 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width; initial-scale=1.0;">
<script type="coffee">
# To-dos:
# - ...animations?
# - "party" -> "room"
# Dope features for the future:
# - matching, omegle style, for playing with strangers
# - "submit a question" (little plus sign in bottom corner -> modal)
#--- COMMON ---#
questions = [
{
name: "original",
label: "Original q's",
list: [
"In what ways are you inhibited from expressing love?",
"What difficult or painful experience would you recommend to everyone?",
"What's the most intense emotional pain you've ever experienced?",
"In what ways don't you trust yourself?",
"How have you disappointed your parents?",
"What about yourself have you been trying to fix for a long time?",
"How would you raise a child differently from how your parents raised you?",
"What was the last thing you cried about? When was it?",
"What was the most difficult thing you've ever had to do?",
"In what ways do you tend to fail at communication?",
"What is currently your greatest insecurity?",
"Which of your habits conflicts with your values?",
"What aspect about the person to your left gives you the strongest negative feeling?",
"What do you still owe someone an apology for?",
"What's the most sick (mental or physical) you've ever been?",
"Who do you hate most?",
"What is your biggest obstacle toward peace?",
"What about your appearance would you like to change?",
"What have you done that you are most ashamed of?",
"Are you afraid of death? Why or why not?",
"How do you heal from painful experiences? How do you know when you're done healing?",
"What was your biggest financial mistake?",
"What's the most intense physical pain you've ever experienced?",
"How often and in what ways does fear show up in you?",
"Which have you planned in greater detail: killing yourself, or killing someone else?",
"Who in this room would you most like to have sex with?",
"If everyone in the room were arranged on a spectrum of attractiveness, which two people would you be between?",
"What problems do you see in the relationships of those around you?",
"You have to marry someone in this room right now. Who is it?",
"Is there anything which arouses you that you've never admitted to anybody?",
"What unusual trait do you find most attractive in a romantic partner?",
"Out of all your past sexual experiences, what has made you the most uncomfortable?",
"If you were invited to an all-nude party, where all the participants are required to be naked the whole time, would you go?",
"When you introspect, away from society and your physical body, deep inside, do you feel a sense of gender?",
"What were the conditions of your last break-up?",
"If you had to choose one, would you rather double or halve your sex drive?",
"Would you rather fuck your girlfriend who is inhabiting your mother's body, or your mother who is inhabiting your girlfriend's body? (If you date men, switch it to boyfriend and father.)",
"In total, have you given or received more oral sex?",
"What's one of the most adventurous things you've ever done in bed?",
"Would you date yourself?",
"What percentage of your preferred age/gender demographic would you be down to have sex with after roughly an hour of flirting?",
"Have you ever been in an open or polyamorous relationship? If not, would you consider it?",
"Could you have a serious relationship with someone who expressed that they thought they were unworthy of the relationship?",
"Have you ever dated someone who you felt was below your standards?",
"How easy is it for you to orgasm?",
"Do you ever feel guilt or shame for romantically rejecting people who are interested in you?",
"If you could press a button and double the sex drive of all women on earth, would you do it?",
"If you tried, could you list the names of everyone you've had sex with?",
"Are yelling fights in relationships more typical and inevitable, or terrible and avoidable?",
"What was your most disappointing sexual experience?",
"What emotion/feeling are you currently suppressing or ignoring?",
"Who in the room do you admire the most?",
"Did your parents do a good job?",
"What are the signs that someone understands you uniquely?",
"What is the best advice you've received, and why did you need it?",
"What are you waiting to hear from someone close to you?",
"What do you most admire about the person to your right?",
"At the gut level, do you feel that the world is safe or not safe?",
"Would you rather increase the amount that people respect you, or increase the amount they desire you?",
"What relatively common experience have you never had?",
"Do you ever enjoy the experience of emotional pain?",
"Have you been loved enough?",
"Have you ever had (what you consider to be) a spiritual experience? If so, what was it like and what effects did it have on you?",
"Do you feel a greater sense of satisfaction when you gain approval from people who are very similar to you, or very different from you?",
"If you could have one but not the other, would you rather love someone or be loved by someone?",
"What kind of people do you get along best with?",
"Which of your achievements are you most proud of?",
"Given the guarantee that nobody will ask you the question: What is a question that you would refuse to answer?",
"How boring are you?",
"Do you have more thoughts or more feelings?",
"What are your coping mechanisms for stress?",
"Would you rather double the amount of emotional pain and pleasure you feel on a daily basis, or cut both in half?",
"What is the most interesting fact about you that few people know?",
"Which of your personality traits are you most proud of?",
"Which group is larger: people who trust you, or people you trust?",
"What is the most significant thing you've ever changed your mind about?",
"If you could ask everybody in the world one question, what would it be? You don't get to hear their answers.",
"Are some human lives worth more than others?",
"You must pick a number right now and live that many years total, in good physical health. You can't die before, and you can't extend after. How many years do you choose to live?",
"Do you consider the state of \"unconditionally loving everyone\" to be desirable or undesirable for you, given it were possible?",
"Are there any thoughts so offensive that you would advocate shaming those who think them, even if they don't act on those thoughts?",
"Which of your beliefs would be the most difficult to change, even in the face of overwhelming evidence?",
"Are there any cases in which you would support forced, involuntary brain modification to change someone else's mind, urges, or behavior?",
"You can make a designer baby. Would you rather optimize it primarily for intelligence or happiness/optimism?",
"What do you think enlightenment is?",
"Do you believe the set of concepts like \"duty\", \"should\", \"obligation\", and \"deserving\" are ultimately more valid or meaningless?",
"If you could press a button that would make you feel deeply and permanently that everything was ok, would you? Assume that you'd remain functional in the world.",
"Can someone both be a kind person and also hold the exact opposite of your political views?",
"If you could, would you wirehead (i.e. hook yourself up to a hypothetical machine that makes you totally and eternally happy and satisfied)?",
"If you (and only you) could see one measurement or statistic over everyone's heads, what would you want it to indicate?",
"Would you prefer to date someone 20 IQ points higher or 5 points lower than you?",
"If you could press a button that would instantly erase every single false belief you have, would you do it?",
"If you could ask the universe one question and get the truth, what would you want to know?",
"Is torture ever permissible?",
"On planet A, everyone's 30% dumber, and you're a genius by comparison. On planet B, everyone's 30% smarter, and you're an idiot by comparison. You stay the same. Which planet would you prefer to live on?",
"Which technology should not have been invented?",
"If you could magically cause a neutral nude photo of every human to be published publicly on the internet every year on their birthday, would you?",
"Of all the beliefs you hold, which is most likely to be considered barbaric in 150 years?",
"You see a friend getting into their third emotionally abusive relationship in a row. Are they a victim?",
"Do you feel that you have conscious control over your beliefs? Could you, right now, decide to believe something else if you tried? If so, which beliefs?",
"What's the most controversial opinion you hold among your own social group?",
"What viewpoint is the most difficult for you to empathize with?",
"Does \"no\" always really mean \"no\"?",
"If you had to fuck a cow, would you rather it be dead or alive?",
"Do you have any political or social opinions that you're afraid to express to your friends?",
"In your personal experience, even if the difference is extremely slight, are men or women better at handling suffering?",
"In a world where different ethnicities had strong genetic differences which caused different moral behavior, would racism be okay or still not okay?",
"What groups or communities are you most judged for being a member of?",
"In a world where prostitution becomes totally legal and regulated, should sex workers be allowed to refuse clients on the basis of race?",
"Would you rather have accidentally killed someone, or be a nonoffending pedophile?",
"Would you support the use of realistic child sex dolls by pedophiles?",
"Would you rather be raped or falsely (but convincingly) accused of rape?",
"Does modern western culture encourage women either to overreact or underreact to \"minor\" sexual assaults, such as groping, too-drunk sex, etc.?",
"How do society's morals differ from your own?",
"Regardless of your conscious beliefs or actions, do you feel in your gut that sex work is degrading?",
"Which stereotype is actually pretty accurate?",
"If you had to eliminate one million people from one ethnicity, which would it be?",
"A 14-year-old has sex. How large does the age gap have to be between the 14-year-old and their partner before the child can no longer meaningfully consent to sex?",
"If a sex worker consents to sex with a customer under expectation of payment, but then the customer refuses to pay, is this closer to rape or to theft?",
"What's your opinion of education that teaches men to be more seductive?",
"Do women have any systemic privilege due to their gender?",
"Is incest wrong? Should it be illegal?",
"Are there any viewpoints so offensive that they deserve to be shut down or suppressed? If so, which ones?",
"Regardless of your support or personal feelings, does your subconscious view trans-identifying people as closer to their birth or current gender?",
"Is bestiality wrong? Are you a vegan?"
]
},
{
name: "extra",
label: "Extra q's",
list: [
"To what do you attribute to your success?",
"Have you named your genitals?",
"Who is your alter ego?",
"How do you predict you will die?",
"How old do you feel?",
"What's your greatest failure?",
"What is the worst thing anyone has ever done to you?",
"What are your most prized possessions?",
"What's your boring superpower?",
"A woman rapes a man and becomes pregnant. Would you support a law that gives the man the right to force termination of the pregnancy?",
"Do you view 'social justice warriors' and 'the alt-right' as roughly equivalent in extremism, just on opposite sides?",
"Are there any things on a dating profile that you agree with or also like, but find a turnoff that they listed it?",
"How do you personally know when something is immoral?",
"Have you ever dated someone who you felt was below your standards?",
"If you had to name one thing you want that drives all your other wants, what would it be?",
"What's a lie you wish you could stop telling yourself?",
"Which is more accurate for you: I do things so that I can make money; or, I make money so that I can do things?",
"What's the best thing someone could know about you that might help them?",
"Would you rather be in the top 1% of wealth bracket in 1530, or the bottom 10% of wealth bracket in a modern-day town or city?",
"You have a piece of art you really like hanging in your living room. One day you learn the artist has been convicted for rape. What do you do with the art piece?",
"Would you rather lose the ability to sing or to swear?",
"Would you rather drown a puppy or have everyone think you drowned a puppy?",
"Can rape jokes ever be funny?",
"Do you believe plants can feel pain?",
"How susceptible are you to being brainwashed?",
"How did your parents discipline you when you were a child?",
"What was your greatest sacrifice?",
"Would you press a button that doubled your IQ?",
"Would you stomp a puppy to death to save a terminally ill child with < 6 months to live?",
"Do you have someone you feel comfortable talking to about everything?",
"If you had to name one thing you think others envy about you, what would it be?",
"Is sex really about power?",
"What's your relationship to buttplugs?",
"Would you be willing to show your browsing history to everybody present? What if this didn't include porn?",
"Would you date a prostitute?",
"Would you rather change genders every time you sneeze, or be unable to tell the difference between babies and muffins?",
"Would you rather lick someone else's butthole or your own butthole?",
"Would you rather live a life where you are convinced you're doing good but really you're hurting the world, or a life where you're helping the world but you're convinced that you're failing to do so and actually hurting it?",
"Would you rather your life be ended by yourself or others?",
"Would you rather date a kind person with the exact opposite of your political views, or an unkind person who strongly agrees with your views?",
"Assuming legality isn't an issue and all parties are informed and consenting, would you rather have sex with a 15 year old or a 50 year old?",
"Do you have any enemies? If not, who is the closest to being your enemy?",
"How do you know when someone is empathizing with you?",
"If you woke up to an incredibly physically attractive stranger of your desired sex performing oral on you (without asking), would you feel positively or negatively?",
"Should male circumcision be legal?",
"You have the option of moving to one of two cities. In Omelas, 99% of people have 10/10 life quality, while the remaining 1% have 0/10 life quality. In Bergeron, everyone has 5/10 life quality. Which city do you move to?",
"You're in a monogamous relationship. Your partner gets back late and says \"Honey, I just had sex with the new lifelike sex robot.\" Is this cheating?",
"A woman says she's on birth control, and she has sex with a man without a condom. But she was lying \u2014 she was not on birth control. Is this rape?",
"Are you more concerned with improving the world or improving yourself?",
"Do you consider 'being at peace' to be the same thing as 'being happy'?",
"Do you have any political or social opinions that you’re afraid to express out loud to your friends?",
"Given the chance, would you fuck God given He won't judge you for it?",
"Have you ever woke up from a dream, crying? What was the dream?",
"Have you had enough sex this year?",
"When was the last time you masturbated?",
"Have you masturbated within the last week to someone you know personally, and also would feel uncomfortable telling them about it?",
"How do you feel superior to other people?",
"How do you treat yourself differently from the way you treat others?",
"How much control do you feel you have over your own emotions?",
"How often do you feel fear in your life",
"How often do you feel pleased at others' misfortunes?",
"If all sexism were magically and totally eliminated, would gender ratio of all jobs, ideologies, and communities reach 50/50?",
"If there were a way to painlessly and permanently alter the thoughts of a person you know, who and what would you change?",
"If you had a little teleportation portal, would you fuck yourself in the ass?",
"If you press the button, America gets to elect the primary rulers for every other nation in the world \u2014 and the rest of the world collectively elects America's next president. Do you press the button?",
"If you press the button, you enter a magical, permanent state where everything you want is automatically granted right before the want hits your conscious awareness. Besides \"you can't enter a state of desire\" or \"suicide,\" there are no limits in fulfilling what you want. Do you press the button?",
"Is it easier for you to love or hate?",
"Is there any kind of job or employment position in which it should be legal for an employee to refuse to serve a customer based on gender?",
"Is there anyone whose life you value above your own?",
"List the people listening to you answer this question in the order they would die in the apocalypse",
"On an instinctual level, do you think of humans as part of nature or separate from nature?",
"Regardless of how much you personally approve, would you be comfortable having a serious relationship with an active pornstar?",
"Should people be allowed to sell themselves into slavery, given they are not coerced into the decision, and given full information about what it entails?",
"There is a button before you. If you press it, the entire world loses the enchantment it feels when looking at super beautiful faces. Everyone can still see and recognize faces, but all faces feel equally attractive. Would you press the button?",
"What grudges do you hold?",
"What in your experience does language fail to capture?",
"What is the most insidious ideology surrounding you in life?",
"What viscous cycles do you find yourself in?",
"What was your darkest night?",
"What was your worst habit in your worst relationship?",
"What's died in you?",
"When was the last time you felt fear?",
"When you feel an emotion, how often does it involve a physical bodily sensation in addition to a mental state?",
"Where do you find fulfillment in your life?",
"Which life lessons that you've learned would be most important for the people in this room to hear?",
"What is the greatest current existential threat to humanity?",
"Which race, generally speaking, has experienced greater oppression \u2014 blacks or jews?",
"You find out your crush messages people more boring/ugly/dumb than you on dating sites. Does this reduce your attraction to them?",
"You wake up in a body of the opposite sex. It takes years, but you eventually learn to operate in this body — how to navigate romantic/sexual dynamics and social expectations — about as well as people naturally born into this body. Do you predict you'd feel dysphoria?",
"How often do you think about your own death?",
"Have you ever had a plant that you really cared about?",
"Who thinks you're dumb?",
"\"Women are oversexualized in media and this should be stopped.\" Agree or disagree?",
"In one room, a child is about to die. In the other room, a demon is about to increase unemployment in your country by 1% for 3 years. You can either save the child or kill the demon, but not both. Which do you choose?",
"The button will turn your body to clay for 5 minutes so you can mold yourself. No undos or takebacks. Do you use the button?",
"Do you ever enjoy not getting what you want?",
"What's the most likely way that you might hurt those around you?",
"When did you last do something for the first time? What was it?",
"Would you rather be twice your size or half your size?",
"Is it okay to become aroused by fantasies of actions that would result in serious harm if done in real life?"
]
}
]
# Wordlist for generating unique chat room IDs.
words = ["Account","Act","Adjustment","Advertisement","Agreement","Air","Amount","Amusement","Animal","Answer","Apparatus","Approval","Argument","Art","Attack","Attempt","Attention","Attraction","Authority","Back","Balance","Base","Behavior","Belief","Birth","Bit","Bite","Blood","Blow","Body","Brass","Bread","Breath","Brother","Building","Burn","Burst","Business","Butter","Canvas","Care","Cause","Chalk","Chance","Change","Cloth","Coal","Color","Comfort","Committee","Company","Comparison","Competition","Condition","Connection","Control","Cook","Copper","Copy","Cork","Copy","Cough","Country","Cover","Crack","Credit","Crime","Crush","Cry","Current","Curve","Damage","Danger","Daughter","Day","Death","Debt","Decision","Degree","Design","Desire","Destruction","Detail","Development","Digestion","Direction","Discovery","Discussion","Disease","Disgust","Distance","Distribution","Division","Doubt","Drink","Driving","Dust","Earth","Edge","Education","Effect","End","Error","Event","Example","Exchange","Existence","Expansion","Experience","Expert","Fact","Fall","Family","Father","Fear","Feeling","Fiction","Field","Fight","Fire","Flame","Flight","Flower","Fold","Food","Force","Form","Friend","Front","Fruit","Glass","Gold","Government","Grain","Grass","Grip","Group","Growth","Guide","Harbor","Harmony","Hate","Hearing","Heat","Help","History","Hole","Hope","Hour","Humor","Ice","Idea","Impulse","Increase","Industry","Ink","Insect","Instrument","Insurance","Interest","Invention","Iron","Jelly","Join","Journey","Judge","Jump","Kick","Kiss","Knowledge","Land","Language","Laugh","Low","Lead","Learning","Leather","Letter","Level","Lift","Light","Limit","Linen","Liquid","List","Look","Loss","Love","Machine","Man","Manager","Mark","Market","Mass","Meal","Measure","Meat","Meeting","Memory","Metal","Middle","Milk","Mind","Mine","Minute","Mist","Money","Month","Morning","Mother","Motion","Mountain","Move","Music","Name","Nation","Need","News","Night","Noise","Note","Number","Observation","Offer","Oil","Operation","Opinion","Order","Organization","Ornament","Owner","Page","Pain","Paint","Paper","Part","Paste","Payment","Peace","Person","Place","Plant","Play","Pleasure","Point","Poison","Polish","Porter","Position","Powder","Power","Price","Print","Process","Produce","Profit","Property","Prose","Protest","Pull","Punishment","Purpose","Push","Quality","Question","Rain","Range","Rate","Ray","Reaction","Reading","Reason","Record","Regret","Relation","Religion","Representative","Request","Respect","Rest","Reward","Rhythm","Rice","River","Road","Roll","Room","Rub","Rule","Run","Salt","Sand","Scale","Science","Sea","Seat","Secretary","Selection","Self","Sense","Servant","Sex","Shade","Shake","Shame","Shock","Side","Sign","Silk","Silver","Sister","Size","Sky","Sleep","Slip","Slope","Smash","Smell","Smile","Smoke","Sneeze","Snow","Soap","Society","Son","Song","Sort","Sound","Soup","Space","Stage","Start","Statement","Steam","Steel","Step","Stitch","Stone","Stop","Story","Stretch","Structure","Substance","Sugar","Suggestion","Summer","Support","Surprise","Swim","System","Talk","Taste","Tax","Teaching","Tendency","Test","Theory","Thing","Thought","Thunder","Time","Tin","Top","Touch","Trade","Transport","Trick","Trouble","Turn","Twist","Unit","Use","Value","Verse","Vessel","View","Voice","Walk","War","Wash","Waste","Water","Wave","Wax","Way","Weather","Week","Weight","Wind","Wine","Winter","Woman","Wood","Wool","Word","Work","Wound","Writing","Year","Angle","Ant","Apple","Arch","Arm","Army","Baby","Bag","Ball","Band","Basin","Basket","Bath","Bed","Bee","Bell","Berry","Bird","Blade","Board","Boat","Bone","Book","Boot","Bottle","Box","Boy","Brain","Brake","Branch","Brick","Bridge","Brush","Bucket","Bulb","Button","Cake","Camera","Card","Carriage","Cart","Cat","Chain","Cheese","Chess","Chin","Church","Circle","Clock","Cloud","Coat","Collar","Comb","Cord","Cow","Cup","Curtain","Cushion","Dog","Door","Drain","Drawer","Dress","Drop","Ear","Egg","Engine","Eye","Face","Farm","Feather","Finger","Fish","Flag","Floor","Fly","Foot","Fork","Fowl","Frame","Garden","Girl","Glove","Goat","Gun","Hair","Hammer","Hand","Hat","Head","Heart","Hook","Horn","Horse","Hospital","House","Island","Jewel","Kettle","Key","Knee","Knife","Knot","Leaf","Leg","Library","Line","Lip","Lock","Map","Match","Monkey","Moon","Mouth","Muscle","Nail","Neck","Needle","Nerve","Net","Nose","Nut","Office","Orange","Oven","Parcel","Pen","Pencil","Picture","Pig","Pin","Pipe","Plane","Plate","Plough","Pocket","Pot","Potato","Prison","Pump","Rail","Rat","Receipt","Ring","Rod","Roof","Root","Sail","School","Scissors","Screw","Seed","Sheep","Shelf","Ship","Shirt","Shoe","Skin","Skirt","Snake","Sock","Spade","Sponge","Spoon","Spring","Square","Stamp","Star","Station","Stem","Stick","Stocking","Stomach","Store","Street","Sun","Table","Tail","Thread","Throat","Thumb","Ticket","Toe","Tongue","Tooth","Town","Train","Tray","Tree","Trousers","Umbrella","Wall","Watch","Wheel","Whip","Whistle","Window","Wing","Wire","Worm"]
# Generate a random integer up to (not including) max
getRandomInt = (max) ->
Math.floor(Math.random() * Math.floor(max))
# Generate an ID as a string of 3 random words from the list.
generateId = (len) ->
[a, b, c] = [getRandomInt(words.length), getRandomInt(words.length), getRandomInt(words.length)]
return words[a] + words[b] + words[c]
#--- STATE ---#
# Get the current party based on the URL hash.
getParty = ->
hash = fetch('hash')
if hash.val.length
return fetch('/askholeweb/room/' + hash.val)
else
return {}
# Set the current hash & update the party based on it.
setHash = (str) ->
hash = fetch('hash')
hash.val = str
save(hash)
# Fisher-Yates algorithm
shuffle = (arr) ->
a = bus.clone(arr)
for i in [a.length-1..1] by -1
j = Math.floor(Math.random() * (i + 1))
[a[i], a[j]] = [a[j], a[i]]
return a
shuffleDeck = ->
party = getParty()
party.order = shuffle([0..totalQuestionCount()-1])
party.index = 0
save(party)
return true
totalQuestionCount = ->
listlengths = (q.list.length for q in questions) # Array of list lengths
listlengths.reduce( ((a, b) => a + b), 0 ) # Return the sum
nextQuestion = ->
advanceQuestion(1)
prevQuestion = ->
advanceQuestion(-1)
advanceQuestion = (step = 1) ->
party = getParty()
len = party.order.length
# If no question sets are visible, do nothing.
if party.visiblesets.length == 0
return
# Progress up to the current question
while getQuestionSetIndex(party.index) not in party.visiblesets
party.index = (party.index + step + len) % len
# Step up one to beyond the current question
party.index = (party.index + step + len) % len
# Proceed until the actual next question
while getQuestionSetIndex(party.index) not in party.visiblesets
party.index = (party.index + step + len) % len
save(party)
getCurrentQuestion = ->
party = getParty()
[index, order] = [party.index, party.order]
len = party.order.length
# Return dummy text if no questionsets are selected.
if party.visiblesets.length == 0
return [':(', '\u221E']
while getQuestionSetIndex(index) not in party.visiblesets
index += 1
index = (index + len) % len
question_number = order[index] + 1
k = order[index]
for qset in questions
if k < qset.list.length
return [qset.list[k], question_number]
else
k -= qset.list.length
getQuestionSetIndex = (index) ->
party = getParty()
index ?= party.index
order = party.order
k = order[index]
for qset, i in questions
if k < qset.list.length
return i
else
k -= qset.list.length
toggleVisibleSet = (i) ->
party = getParty()
index = party.visiblesets.indexOf(i)
if index > -1 # If the index is in visiblesets
party.visiblesets.splice(index, 1)
save(party)
else
party.visiblesets.push(i)
party.visiblesets.sort()
save(party)
return true
HELP_ICON = ->
SPAN {
className: "help_icon dropshadow",
"data-micromodal-trigger": "modal-1",
onClick: => MicroModal.show("modal-1")
}
HELP_MODAL = ->
DIV {
className: "modal micromodal-slide",
id: "modal-1",
"aria-hidden": "true"
},
DIV {
className: "modal__overlay",
tabIndex: "-1",
# "data-micromodal-close": ""
onClick: (e) => if e.target.classList.contains("modal__overlay") then MicroModal.close("modal-1")
},
DIV {
className: "modal__container",
role: "dialog",
"aria-modal": "true",
"aria-labelledby": "modal-1-title"
},
HEADER { className: "modal__header" },
H2 {
className: "modal__title",
id: 'modal-1-title'
},
"What the f is this?"
BUTTON {
className: "modal__close",
"aria-label": 'Close modal',
# "data-micromodal-close": ""
onClick: => MicroModal.close("modal-1")
}
MAIN {
className: "modal__content",
id: "modal-1-content"
},
# P {},
# """
# The abyss of loneliness, all too familiar to one like you.
# """
P {},
"""
Askhole Web is a web version of the
"""
A { href: '//askhole.io', target: "_blank" }, "terrible game you know and love"
""".
Traditionally, a physical deck of Askhole is used to ruin
house parties and family reunions, but now Askhole Web can be used
to ruin videochats and conference calls.
"""
H2 {
className: "modal__title",
id: 'modal-1-title'
},
"Gimme the rundown"
P {},
"""
When you visit
"""
A { href: "//web.askhole.io", target: "_blank" }, "web.askhole.io"
" "
smartquotes("""
and click the "Create a room" button, you'll be taken
to a new Askhole Web "chat room". Now this so-called
"chat room" doesn't have any chat functionality, and nor
is it a room, but what it does do is automatically
synchronize the question that is displayed with anyone
else who is also visiting the same URL.
""")
P {},
smartquotes("""
So, if you're on a conference call or a group
videochat, you can share an Askhole Web link with all
your unlucky pals and remotely enjoy a good
old-fashioned round of Askhole.
""")
P {},
"""
A well-formed Askhole Web URL is anything of the form
"""
CODE "web.askhole.io/#SomeTextString"
"—you can put whatever you want after the"
CODE "#"
" to create a new room."
H2 {
className: "modal__title",
id: 'modal-1-title'
},
"How do I work this thing?"
P {},
"Click on the card to proceed to the next one. When the
question changes, it changes for "
EM "everyone"
smartquotes(" who is in the room (everyone who is visiting your
URL). That's about all there is to it.")
P "Keyboard shortcuts:"
P {},
CODE "\u2192"
" Next card"
BR()
CODE "\u2190"
" Previous card"
BR()
CODE "?"
" Open this help window"
H2 {
className: "modal__title",
id: 'modal-1-title'
},
smartquotes("Something isn't exactly the way I want it")
# P "Boo fuckin hoo."
P {},
"You can "
A { href: "mailto:[email protected]", target: "_blank" }, "send us an email"
", "
A { href: "//t.me/askholecards", target: "_blank" }, "drop us a line on Telegram"
", or "
A { href: "//github.com/rothos/askhole-web", target: "_blank" }, "check out the Github repo"
" to contact us with any suggestions, feature requests, bug reports,
surreal experiences, come-ons, etc."
H2 {
className: "modal__title",
id: 'modal-1-title'
},
"I have too much money. Can I give you some?"
P {},
A { href: 'https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=BNU5NCGKJ4VD2&source=url', target: "_blank" }, smartquotes("Okay.")
H2 {
className: "modal__title",
id: 'modal-1-title'
},
"Talk sexy to me"
P {},
"""
Askhole Web is built using
"""
A { href: '//stateb.us', target: "_blank" }, "Statebus"
" (AKA "
A { href: '//braid.news', target: "_blank" }, "Braid"
"""), a state-of-the-art synchronization
technology. The app itself is written in delicious
"""
A { href: '//coffeescript.org', target: "_blank" }, "CoffeeScript"
". "
"""
It also makes use of the fantastic
"""
A { href: '//getskeleton.com/', target: "_blank" }, "Skeleton.css"
", "
A { href: '//clipboardjs.com/', target: "_blank" }, "Clipboard.js"
", "
A { href: '//micromodal.now.sh', target: "_blank" }, "Micromodal.js"
", and "
A { href: '//smartquotes.js.org/', target: "_blank" }, "Smartquotes.js"
"."
dom.BODY = ->
str = window.location.hash.substring(1)
setHash(str)
hash = fetch('hash')
DIV {className: 'wrap'},
if hash.val
PARTY_PAGE()
else
LANDING_PAGE()
HELP_ICON()
HELP_MODAL()
PARTY_PAGE = ->
DIV { className: 'bgwhirl' },
PAGE_HEADER()
QUESTION()
QUESTIONSET_MENU()
LANDING_PAGE = ->
hash = fetch('hash')
DIV { className: 'bglogo' },
PAGE_HEADER()
DIV { className: 'home_button_overlay' },
DIV { className: 'home_button_wrap' },
BUTTON
className: 'home_button boxshadow',
onClick: =>
id = generateId(10)
window.location.href = document.baseURI.split('#')[0] + '#' + id
setHash(id)
"Create a room \u2192\n"
DIV { className: 'home_button_subtext' },
"share the link to play together"
dom.PAGE_HEADER = ->
hash = fetch('hash')
DIV {className: 'header'},
DIV { className: 'header_wordmark' },
A {
className: 'wordmark'
href: '#'
}, 'ASKHOLE WEB'
SPAN { className: 'header_by' },
'by\u00A0'
A {
href: '//askhole.io',
target: '_blank'
},
'askhole.io'
if hash.val.length
DIV { className: 'header_links' },
SPAN {},
'invite link'
INPUT { id: 'copyinput1', className: 'copytrigger', value: 'http://web.askhole.io/#'+hash.val }
BUTTON { className: 'copytrigger', "data-clipboard-target": '#copyinput1' },
IMG { src: 'clippy.svg', alt: "Copy to clipboard" }
SPAN {},
'videochat link'
INPUT { id: 'copyinput2', className: 'copytrigger', value: 'https://meet.jit.si/'+hash.val }
BUTTON { className: 'copytrigger', "data-clipboard-target": '#copyinput2' },
IMG { src: 'clippy.svg', alt: "Copy to clipboard" }
dom.QUESTIONSET_MENU = ->
party = getParty()
DIV { className: 'questionsetmenu_wrap' },
SPAN { className: 'questionsetmenu boxshadow' },
# Loop over each question set.
for qset, i in questions
id = 'qset'+i.toString()
checked = if i in party.visiblesets then true else false
# Creat the checkbox for this question set.
checkbox = INPUT {
type: 'checkbox'
id: id+'box'
onClick: toggleVisibleSet.bind(this, i)
}
# Check the box if the associated question set is visible.
if checked then checkbox.props.checked = checked
# Now create the label for the box, with the box inside it.
LABEL {
className: 'noselect'
id: id
},
checkbox
smartquotes(qset.label + ' (' + qset.list.length + ')')
dom.QUESTION = ->
party = getParty()
allIndices = [0..totalQuestionCount()-1]
visiblesetIndicies = [0..questions.length-1]
# Set default values if these variables don't exist.
party.index ?= 0
party.order ?= []
party.visiblesets ?= visiblesetIndicies
# Validation on index.
if party.index not in allIndices
party.index = 0
# Validation on the card shuffle order.
if party.order.length != totalQuestionCount()
party.order = shuffle(allIndices)
# Validation on the visible sets.
if !party.visiblesets.every((a) -> a in visiblesetIndicies)
newsets = []
for visiblesetIndex in party.visiblesets
if visiblesetIndex in visiblesetIndicies
newsets.push(visiblesetIndex)
party.visiblesets = newsets
# Save validated info.
save(party)
# Now actually pull the current question.
[question, n] = getCurrentQuestion()
number = '#'+n.toString()
questiontext = if loading() then '[loading...]' else smartquotes(question)
# Create the DOM for the question.
DIV { className: 'main_wrap' },
DIV { className: 'mobileprevnextbuttons onlymobile' },
DIV {
className: 'prevbutton',
onClick: prevQuestion
},
SPAN { className: 'dropshadow' }
DIV {
className: 'nextbutton',
onClick: nextQuestion
},
SPAN { className: 'dropshadow' }
DIV {
className: 'prevbutton onlydesktop',
onClick: prevQuestion
},
SPAN { className: 'dropshadow' }
DIV { className: 'cardstuff_wrap' },
DIV {
className: 'party_card boxshadow',
onClick: nextQuestion
},
DIV {
className: 'party_cardtext noselect',
id: 'card',
style: { fontSize: getCardFontSize(questiontext.length) }
},
SPAN { className: 'party_questiontext' },
questiontext
SPAN { className: 'phantom' }, ' '+number+' '
SPAN { className: 'party_cardnumber' }, number
DIV { className: 'card_footer' },
A {
className: 'twitterlink boxshadow noselect',
href: "https://twitter.com/intent/tweet?text=" + encodeURIComponent('"' + questiontext + '" #AskholeQuestions')
target: "_blank"
},
SPAN { className: 'twittericon' }
SPAN { className: 'linktext' }, "Tweet this question"
DIV {
className: 'nextbutton onlydesktop',
onClick: nextQuestion
},
SPAN { className: 'dropshadow' }
# Initialize viewport sizes.
getScreenSize = ->
body = document.getElementsByTagName('body')[0]
if body?
[width, height] = [body.clientWidth, body.clientHeight]
else
[width, height] = [0.75*window.screen.width, 0.75*window.screen.height]
return [width, height]
# Calculate the card font size.
getCardFontSize = (length) ->
client = fetch('client')
[width, height] = [Math.min(client.width, 1200), Math.min(client.height, 1000)]
qlength_const = Math.max(0.9, (Math.sqrt(length)+3)/12.5) || 1
device_const = if Math.min(width, height) < 500 then 1.25 else 1
resolution_const = Math.sqrt((width) * (height))
fontsize = (device_const * resolution_const / qlength_const / 20).toFixed(1)
if fontsize > 75 then fontsize = 75
return fontsize + 'px'
# The screen resize handler.
onViewportSizeChange = (e) ->
client = fetch('client')
[client.width, client.height] = getScreenSize()
save(client)
return true
# Add an event listener for screen resize.
if window.visualViewport?
window.visualViewport.addEventListener('resize', onViewportSizeChange)
else
window.addEventListener('resize', onViewportSizeChange)
# Make sure everyting's in preper shape once the DOM has loaded.
window.addEventListener('DOMContentLoaded', onViewportSizeChange)
window.addEventListener('DOMContentLoaded', => new ClipboardJS('.copytrigger'))
# Keyboard shortcuts for turning over a new question.
window.addEventListener('keydown', ( (e) ->
if e.which in [13,32,39] then nextQuestion()
if e.which in [37,8] then prevQuestion()
if e.key in ["?"] then MicroModal.show("modal-1")
)
)
# Reload the page whenever the URL hash changes.
window.addEventListener('hashchange', ( (e) -> dom.BODY() ))
</script>
<script src="https://stateb.us/client6.js" server='state://invisible.college'></script>
<script src="https://unpkg.com/micromodal/dist/micromodal.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js"></script>
<script src="smartquotes.js"></script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-VE7ZRL0CJZ"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-VE7ZRL0CJZ');
</script>
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-138298500-2"></script>
<script>window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);}
gtag('js', new Date()); gtag('config', 'UA-138298500-2');</script>
<link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/skeleton/2.0.4/skeleton.min.css'>
<link rel='stylesheet' href='common.css?1'>
<link rel='stylesheet' href='micromodal.css'>
<link href="https://fonts.googleapis.com/css2?family=Lato:ital@0;1&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Permanent+Marker&display=swap" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css" rel="stylesheet"/>
<link rel="preload" href="bgwhirl.png" as="image">
<link rel="preload" href="cover.png" as="image">
<link rel="preload" href="next.png" as="image">
<link rel="preload" href="prev.png" as="image">
<link rel="preload" href="help.png" as="image">
<link rel="preload" href="twitter.png" as="image">
<link href="favicon.png" rel="shortcut icon" type="image/x-icon"/>
<script type='text/javascript'>MicroModal.init({awaitCloseAnimation: !0});</script>
<title>Askhole Web: Play with Friends</title>