Advertisement
KeinMitleid

Grimrock: Combo Lock

Jun 23rd, 2013
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 0.98 KB | None | 0 0
  1. -- first is lever id, second is chars to iterate through
  2. -- add more {lever, chars} items if necessary
  3. levers = {  {"puzzle_lever_100", "0123456789"},
  4.         {"puzzle_lever_10", "0123456789"},
  5.         {"puzzle_lever_1", "0123456789"}    }
  6.  
  7. -- insert solution here
  8. solution = "420"
  9.  
  10. -- insert door here
  11. door = "puzzle_door"
  12.  
  13. counters = {}
  14. entity = 1 chars = 2
  15.  
  16. for k = 1, #levers do
  17.     levers[k][entity] = findEntity(levers[k][entity])
  18.     levers[k][entity]:addConnector("any", self.id, "isPulled")
  19.     counters[k] = 0
  20. end
  21.  
  22. function isPulled(lever)
  23.     local correct = 0
  24.     local string = ""
  25.     for k = 1, #levers do
  26.         if lever.id == levers[k][entity].id then
  27.             counters[k] = counters[k] + 1
  28.             if counters[k] == #levers[k][chars] then counters[k] = 0 end
  29.         end
  30.         local char = levers[k][chars]:sub(counters[k] + 1, counters[k] + 1)
  31.         string = string .. char
  32.         if char == solution:sub(k, k) then correct = correct + 1 end
  33.     end
  34.     hudPrint(string)
  35.     if correct == #levers then findEntity(door):open() end
  36. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement