Advertisement
Guest User

Untitled

a guest
Mar 25th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Octave 1.32 KB | None | 0 0
  1. clc; clear all;
  2. N = 3e4;
  3.  
  4. win    = zeros(1,N);
  5. turns  = zeros(1,N);
  6. first  = zeros(1,N);
  7.  
  8. a_ac = 12;
  9. d_ac = 17;
  10.  
  11. d_dc = 15;
  12. a_con_mod = 4;
  13.  
  14. for i = 1:N
  15.  
  16.   a_hp = roll(15,12) + 60;
  17.   d_hp = roll(14,10) + 56;
  18.  
  19.   a_init = roll(1,20)+2;
  20.   d_init = roll(1,20);
  21.  
  22.   % init == 1 for dragon, 0 for ape
  23.   if a_init == d_init
  24.     init = rand() > 0.5;
  25.   else
  26.     init = d_init > a_init;
  27.   end
  28.  
  29.   breath = 1;
  30.   first(i) = init;
  31.   t = 0;
  32.  
  33.   while d_hp > 0 && a_hp > 0
  34.     if init == 0   % ape's turn
  35.       d_hp = d_hp - ((roll(1,20)+9) >= d_ac) * (roll(3,10)+6);
  36.       d_hp = d_hp - ((roll(1,20)+9) >= d_ac) * (roll(3,10)+6);
  37.       init = 1;
  38.       t = t + 1;
  39.     else           % dragon's turn
  40.       if breath
  41.         breath_damage = roll(10,8);
  42.         if (roll(1,20) + a_con_mod) >= d_dc
  43.           breath_damage = floor(breath_damage / 2);
  44.         end
  45.         a_hp = a_hp - breath_damage;
  46.       else
  47.         a_hp = a_hp - ((roll(1,20)+7) >= a_ac) * (roll(2,10)+4 + roll(1,8));
  48.         a_hp = a_hp - ((roll(1,20)+7) >= a_ac) * (roll(2,6)+4);
  49.         a_hp = a_hp - ((roll(1,20)+7) >= a_ac) * (roll(2,6)+4);
  50.       end
  51.       breath = roll(1,6) >= 5;
  52.       init = 0;
  53.       t = t + 1;
  54.     end
  55.    
  56.   end
  57.   win(i) = d_hp > a_hp;
  58.   turns(i) = t;
  59.  
  60. end
  61. dragon_win_percentage = sum(win)/length(win) * 100
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement