The RCS revision control system and Ruby. Here is the code from this episode: #!/usr/bin/env ruby class Character def initialize(name,role,lvl) hp = rand(8)+1 @spells = ["cantrip", "chill touch", "detect undead"] puts("You are #{name}, a level #{lvl} #{role}") end #init def listspells() puts("#{@spells}") end #list def spellcast(n) puts("You cast #{@spells[n]}") dice = rand(20) + 1 if dice < 10 then puts("Your spell pops and fizzles. Nothing happens.") else puts("Your spell does #{dice} damage.") end #if end #spellcast end #class if __FILE__ == $0 then pc = Character.new("Bob","Wizard",1) pc.listspells() pc.spellcast(1) pc.spellcast(0) end shasum -a256=498b06f0b3d98285a6b4f41528f152ed182dc6d54627accfc53f3539a39f4ea2