-
-
Save anonymous/2827d4ab56d9a0c82853 to your computer and use it in GitHub Desktop.
Or*l Wh*re Roulette
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!ruby -ws | |
#http://rollnfap.tumblr.com/image/129394749363 | |
def d | |
rand(10) | |
end | |
def d19 | |
rand(1..9) | |
end | |
A = if defined?($a) | |
$a.to_i | |
else | |
puts "Setting random A. If that's not what you want, use: ruby owr.rb -a=3" | |
1 + d | |
end | |
p A: A | |
class Roll < Struct.new(:x, :y, :z, :x0, :y0) | |
def initialize | |
self.x = d | |
self.y = d | |
self.z = d | |
self.x = self.y = self.z = 0 if x == y && y == z | |
self.x0 = [d19, d19] | |
self.y0 = (1..9).to_a.shuffle.first(3) | |
end | |
Duties = [ | |
'[Choose 2 but only charge for cheaper one]', | |
'Suck for 5min', | |
'Suck for 10min', | |
'Suck for 5min, deepthroat every 30s', | |
'Deepthroat 20x', | |
'Deepthroat 40x', | |
'Deepthroat 10x in 1min', | |
'Deepthroat 20x in 90s, or deepthroat 100x', | |
'Suck for 5min, then deepthroat 20x', | |
'Suck for 10min, then deepthroat 40x', | |
] | |
def num_duty | |
res = [x] | |
res << y if y == z | |
res += x0 if res.include?(0) | |
res = (1..res.max).to_a if z == 0 | |
res | |
end | |
def duty | |
duties = num_duty.map {|x| Duties[x]} | |
duties.map! {|duty| duty.gsub(/(\d+)(min|x)/) {"#{($1.to_i * 2)}#{$2}"}} if z == 7 | |
duties.map! {|duty| duty.gsub(/(\d+)(min|x)/) {"#{($1.to_i * 3)}#{$2}"}} if z == 8 | |
duties * "\n - " | |
end | |
Kinks = [ | |
'[Pick three]', | |
'Wear nippleclamps', | |
'Wear blindfold', | |
'Wear collar', | |
'Smear everything that comes out of your mouth on your face', | |
'After doing your duty, slap your face with the dildo 30 times', | |
'Spank your ass 50 times', | |
'Moan and beg for more', | |
'Wear nippleclamps & blindfold', | |
'Wear nippleclamps & collar', | |
] | |
def num_kink | |
res = [y] | |
res << x if x == z | |
res += y0 if res.include?(0) | |
res | |
end | |
def kink | |
num_kink.map { |yy| Kinks[yy] }.flatten * "\n - " | |
end | |
Twists = [ | |
'Gangbang: X roll is cumulative', | |
nil, nil, nil, nil, nil, | |
'Cheap escape: do not collect money for this roll', #6 | |
'He brings his friend: do double amount of work', #7 | |
'His favorite bitch: do triple amount of work, get paid double', #8 | |
'Your pimp comes around: give him half of your money', #9 | |
] | |
def twist | |
res = [z] | |
res << x if x == y | |
res.map {|x| Twists[x]} * "\n - " | |
end | |
Xmoney = [1000, 20, 20, 30, 20, 35, 40, 70, 40, 55] | |
Ymoney = [0, 10, 10, 20, 40, 40, 10, 10, 20, 30] | |
def money | |
return 0 if 6 == z | |
moneys = num_duty.map {|x| Xmoney[x]} | |
moneys = [moneys.min] if num_duty.include?(0) | |
moneys += num_kink.map {|y| Ymoney[y] } | |
moneys.map! { |n| n * 2 } if 8 == z | |
moneys.inject(0, :+) | |
end | |
def take_half? | |
9 == z | |
end | |
def take_all? | |
0 == x + y + z | |
end | |
end | |
money = 0 | |
def wait_for_enter | |
puts "Press enter..." | |
gets | |
end | |
while money < A * 100 | |
roll = Roll.new | |
puts "Your roll is: " + roll.inspect | |
puts "Your duty: \n - " + roll.duty | |
puts "Your kink: \n - " + roll.kink | |
puts "Your twist: \n - " + roll.twist if roll.twist | |
puts "You get $#{roll.money}" | |
money += roll.money | |
money /= 2 if roll.take_half? | |
money = 0 if roll.take_all? | |
puts "You now have $#{money} and your target is $#{A * 100}" | |
wait_for_enter | |
end | |
b = d | |
puts "Your A is #{A} and B is #{b}" | |
if b < A | |
puts "You can cum!" | |
else | |
puts "Denied. Try again if you want..." | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment