$30 off During Our Annual Pro Sale. View Details »

Gilding the Rose: Refactoring Legacy Code

Randy Coulman
September 20, 2014

Gilding the Rose: Refactoring Legacy Code

Presented at Golden Gate Ruby Conference 2014.

We all run into legacy code. Sometimes, we even write it ourselves. Working with legacy code can be a daunting challenge, but there are ways to tackle it. The Gilded Rose code kata is a coding exercise for practicing refactoring and testing skills in a legacy codebase.

In this presentation, I use the Gilded Rose kata to demonstrate techniques for safely working with a legacy codebase and using pure baby-step refactorings to improve the design.

Randy Coulman

September 20, 2014
Tweet

More Decks by Randy Coulman

Other Decks in Programming

Transcript

  1. Gilding the Rose: Refactoring Legacy Code Randy Coulman Principal Software

    Engineer http://randycoulman.com @randycoulman randycoulman
  2. Once the sell-by date has passed, quality degrades twice as

    fast The quality of an item is never negative "Aged Brie" actually increases in quality the older it gets The quality of an item is never more than 50 "Sulfuras", being a legendary item, never has to be sold or decreases in quality "Backstage passes", like aged brie, increases in quality as its sell-by date approaches; quality increases by 2 when there are 10 days or less and by 3 when there are 5 days or less, but quality drops to 0 after the concert.
  3. Constraint The I t e m class and @ i

    t e m s property are off limits - no collective code ownership
  4. c l a s s I t e m a

    t t r _ a c c e s s o r : n a m e , : s e l l _ i n , : q u a l i t y d e f i n i t i a l i z e ( n a m e , s e l l _ i n , q u a l i t y ) @ n a m e = n a m e @ s e l l _ i n = s e l l _ i n @ q u a l i t y = q u a l i t y e n d e n d
  5. r e q u i r e ' . /

    i t e m . r b ' c l a s s G i l d e d R o s e @ i t e m s = [ ] d e f i n i t i a l i z e @ i t e m s = [ ] @ i t e m s < < I t e m . n e w ( " + 5 D e x t e r i t y V e s t " , 1 0 , 2 0 ) @ i t e m s < < I t e m . n e w ( " A g e d B r i e " , 2 , 0 ) @ i t e m s < < I t e m . n e w ( " E l i x i r o f t h e M o n g o o s e " , 5 , 7 ) @ i t e m s < < I t e m . n e w ( " S u l f u r a s , H a n d o f R a g n a r o s " , 0 , 8 0 ) @ i t e m s < < I t e m . n e w ( " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " , 1 5 , 2 0 ) @ i t e m s < < I t e m . n e w ( " C o n j u r e d M a n a C a k e " , 3 , 6 ) e n d d e f u p d a t e _ q u a l i t y # . . . e n d e n d
  6. d e f u p d a t e _

    q u a l i t y f o r i i n 0 . . ( @ i t e m s . s i z e - 1 ) i f ( @ i t e m s [ i ] . n a m e ! = " A g e d B r i e " & & @ i t e m s [ i ] . n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " ) i f ( @ i t e m s [ i ] . q u a l i t y > 0 ) i f ( @ i t e m s [ i ] . n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " ) @ i t e m s [ i ] . q u a l i t y = @ i t e m s [ i ] . q u a l i t y - 1 e n d e n d e l s e i f ( @ i t e m s [ i ] . q u a l i t y < 5 0 ) @ i t e m s [ i ] . q u a l i t y = @ i t e m s [ i ] . q u a l i t y + 1 i f ( @ i t e m s [ i ] . n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " ) i f ( @ i t e m s [ i ] . s e l l _ i n < 1 1 ) i f ( @ i t e m s [ i ] . q u a l i t y < 5 0 ) @ i t e m s [ i ] . q u a l i t y = @ i t e m s [ i ] . q u a l i t y + 1 e n d e n d i f ( @ i t e m s [ i ] . s e l l _ i n < 6 ) i f ( @ i t e m s [ i ] . q u a l i t y < 5 0 ) @ i t e m s [ i ] . q u a l i t y = @ i t e m s [ i ] . q u a l i t y + 1 e n d e n d e n d e n d e n d # . . . c o n t i n u e d . . .
  7. # . . . c o n t i n

    u e d . . . i f ( @ i t e m s [ i ] . n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " ) @ i t e m s [ i ] . s e l l _ i n = @ i t e m s [ i ] . s e l l _ i n - 1 ; e n d i f ( @ i t e m s [ i ] . s e l l _ i n < 0 ) i f ( @ i t e m s [ i ] . n a m e ! = " A g e d B r i e " ) i f ( @ i t e m s [ i ] . n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " ) i f ( @ i t e m s [ i ] . q u a l i t y > 0 ) i f ( @ i t e m s [ i ] . n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " ) @ i t e m s [ i ] . q u a l i t y = @ i t e m s [ i ] . q u a l i t y - 1 e n d e n d e l s e @ i t e m s [ i ] . q u a l i t y = @ i t e m s [ i ] . q u a l i t y - @ i t e m s [ i ] . q u a l i t y e n d e l s e i f ( @ i t e m s [ i ] . q u a l i t y < 5 0 ) @ i t e m s [ i ] . q u a l i t y = @ i t e m s [ i ] . q u a l i t y + 1 e n d e n d e n d e n d e n d
  8. For each desired change, make the change easy (warning: this

    may be hard), then make the easy change. --Kent Beck (https://twitter.com/KentBeck/status/250733358307500032)
  9. d e f u p d a t e _

    q u a l i t y f o r i i n 0 . . ( @ i t e m s . s i z e - 1 ) i f ( @ i t e m s [ i ] . n a m e ! = " A g e d B r i e " & & @ i t e m s [ i ] . n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " ) i f ( @ i t e m s [ i ] . q u a l i t y > 0 ) i f ( @ i t e m s [ i ] . n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " ) @ i t e m s [ i ] . q u a l i t y = @ i t e m s [ i ] . q u a l i t y - 1 e n d e n d e l s e i f ( @ i t e m s [ i ] . q u a l i t y < 5 0 ) @ i t e m s [ i ] . q u a l i t y = @ i t e m s [ i ] . q u a l i t y + 1 i f ( @ i t e m s [ i ] . n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " ) i f ( @ i t e m s [ i ] . s e l l _ i n < 1 1 ) i f ( @ i t e m s [ i ] . q u a l i t y < 5 0 ) @ i t e m s [ i ] . q u a l i t y = @ i t e m s [ i ] . q u a l i t y + 1 e n d e n d i f ( @ i t e m s [ i ] . s e l l _ i n < 6 ) i f ( @ i t e m s [ i ] . q u a l i t y < 5 0 ) @ i t e m s [ i ] . q u a l i t y = @ i t e m s [ i ] . q u a l i t y + 1 e n d e n d e n d e n d e n d # . . . c o n t i n u e d . . .
  10. When you start a new programming job you have to

    walk right up to the biggest function in the yard and refactor it in front of everyone. --@supermoof (https://twitter.com/supermoof/status/478322429257715712)
  11. d e f u p d a t e _

    q u a l i t y f o r i i n 0 . . ( @ i t e m s . s i z e - 1 ) i f ( @ i t e m s [ i ] . n a m e ! = " A g e d B r i e " & & @ i t e m s [ i ] . n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " ) i f ( @ i t e m s [ i ] . q u a l i t y > 0 ) i f ( @ i t e m s [ i ] . n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " ) @ i t e m s [ i ] . q u a l i t y = @ i t e m s [ i ] . q u a l i t y - 1 e n d e n d e l s e i f ( @ i t e m s [ i ] . q u a l i t y < 5 0 ) @ i t e m s [ i ] . q u a l i t y = @ i t e m s [ i ] . q u a l i t y + 1 i f ( @ i t e m s [ i ] . n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " ) i f ( @ i t e m s [ i ] . s e l l _ i n < 1 1 ) i f ( @ i t e m s [ i ] . q u a l i t y < 5 0 ) @ i t e m s [ i ] . q u a l i t y = @ i t e m s [ i ] . q u a l i t y + 1 e n d e n d i f ( @ i t e m s [ i ] . s e l l _ i n < 6 ) i f ( @ i t e m s [ i ] . q u a l i t y < 5 0 ) @ i t e m s [ i ] . q u a l i t y = @ i t e m s [ i ] . q u a l i t y + 1 e n d e n d e n d e n d e n d # . . . c o n t i n u e d . . .
  12. d e f u p d a t e _

    q u a l i t y f o r i i n 0 . . ( @ i t e m s . s i z e - 1 ) i t e m = @ i t e m s [ i ] i f ( i t e m . n a m e ! = " A g e d B r i e " & & i t e m . n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " ) i f ( i t e m . q u a l i t y > 0 ) i f ( i t e m . n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " ) i t e m . q u a l i t y = i t e m . q u a l i t y - 1 e n d e n d e l s e i f ( i t e m . q u a l i t y < 5 0 ) i t e m . q u a l i t y = i t e m . q u a l i t y + 1 i f ( i t e m . n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " ) i f ( i t e m . s e l l _ i n < 1 1 ) i f ( i t e m . q u a l i t y < 5 0 ) i t e m . q u a l i t y = i t e m . q u a l i t y + 1 e n d e n d i f ( i t e m . s e l l _ i n < 6 ) i f ( i t e m . q u a l i t y < 5 0 ) i t e m . q u a l i t y = i t e m . q u a l i t y + 1 e n d e n d e n d e n d e n d # . . . c o n t i n u e d . . .
  13. d e f u p d a t e _

    q u a l i t y f o r i i n 0 . . ( @ i t e m s . s i z e - 1 ) i t e m = @ i t e m s [ i ] # . . . 4 0 + l i n e s o f c o d e u s i n g i t e m . . . e n d e n d
  14. d e f u p d a t e _

    q u a l i t y f o r i i n 0 . . ( @ i t e m s . s i z e - 1 ) i t e m = @ i t e m s [ i ] u p d a t e ( i t e m ) e n d e n d d e f u p d a t e ( i t e m ) # . . . 4 0 + l i n e s o f c o d e u s i n g i t e m . . . e n d
  15. d e f u p d a t e _

    q u a l i t y f o r i i n 0 . . ( @ i t e m s . s i z e - 1 ) i t e m = @ i t e m s [ i ] u p d a t e ( i t e m ) e n d e n d
  16. d e f u p d a t e _

    q u a l i t y f o r i i n 0 . . ( @ i t e m s . s i z e - 1 ) i t e m = @ i t e m s [ i ] u p d a t e ( i t e m ) e n d e n d
  17. d e f u p d a t e _

    q u a l i t y @ i t e m s . e a c h d o | i t e m | u p d a t e ( i t e m ) e n d e n d
  18. d e f u p d a t e (

    i t e m ) i f ( i t e m . n a m e ! = " A g e d B r i e " & & i t e m . n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " ) i f ( i t e m . q u a l i t y > 0 ) i f ( i t e m . n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " ) i t e m . q u a l i t y = i t e m . q u a l i t y - 1 e n d e n d e l s e i f ( i t e m . q u a l i t y < 5 0 ) i t e m . q u a l i t y = i t e m . q u a l i t y + 1 i f ( i t e m . n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " ) i f ( i t e m . s e l l _ i n < 1 1 ) i f ( i t e m . q u a l i t y < 5 0 ) i t e m . q u a l i t y = i t e m . q u a l i t y + 1 e n d e n d i f ( i t e m . s e l l _ i n < 6 ) i f ( i t e m . q u a l i t y < 5 0 ) i t e m . q u a l i t y = i t e m . q u a l i t y + 1 e n d e n d e n d e n d e n d i f ( i t e m . n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " ) i t e m . s e l l _ i n = i t e m . s e l l _ i n - 1 ; e n d # . . . 1 7 m o r e l i n e s . . . e n d
  19. d e f u p d a t e (

    i t e m ) i f i t e m . n a m e ! = " A g e d B r i e " & & i t e m . n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f i t e m . q u a l i t y > 0 i f i t e m . n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " i t e m . q u a l i t y = i t e m . q u a l i t y - 1 e n d e n d e l s e i f i t e m . q u a l i t y < 5 0 i t e m . q u a l i t y = i t e m . q u a l i t y + 1 i f i t e m . n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f i t e m . s e l l _ i n < 1 1 i f i t e m . q u a l i t y < 5 0 i t e m . q u a l i t y = i t e m . q u a l i t y + 1 e n d e n d i f i t e m . s e l l _ i n < 6 i f i t e m . q u a l i t y < 5 0 i t e m . q u a l i t y = i t e m . q u a l i t y + 1 e n d e n d e n d e n d e n d i f i t e m . n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " i t e m . s e l l _ i n = i t e m . s e l l _ i n - 1 ; e n d # . . . 1 7 m o r e l i n e s . . . e n d
  20. d e f u p d a t e (

    i t e m ) i f i t e m . n a m e ! = " A g e d B r i e " & & i t e m . n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f i t e m . q u a l i t y > 0 i f i t e m . n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " i t e m . q u a l i t y = i t e m . q u a l i t y - 1 e n d e n d e l s e i f i t e m . q u a l i t y < 5 0 i t e m . q u a l i t y = i t e m . q u a l i t y + 1 i f i t e m . n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f i t e m . s e l l _ i n < 1 1 i f i t e m . q u a l i t y < 5 0 i t e m . q u a l i t y = i t e m . q u a l i t y + 1 e n d e n d i f i t e m . s e l l _ i n < 6 i f i t e m . q u a l i t y < 5 0 i t e m . q u a l i t y = i t e m . q u a l i t y + 1 e n d e n d e n d e n d e n d i f i t e m . n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " i t e m . s e l l _ i n = i t e m . s e l l _ i n - 1 e n d # . . . 1 7 m o r e l i n e s . . . e n d
  21. d e f u p d a t e (

    i t e m ) i f i t e m . n a m e ! = " A g e d B r i e " & & i t e m . n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f i t e m . q u a l i t y > 0 i f i t e m . n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " i t e m . q u a l i t y - = 1 e n d e n d e l s e i f i t e m . q u a l i t y < 5 0 i t e m . q u a l i t y + = 1 i f i t e m . n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f i t e m . s e l l _ i n < 1 1 i f i t e m . q u a l i t y < 5 0 i t e m . q u a l i t y + = 1 e n d e n d i f i t e m . s e l l _ i n < 6 i f i t e m . q u a l i t y < 5 0 i t e m . q u a l i t y + = 1 e n d e n d e n d e n d e n d i f i t e m . n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " i t e m . s e l l _ i n - = 1 e n d # . . . 1 7 m o r e l i n e s . . . e n d
  22. d e f u p d a t e (

    i t e m ) i f i t e m . n a m e ! = " A g e d B r i e " & & i t e m . n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f i t e m . q u a l i t y > 0 i f i t e m . n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " i t e m . q u a l i t y - = 1 e n d e n d e l s e i f i t e m . q u a l i t y < 5 0 i t e m . q u a l i t y + = 1 i f i t e m . n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f i t e m . s e l l _ i n < 1 1 i f i t e m . q u a l i t y < 5 0 i t e m . q u a l i t y + = 1 e n d e n d i f i t e m . s e l l _ i n < 6 i f i t e m . q u a l i t y < 5 0 i t e m . q u a l i t y + = 1 e n d e n d e n d e n d e n d i f i t e m . n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " i t e m . s e l l _ i n - = 1 e n d # . . . 1 7 m o r e l i n e s . . . e n d
  23. d e f u p d a t e (

    i t e m ) i f i t e m . n a m e ! = " A g e d B r i e " & & i t e m . n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f i t e m . q u a l i t y > 0 i f i t e m . n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " i t e m . q u a l i t y - = 1 e n d e n d e l s e i f i t e m . q u a l i t y < 5 0 i t e m . q u a l i t y + = 1 i f i t e m . n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f i t e m . s e l l _ i n < 1 1 i f i t e m . q u a l i t y < 5 0 i t e m . q u a l i t y + = 1 e n d e n d i f i t e m . s e l l _ i n < 6 i f i t e m . q u a l i t y < 5 0 i t e m . q u a l i t y + = 1 e n d e n d e n d e n d e n d i f i t e m . n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " i t e m . s e l l _ i n - = 1 e n d # . . . c o n t i n u e d . . . e n d
  24. Constraint The I t e m class and @ i

    t e m s property are off limits - no collective code ownership
  25. c l a s s G i l d e

    d R o s e d e f u p d a t e _ q u a l i t y @ i t e m s . e a c h d o | i t e m | u p d a t e ( i t e m ) e n d e n d d e f u p d a t e ( i t e m ) # . . . 4 3 l i n e s u s i n g i t e m . . . e n d e n d
  26. r e q u i r e ' d e

    l e g a t e ' c l a s s I t e m W r a p p e r < S i m p l e D e l e g a t o r e n d c l a s s G i l d e d R o s e d e f u p d a t e _ q u a l i t y @ i t e m s . e a c h d o | i t e m | u p d a t e ( I t e m W r a p p e r . n e w ( i t e m ) ) e n d e n d d e f u p d a t e ( i t e m ) # . . . 4 3 l i n e s u s i n g i t e m . . . e n d e n d
  27. c l a s s I t e m W

    r a p p e r < S i m p l e D e l e g a t o r d e f u p d a t e i t e m = s e l f # . . . 4 3 l i n e s u s i n g i t e m . . . e n d e n d c l a s s G i l d e d R o s e d e f u p d a t e _ q u a l i t y @ i t e m s . e a c h d o | i t e m | u p d a t e ( I t e m W r a p p e r . n e w ( i t e m ) ) e n d e n d d e f u p d a t e ( i t e m ) i t e m . u p d a t e e n d e n d
  28. c l a s s I t e m W

    r a p p e r < S i m p l e D e l e g a t o r d e f u p d a t e i t e m = s e l f # . . . 4 3 l i n e s u s i n g i t e m . . . e n d e n d c l a s s G i l d e d R o s e d e f u p d a t e _ q u a l i t y @ i t e m s . e a c h d o | i t e m | I t e m W r a p p e r . n e w ( i t e m ) . u p d a t e e n d e n d e n d
  29. d e f u p d a t e i

    t e m = s e l f i f i t e m . n a m e ! = " A g e d B r i e " & & i t e m . n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f i t e m . q u a l i t y > 0 i f i t e m . n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " i t e m . q u a l i t y - = 1 e n d e n d e l s e i f i t e m . q u a l i t y < 5 0 i t e m . q u a l i t y + = 1 i f i t e m . n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f i t e m . s e l l _ i n < 1 1 i f i t e m . q u a l i t y < 5 0 i t e m . q u a l i t y + = 1 e n d e n d i f i t e m . s e l l _ i n < 6 i f i t e m . q u a l i t y < 5 0 i t e m . q u a l i t y + = 1 e n d e n d e n d e n d e n d i f i t e m . n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " i t e m . s e l l _ i n - = 1 e n d # . . . c o n t i n u e d . . . e n d
  30. d e f u p d a t e i

    f s e l f . n a m e ! = " A g e d B r i e " & & s e l f . n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f s e l f . q u a l i t y > 0 i f s e l f . n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " s e l f . q u a l i t y - = 1 e n d e n d e l s e i f s e l f . q u a l i t y < 5 0 s e l f . q u a l i t y + = 1 i f s e l f . n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f s e l f . s e l l _ i n < 1 1 i f s e l f . q u a l i t y < 5 0 s e l f . q u a l i t y + = 1 e n d e n d i f s e l f . s e l l _ i n < 6 i f s e l f . q u a l i t y < 5 0 s e l f . q u a l i t y + = 1 e n d e n d e n d e n d e n d i f s e l f . n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " s e l f . s e l l _ i n - = 1 e n d # . . . c o n t i n u e d . . . e n d
  31. d e f u p d a t e i

    f n a m e ! = " A g e d B r i e " & & n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f q u a l i t y > 0 i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " s e l f . q u a l i t y - = 1 e n d e n d e l s e i f q u a l i t y < 5 0 s e l f . q u a l i t y + = 1 i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f s e l l _ i n < 1 1 i f q u a l i t y < 5 0 s e l f . q u a l i t y + = 1 e n d e n d i f s e l l _ i n < 6 i f q u a l i t y < 5 0 s e l f . q u a l i t y + = 1 e n d e n d e n d e n d e n d i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " s e l f . s e l l _ i n - = 1 e n d # . . . c o n t i n u e d . . . e n d
  32. d e f u p d a t e i

    f n a m e ! = " A g e d B r i e " & & n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f q u a l i t y > 0 i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " s e l f . q u a l i t y - = 1 e n d e n d e l s e i f q u a l i t y < 5 0 s e l f . q u a l i t y + = 1 i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f s e l l _ i n < 1 1 i f q u a l i t y < 5 0 s e l f . q u a l i t y + = 1 e n d e n d i f s e l l _ i n < 6 i f q u a l i t y < 5 0 s e l f . q u a l i t y + = 1 e n d e n d e n d e n d e n d i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " s e l f . s e l l _ i n - = 1 e n d # . . . c o n t i n u e d . . . e n d
  33. d e f u p d a t e i

    f # . . . # . . . e l s e i f q u a l i t y < 5 0 s e l f . q u a l i t y + = 1 i f # . . . i f # . . . i f q u a l i t y < 5 0 s e l f . q u a l i t y + = 1 e n d e n d i f # . . . i f q u a l i t y < 5 0 s e l f . q u a l i t y + = 1 e n d e n d e n d e n d e n d # . . . i f # . . . i f # . . . # . . . e l s e i f q u a l i t y < 5 0 s e l f . q u a l i t y + = 1 e n d e n d e n d e n d
  34. d e f u p d a t e i

    f # . . . # . . . e l s e i f q u a l i t y < 5 0 s e l f . q u a l i t y + = 1 i f # . . . i f # . . . i n c r e a s e _ q u a l i t y e n d i f # . . . i n c r e a s e _ q u a l i t y e n d e n d e n d e n d # . . . i f # . . . i f # . . . # . . . e l s e i n c r e a s e _ q u a l i t y e n d e n d e n d d e f i n c r e a s e _ q u a l i t y i f q u a l i t y < 5 0 s e l f . q u a l i t y + = 1 e n d e n d
  35. d e f u p d a t e i

    f # . . . # . . . e l s e i f q u a l i t y < 5 0 s e l f . q u a l i t y + = 1 i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f s e l l _ i n < 1 1 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 6 i n c r e a s e _ q u a l i t y e n d e n d e n d e n d # . . . e n d d e f i n c r e a s e _ q u a l i t y i f q u a l i t y < 5 0 s e l f . q u a l i t y + = 1 e n d e n d
  36. d e f u p d a t e i

    f # . . . # . . . e l s e i f q u a l i t y < 5 0 s e l f . q u a l i t y + = 1 e n d i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f s e l l _ i n < 1 1 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 6 i n c r e a s e _ q u a l i t y e n d e n d e n d # . . . e n d d e f i n c r e a s e _ q u a l i t y i f q u a l i t y < 5 0 s e l f . q u a l i t y + = 1 e n d e n d
  37. d e f u p d a t e i

    f # . . . # . . . e l s e i n c r e a s e _ q u a l i t y i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f s e l l _ i n < 1 1 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 6 i n c r e a s e _ q u a l i t y e n d e n d e n d # . . . e n d d e f i n c r e a s e _ q u a l i t y i f q u a l i t y < 5 0 s e l f . q u a l i t y + = 1 e n d e n d
  38. d e f u p d a t e i

    f # . . . i f q u a l i t y > 0 i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " s e l f . q u a l i t y - = 1 e n d e n d e l s e # . . . e n d # . . . i f # . . . i f # . . . i f # . . . i f q u a l i t y > 0 i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " s e l f . q u a l i t y - = 1 e n d e n d e l s e # . . . e n d e l s e # . . . e n d e n d e n d
  39. d e f u p d a t e i

    f # . . . i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " i f q u a l i t y > 0 s e l f . q u a l i t y - = 1 e n d e n d e l s e # . . . e n d # . . . i f # . . . i f # . . . i f # . . . i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " i f q u a l i t y > 0 s e l f . q u a l i t y - = 1 e n d e n d e l s e # . . . e n d e l s e # . . . e n d e n d e n d
  40. d e f u p d a t e i

    f # . . . i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " d e c r e a s e _ q u a l i t y e n d e l s e # . . . e n d # . . . i f # . . . i f # . . . i f # . . . i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " d e c r e a s e _ q u a l i t y e n d e l s e # . . . e n d e l s e # . . . e n d e n d e n d d e f d e c r e a s e _ q u a l i t y i f q u a l i t y > 0 s e l f . q u a l i t y - = 1 e n d e n d
  41. d e f u p d a t e i

    f n a m e ! = " A g e d B r i e " & & n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " d e c r e a s e _ q u a l i t y e n d e l s e i n c r e a s e _ q u a l i t y i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f s e l l _ i n < 1 1 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 6 i n c r e a s e _ q u a l i t y e n d e n d e n d i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " s e l f . s e l l _ i n - = 1 e n d i f s e l l _ i n < 0 i f n a m e ! = " A g e d B r i e " i f n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " d e c r e a s e _ q u a l i t y e n d e l s e s e l f . q u a l i t y - = q u a l i t y e n d e l s e i n c r e a s e _ q u a l i t y e n d e n d e n d
  42. d e f u p d a t e i

    f n a m e ! = " A g e d B r i e " & & n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " d e c r e a s e _ q u a l i t y e n d e l s e i n c r e a s e _ q u a l i t y i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f s e l l _ i n < 1 1 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 6 i n c r e a s e _ q u a l i t y e n d e n d e n d i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " s e l f . s e l l _ i n - = 1 e n d i f s e l l _ i n < 0 i f n a m e ! = " A g e d B r i e " i f n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " d e c r e a s e _ q u a l i t y e n d e l s e s e l f . q u a l i t y - = q u a l i t y e n d e l s e i n c r e a s e _ q u a l i t y e n d e n d e n d
  43. d e f u p d a t e i

    f # . . . # . . . e l s e # . . . i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f s e l l _ i n < 1 1 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 6 i n c r e a s e _ q u a l i t y e n d e n d e n d i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " s e l f . s e l l _ i n - = 1 e n d i f s e l l _ i n < 0 # . . . e n d e n d
  44. d e f u p d a t e i

    f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " s e l f . s e l l _ i n - = 1 e n d i f # . . . # . . . e l s e # . . . i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f s e l l _ i n < 1 0 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 5 i n c r e a s e _ q u a l i t y e n d e n d e n d i f s e l l _ i n < 0 # . . . e n d e n d
  45. d e f u p d a t e i

    f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " s e l f . s e l l _ i n - = 1 e n d i f n a m e ! = " A g e d B r i e " & & n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " d e c r e a s e _ q u a l i t y e n d e l s e i n c r e a s e _ q u a l i t y i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f s e l l _ i n < 1 0 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 5 i n c r e a s e _ q u a l i t y e n d e n d e n d i f s e l l _ i n < 0 i f n a m e ! = " A g e d B r i e " i f n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " d e c r e a s e _ q u a l i t y e n d e l s e s e l f . q u a l i t y - = q u a l i t y e n d e l s e i n c r e a s e _ q u a l i t y e n d e n d e n d
  46. d e f u p d a t e a

    g e i f n a m e ! = " A g e d B r i e " & & n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " d e c r e a s e _ q u a l i t y e n d e l s e i n c r e a s e _ q u a l i t y i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f s e l l _ i n < 1 0 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 5 i n c r e a s e _ q u a l i t y e n d e n d e n d i f s e l l _ i n < 0 i f n a m e ! = " A g e d B r i e " i f n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " d e c r e a s e _ q u a l i t y e n d e l s e s e l f . q u a l i t y - = q u a l i t y e n d e l s e i n c r e a s e _ q u a l i t y e n d e n d e n d d e f a g e i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " s e l f . s e l l _ i n - = 1 e n d e n d
  47. d e f u p d a t e a

    g e u p d a t e _ q u a l i t y e n d d e f u p d a t e _ q u a l i t y i f n a m e ! = " A g e d B r i e " & & n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " d e c r e a s e _ q u a l i t y e n d e l s e i n c r e a s e _ q u a l i t y i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f s e l l _ i n < 1 0 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 5 i n c r e a s e _ q u a l i t y e n d e n d e n d i f s e l l _ i n < 0 i f n a m e ! = " A g e d B r i e " i f n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " d e c r e a s e _ q u a l i t y e n d e l s e s e l f . q u a l i t y - = q u a l i t y e n d e l s e i n c r e a s e _ q u a l i t y e n d e n d e n d
  48. d e f u p d a t e _

    q u a l i t y i f n a m e ! = " A g e d B r i e " & & n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " d e c r e a s e _ q u a l i t y e n d e l s e i n c r e a s e _ q u a l i t y i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f s e l l _ i n < 1 0 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 5 i n c r e a s e _ q u a l i t y e n d e n d e n d i f s e l l _ i n < 0 i f n a m e ! = " A g e d B r i e " i f n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " d e c r e a s e _ q u a l i t y e n d e l s e s e l f . q u a l i t y - = q u a l i t y e n d e l s e i n c r e a s e _ q u a l i t y e n d e n d e n d
  49. d e f u p d a t e _

    q u a l i t y i f n a m e ! = " A g e d B r i e " & & n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " d e c r e a s e _ q u a l i t y e n d e l s e i n c r e a s e _ q u a l i t y i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f s e l l _ i n < 1 0 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 5 i n c r e a s e _ q u a l i t y e n d e n d e n d i f s e l l _ i n < 0 i f n a m e ! = " A g e d B r i e " i f n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " d e c r e a s e _ q u a l i t y e n d e l s e s e l f . q u a l i t y - = q u a l i t y e n d e l s e i n c r e a s e _ q u a l i t y e n d e n d e n d
  50. i f n a m e ! = " B

    a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " d e c r e a s e _ q u a l i t y e n d e l s e s e l f . q u a l i t y - = q u a l i t y e n d
  51. i f n a m e = = " B

    a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " s e l f . q u a l i t y - = q u a l i t y e l s e i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " d e c r e a s e _ q u a l i t y e n d e n d
  52. i f n a m e ! = " A

    g e d B r i e " i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " s e l f . q u a l i t y - = q u a l i t y e l s e i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " d e c r e a s e _ q u a l i t y e n d e n d e l s e i n c r e a s e _ q u a l i t y e n d
  53. i f n a m e = = " A

    g e d B r i e " i n c r e a s e _ q u a l i t y e l s e i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " s e l f . q u a l i t y - = q u a l i t y e l s e i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " d e c r e a s e _ q u a l i t y e n d e n d e n d
  54. i f n a m e ! = " A

    g e d B r i e " & & n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " d e c r e a s e _ q u a l i t y e n d e l s e i n c r e a s e _ q u a l i t y i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f s e l l _ i n < 1 0 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 5 i n c r e a s e _ q u a l i t y e n d e n d e n d
  55. DeMorgan's Laws not (A and B) ==> (not A) or

    (not B) not (A or B) ==> (not A) and (not B)
  56. n a m e ! = " A g e

    d B r i e " & & n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t "
  57. n a m e ! = " A g e

    d B r i e " & & n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " # N e g a t e : ! ( n a m e ! = " A g e d B r i e " & & n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " )
  58. n a m e ! = " A g e

    d B r i e " & & n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " # N e g a t e : ! ( n a m e ! = " A g e d B r i e " & & n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " ) # D e M o r g a n : n o t ( A a n d B ) = = > ( n o t A ) o r ( n o t B ) ! ( n a m e ! = " A g e d B r i e " ) | | ! ( n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " )
  59. n a m e ! = " A g e

    d B r i e " & & n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " # N e g a t e : ! ( n a m e ! = " A g e d B r i e " & & n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " ) # D e M o r g a n : n o t ( A a n d B ) = = > ( n o t A ) o r ( n o t B ) ! ( n a m e ! = " A g e d B r i e " ) | | ! ( n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " ) # S i m p l i f y : n a m e = = " A g e d B r i e " | | n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t "
  60. i f n a m e ! = " A

    g e d B r i e " & & n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " d e c r e a s e _ q u a l i t y e n d e l s e i n c r e a s e _ q u a l i t y i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f s e l l _ i n < 1 0 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 5 i n c r e a s e _ q u a l i t y e n d e n d e n d
  61. i f n a m e = = " A

    g e d B r i e " | | n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i n c r e a s e _ q u a l i t y i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f s e l l _ i n < 1 0 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 5 i n c r e a s e _ q u a l i t y e n d e n d e l s e i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " d e c r e a s e _ q u a l i t y e n d e n d
  62. d e f u p d a t e _

    q u a l i t y i f # . . . # . . . e l s e i f # . . . # . . . e n d e n d i f # . . . i f # . . . # . . . e l s e i f # . . . # . . . e l s e i f # . . . # . . . e n d e n d e n d e n d e n d
  63. d e f u p d a t e _

    q u a l i t y i f # . . . # . . . e l s i f # . . . # . . . e n d i f # . . . i f # . . . # . . . e l s i f # . . . # . . . e l s i f # . . . # . . . e n d e n d e n d
  64. d e f u p d a t e _

    q u a l i t y i f n a m e = = " A g e d B r i e " | | n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i n c r e a s e _ q u a l i t y i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f s e l l _ i n < 1 0 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 5 i n c r e a s e _ q u a l i t y e n d e n d e l s i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " d e c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 0 i f n a m e = = " A g e d B r i e " i n c r e a s e _ q u a l i t y e l s i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " s e l f . q u a l i t y - = q u a l i t y e l s i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " d e c r e a s e _ q u a l i t y e n d e n d e n d
  65. d e f u p d a t e _

    q u a l i t y i f # . . . # . . . e l s i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " d e c r e a s e _ q u a l i t y e n d i f # . . . i f # . . . # . . . e l s i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " d e c r e a s e _ q u a l i t y e n d e n d e n d
  66. d e f u p d a t e _

    q u a l i t y r e t u r n i f n a m e = = " S u l f u r a s , H a n d o f R a g n a r o s " i f # . . . # . . . e l s e d e c r e a s e _ q u a l i t y e n d i f # . . . i f # . . . # . . . e l s e d e c r e a s e _ q u a l i t y e n d e n d e n d
  67. d e f u p d a t e a

    g e u p d a t e _ q u a l i t y e n d d e f a g e i f n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " s e l f . s e l l _ i n - = 1 e n d e n d d e f u p d a t e _ q u a l i t y r e t u r n i f n a m e = = " S u l f u r a s , H a n d o f R a g n a r o s " # . . . 2 2 l i n e s . . . e n d
  68. d e f u p d a t e a

    g e u p d a t e _ q u a l i t y e n d d e f a g e r e t u r n i f n a m e = = " S u l f u r a s , H a n d o f R a g n a r o s " s e l f . s e l l _ i n - = 1 e n d d e f u p d a t e _ q u a l i t y r e t u r n i f n a m e = = " S u l f u r a s , H a n d o f R a g n a r o s " # . . . 2 2 l i n e s . . . e n d
  69. d e f u p d a t e r

    e t u r n i f n a m e = = " S u l f u r a s , H a n d o f R a g n a r o s " a g e u p d a t e _ q u a l i t y e n d d e f a g e s e l f . s e l l _ i n - = 1 e n d d e f u p d a t e _ q u a l i t y # . . . 2 2 l i n e s . . . e n d
  70. d e f u p d a t e _

    q u a l i t y i f n a m e = = " A g e d B r i e " | | n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i n c r e a s e _ q u a l i t y i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i f s e l l _ i n < 1 0 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 5 i n c r e a s e _ q u a l i t y e n d e n d e l s e d e c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 0 i f n a m e = = " A g e d B r i e " i n c r e a s e _ q u a l i t y e l s i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " s e l f . q u a l i t y - = q u a l i t y e l s e d e c r e a s e _ q u a l i t y e n d e n d e n d
  71. d e f u p d a t e _

    q u a l i t y i f n a m e = = " A g e d B r i e " i n c r e a s e _ q u a l i t y e l s i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i n c r e a s e _ q u a l i t y i f s e l l _ i n < 1 0 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 5 i n c r e a s e _ q u a l i t y e n d e l s e d e c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 0 i f n a m e = = " A g e d B r i e " i n c r e a s e _ q u a l i t y e l s i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " s e l f . q u a l i t y - = q u a l i t y e l s e d e c r e a s e _ q u a l i t y e n d e n d e n d
  72. d e f u p d a t e _

    q u a l i t y i f n a m e = = " A g e d B r i e " i n c r e a s e _ q u a l i t y e l s i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i n c r e a s e _ q u a l i t y i f s e l l _ i n < 1 0 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 5 i n c r e a s e _ q u a l i t y e n d e l s e d e c r e a s e _ q u a l i t y i f s e l l _ i n < 0 d e c r e a s e _ q u a l i t y e n d e n d i f s e l l _ i n < 0 i f n a m e = = " A g e d B r i e " i n c r e a s e _ q u a l i t y e l s i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " s e l f . q u a l i t y - = q u a l i t y e n d e n d e n d
  73. d e f u p d a t e _

    q u a l i t y i f n a m e = = " A g e d B r i e " i n c r e a s e _ q u a l i t y e l s i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i n c r e a s e _ q u a l i t y i f s e l l _ i n < 1 0 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 5 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 0 s e l f . q u a l i t y - = q u a l i t y e n d e l s e d e c r e a s e _ q u a l i t y i f s e l l _ i n < 0 d e c r e a s e _ q u a l i t y e n d e n d i f s e l l _ i n < 0 i f n a m e = = " A g e d B r i e " i n c r e a s e _ q u a l i t y e n d e n d e n d
  74. d e f u p d a t e _

    q u a l i t y i f n a m e = = " A g e d B r i e " i n c r e a s e _ q u a l i t y i f s e l l _ i n < 0 i n c r e a s e _ q u a l i t y e n d e l s i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i n c r e a s e _ q u a l i t y i f s e l l _ i n < 1 0 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 5 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 0 s e l f . q u a l i t y - = q u a l i t y e n d e l s e d e c r e a s e _ q u a l i t y i f s e l l _ i n < 0 d e c r e a s e _ q u a l i t y e n d e n d e n d
  75. d e f u p d a t e _

    q u a l i t y i f n a m e = = " A g e d B r i e " i n c r e a s e _ q u a l i t y i f s e l l _ i n < 0 i n c r e a s e _ q u a l i t y e n d e l s i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i n c r e a s e _ q u a l i t y i f s e l l _ i n < 1 0 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 5 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 0 s e l f . q u a l i t y - = q u a l i t y e n d e l s e d e c r e a s e _ q u a l i t y i f s e l l _ i n < 0 d e c r e a s e _ q u a l i t y e n d e n d e n d
  76. d e f u p d a t e _

    q u a l i t y i f n a m e = = " A g e d B r i e " i n c r e a s e _ q u a l i t y i f s e l l _ i n < 0 i n c r e a s e _ q u a l i t y e n d e l s i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i n c r e a s e _ q u a l i t y i f s e l l _ i n < 1 0 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 5 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 0 s e l f . q u a l i t y - = q u a l i t y e n d e l s e d e c r e a s e _ q u a l i t y i f s e l l _ i n < 0 d e c r e a s e _ q u a l i t y e n d e n d e n d
  77. d e f u p d a t e _

    q u a l i t y i f n a m e = = " A g e d B r i e " i n c r e a s e _ q u a l i t y i f s e l l _ i n < 0 i n c r e a s e _ q u a l i t y e n d e l s i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i n c r e a s e _ q u a l i t y i f s e l l _ i n < 1 0 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 5 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 0 s e l f . q u a l i t y - = q u a l i t y e n d e l s e d e c r e a s e _ q u a l i t y i f s e l l _ i n < 0 d e c r e a s e _ q u a l i t y e n d e n d e n d
  78. d e f u p d a t e _

    q u a l i t y i f n a m e = = " A g e d B r i e " i n c r e a s e _ q u a l i t y i f s e l l _ i n < 0 i n c r e a s e _ q u a l i t y e n d e l s i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i n c r e a s e _ q u a l i t y i f s e l l _ i n < 1 0 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 5 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 0 s e l f . q u a l i t y - = q u a l i t y e n d e l s i f n a m e = = " C o n j u r e d M a n a C a k e " d e c r e a s e _ q u a l i t y d e c r e a s e _ q u a l i t y i f s e l l _ i n < 0 d e c r e a s e _ q u a l i t y d e c r e a s e _ q u a l i t y e n d e l s e d e c r e a s e _ q u a l i t y i f s e l l _ i n < 0 d e c r e a s e _ q u a l i t y e n d e n d e n d
  79. d e f u p d a t e _

    q u a l i t y i f n a m e = = " A g e d B r i e " i n c r e a s e _ q u a l i t y i f s e l l _ i n < 0 i n c r e a s e _ q u a l i t y e n d e l s i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i n c r e a s e _ q u a l i t y i f s e l l _ i n < 1 0 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 5 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 0 s e l f . q u a l i t y - = q u a l i t y e n d e l s i f n a m e = = " C o n j u r e d M a n a C a k e " s e l f . q u a l i t y - = 2 # F a i l s t e s t s - w e c a n ' t d o t h i s i f s e l l _ i n < 0 s e l f . q u a l i t y - = 2 # F a i l s t e s t s - w e c a n ' t d o t h i s e n d e l s e d e c r e a s e _ q u a l i t y i f s e l l _ i n < 0 d e c r e a s e _ q u a l i t y e n d e n d e n d
  80. d e f u p d a t e _

    q u a l i t y i f n a m e = = " A g e d B r i e " i n c r e a s e _ q u a l i t y i f s e l l _ i n < 0 i n c r e a s e _ q u a l i t y e n d e l s i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i n c r e a s e _ q u a l i t y i f s e l l _ i n < 1 0 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 5 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 0 s e l f . q u a l i t y - = q u a l i t y e n d e l s i f n a m e = = " C o n j u r e d M a n a C a k e " d e c r e a s e _ q u a l i t y d e c r e a s e _ q u a l i t y i f s e l l _ i n < 0 d e c r e a s e _ q u a l i t y d e c r e a s e _ q u a l i t y e n d e l s e d e c r e a s e _ q u a l i t y i f s e l l _ i n < 0 d e c r e a s e _ q u a l i t y e n d e n d e n d
  81. c l a s s I t e m W

    r a p p e r d e f d e c r e a s e _ q u a l i t y i f q u a l i t y > 0 s e l f . q u a l i t y - = 1 e n d e n d d e f i n c r e a s e _ q u a l i t y i f q u a l i t y < 5 0 s e l f . q u a l i t y + = 1 e n d e n d e n d
  82. The Spec ... The quality of an item is never

    negative ... The quality of an item is never more than 50 ...
  83. c l a s s I t e m W

    r a p p e r d e f d e c r e a s e _ q u a l i t y i f q u a l i t y > 0 s e l f . q u a l i t y - = 1 e n d e n d d e f i n c r e a s e _ q u a l i t y i f q u a l i t y < 5 0 s e l f . q u a l i t y + = 1 e n d e n d e n d
  84. c l a s s I t e m W

    r a p p e r d e f d e c r e a s e _ q u a l i t y i f q u a l i t y > 0 s e l f . q u a l i t y - = 1 e n d e n d d e f i n c r e a s e _ q u a l i t y i f q u a l i t y < 5 0 s e l f . q u a l i t y + = 1 e n d e n d d e f q u a l i t y = ( n e w _ q u a l i t y ) s u p e r e n d e n d
  85. c l a s s I t e m W

    r a p p e r d e f d e c r e a s e _ q u a l i t y s e l f . q u a l i t y - = 1 e n d d e f i n c r e a s e _ q u a l i t y i f q u a l i t y < 5 0 s e l f . q u a l i t y + = 1 e n d e n d d e f q u a l i t y = ( n e w _ q u a l i t y ) n e w _ q u a l i t y = 0 i f n e w _ q u a l i t y < 0 s u p e r ( n e w _ q u a l i t y ) e n d e n d
  86. c l a s s I t e m W

    r a p p e r d e f d e c r e a s e _ q u a l i t y s e l f . q u a l i t y - = 1 e n d d e f i n c r e a s e _ q u a l i t y s e l f . q u a l i t y + = 1 e n d d e f q u a l i t y = ( n e w _ q u a l i t y ) n e w _ q u a l i t y = 0 i f n e w _ q u a l i t y < 0 n e w _ q u a l i t y = 5 0 i f n e w _ q u a l i t y > 5 0 s u p e r ( n e w _ q u a l i t y ) e n d e n d
  87. d e f u p d a t e _

    q u a l i t y i f n a m e = = " A g e d B r i e " i n c r e a s e _ q u a l i t y i f s e l l _ i n < 0 i n c r e a s e _ q u a l i t y e n d e l s i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i n c r e a s e _ q u a l i t y i f s e l l _ i n < 1 0 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 5 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 0 s e l f . q u a l i t y - = q u a l i t y e n d e l s i f n a m e = = " C o n j u r e d M a n a C a k e " d e c r e a s e _ q u a l i t y d e c r e a s e _ q u a l i t y i f s e l l _ i n < 0 d e c r e a s e _ q u a l i t y d e c r e a s e _ q u a l i t y e n d e l s e d e c r e a s e _ q u a l i t y i f s e l l _ i n < 0 d e c r e a s e _ q u a l i t y e n d e n d e n d d e f d e c r e a s e _ q u a l i t y s e l f . q u a l i t y - = 1 e n d
  88. d e f u p d a t e _

    q u a l i t y i f n a m e = = " A g e d B r i e " i n c r e a s e _ q u a l i t y i f s e l l _ i n < 0 i n c r e a s e _ q u a l i t y e n d e l s i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " i n c r e a s e _ q u a l i t y i f s e l l _ i n < 1 0 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 5 i n c r e a s e _ q u a l i t y e n d i f s e l l _ i n < 0 s e l f . q u a l i t y - = q u a l i t y e n d e l s i f n a m e = = " C o n j u r e d M a n a C a k e " s e l f . q u a l i t y - = 1 s e l f . q u a l i t y - = 1 i f s e l l _ i n < 0 s e l f . q u a l i t y - = 1 s e l f . q u a l i t y - = 1 e n d e l s e s e l f . q u a l i t y - = 1 i f s e l l _ i n < 0 s e l f . q u a l i t y - = 1 e n d e n d e n d d e f i n c r e a s e _ q u a l i t y s e l f . q u a l i t y + = 1 e n d
  89. d e f u p d a t e _

    q u a l i t y i f n a m e = = " A g e d B r i e " s e l f . q u a l i t y + = 1 i f s e l l _ i n < 0 s e l f . q u a l i t y + = 1 e n d e l s i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " s e l f . q u a l i t y + = 1 i f s e l l _ i n < 1 0 s e l f . q u a l i t y + = 1 e n d i f s e l l _ i n < 5 s e l f . q u a l i t y + = 1 e n d i f s e l l _ i n < 0 s e l f . q u a l i t y - = q u a l i t y e n d e l s i f n a m e = = " C o n j u r e d M a n a C a k e " s e l f . q u a l i t y - = 1 s e l f . q u a l i t y - = 1 i f s e l l _ i n < 0 s e l f . q u a l i t y - = 1 s e l f . q u a l i t y - = 1 e n d e l s e s e l f . q u a l i t y - = 1 i f s e l l _ i n < 0 s e l f . q u a l i t y - = 1 e n d e n d e n d
  90. d e f u p d a t e _

    q u a l i t y i f n a m e = = " A g e d B r i e " s e l f . q u a l i t y + = 1 i f s e l l _ i n < 0 s e l f . q u a l i t y + = 1 e n d e l s i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " s e l f . q u a l i t y + = 1 i f s e l l _ i n < 1 0 s e l f . q u a l i t y + = 1 e n d i f s e l l _ i n < 5 s e l f . q u a l i t y + = 1 e n d i f s e l l _ i n < 0 s e l f . q u a l i t y - = q u a l i t y e n d e l s i f n a m e = = " C o n j u r e d M a n a C a k e " s e l f . q u a l i t y - = 2 i f s e l l _ i n < 0 s e l f . q u a l i t y - = 2 e n d e l s e s e l f . q u a l i t y - = 1 i f s e l l _ i n < 0 s e l f . q u a l i t y - = 1 e n d e n d e n d
  91. d e f u p d a t e _

    q u a l i t y s e l f . q u a l i t y + = q u a l i t y _ a d j u s t m e n t e n d d e f q u a l i t y _ a d j u s t m e n t i f n a m e = = " A g e d B r i e " a d j u s t m e n t = 1 i f s e l l _ i n < 0 a d j u s t m e n t = 2 e n d e l s i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " a d j u s t m e n t = 1 i f s e l l _ i n < 1 0 a d j u s t m e n t = 2 e n d i f s e l l _ i n < 5 a d j u s t m e n t = 3 e n d i f s e l l _ i n < 0 a d j u s t m e n t = - q u a l i t y e n d e l s i f n a m e = = " C o n j u r e d M a n a C a k e " a d j u s t m e n t = - 2 i f s e l l _ i n < 0 a d j u s t m e n t = - 4 e n d e l s e a d j u s t m e n t = - 1 i f s e l l _ i n < 0 a d j u s t m e n t = - 2 e n d e n d a d j u s t m e n t e n d
  92. c l a s s I t e m W

    r a p p e r < S i m p l e D e l e g a t o r # . . . e n d c l a s s G i l d e d R o s e d e f u p d a t e _ q u a l i t y @ i t e m s . e a c h d o | i t e m | I t e m W r a p p e r . n e w ( i t e m ) . u p d a t e e n d e n d e n d
  93. c l a s s I t e m W

    r a p p e r < S i m p l e D e l e g a t o r d e f s e l f . w r a p ( i t e m ) n e w ( i t e m ) e n d # . . . e n d c l a s s G i l d e d R o s e d e f u p d a t e _ q u a l i t y @ i t e m s . e a c h d o | i t e m | I t e m W r a p p e r . w r a p ( i t e m ) . u p d a t e e n d e n d e n d
  94. c l a s s I t e m W

    r a p p e r d e f s e l f . w r a p ( i t e m ) n e w ( i t e m ) e n d d e f q u a l i t y _ a d j u s t m e n t i f n a m e = = " A g e d B r i e " a d j u s t m e n t = 1 i f s e l l _ i n < 0 a d j u s t m e n t = 2 e n d e l s i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " # . . . e l s i f n a m e = = " C o n j u r e d M a n a C a k e " # . . . e l s e # . . . e n d a d j u s t m e n t e n d e n d
  95. c l a s s I t e m W

    r a p p e r d e f s e l f . w r a p ( i t e m ) i f i t e m . n a m e = = " A g e d B r i e " A g e d B r i e . n e w ( i t e m ) e l s e n e w ( i t e m ) e n d e n d d e f q u a l i t y _ a d j u s t m e n t i f n a m e = = " A g e d B r i e " a d j u s t m e n t = 1 i f s e l l _ i n < 0 a d j u s t m e n t = 2 e n d e l s i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " # . . . e l s i f n a m e = = " C o n j u r e d M a n a C a k e " # . . . e l s e # . . . e n d a d j u s t m e n t e n d e n d c l a s s A g e d B r i e < I t e m W r a p p e r e n d
  96. c l a s s I t e m W

    r a p p e r d e f s e l f . w r a p ( i t e m ) i f i t e m . n a m e = = " A g e d B r i e " A g e d B r i e . n e w ( i t e m ) e l s e n e w ( i t e m ) e n d e n d d e f q u a l i t y _ a d j u s t m e n t i f n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " # . . . e l s i f n a m e = = " C o n j u r e d M a n a C a k e " # . . . e l s e # . . . e n d a d j u s t m e n t e n d e n d c l a s s A g e d B r i e < I t e m W r a p p e r d e f q u a l i t y _ a d j u s t m e n t a d j u s t m e n t = 1 i f s e l l _ i n < 0 a d j u s t m e n t = 2 e n d a d j u s t m e n t e n d e n d
  97. c l a s s I t e m W

    r a p p e r < S i m p l e D e l e g a t o r d e f s e l f . w r a p ( i t e m ) i f i t e m . n a m e = = " A g e d B r i e " A g e d B r i e . n e w ( i t e m ) e l s i f i t e m . n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " B a c k s t a g e P a s s . n e w ( i t e m ) e l s e n e w ( i t e m ) e n d e n d d e f q u a l i t y _ a d j u s t m e n t i f n a m e = = " C o n j u r e d M a n a C a k e " # . . . e l s e # . . . e n d a d j u s t m e n t e n d e n d c l a s s B a c k s t a g e P a s s < I t e m W r a p p e r d e f q u a l i t y _ a d j u s t m e n t a d j u s t m e n t = 1 i f s e l l _ i n < 1 0 a d j u s t m e n t = 2 e n d i f s e l l _ i n < 5 a d j u s t m e n t = 3 e n d i f s e l l _ i n < 0 a d j u s t m e n t = - q u a l i t y e n d a d j u s t m e n t e n d e n d
  98. c l a s s I t e m W

    r a p p e r < S i m p l e D e l e g a t o r d e f s e l f . w r a p ( i t e m ) i f i t e m . n a m e = = " A g e d B r i e " A g e d B r i e . n e w ( i t e m ) e l s i f i t e m . n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " B a c k s t a g e P a s s . n e w ( i t e m ) e l s i f i t e m . n a m e = = " C o n j u r e d M a n a C a k e " C o n j u r e d I t e m . n e w ( i t e m ) e l s e n e w ( i t e m ) e n d e n d d e f q u a l i t y _ a d j u s t m e n t # . . . a d j u s t m e n t e n d e n d c l a s s C o n j u r e d I t e m < I t e m W r a p p e r d e f q u a l i t y _ a d j u s t m e n t a d j u s t m e n t = - 2 i f s e l l _ i n < 0 a d j u s t m e n t = - 4 e n d a d j u s t m e n t e n d e n d
  99. c l a s s I t e m W

    r a p p e r < S i m p l e D e l e g a t o r d e f s e l f . w r a p ( i t e m ) i f i t e m . n a m e = = " A g e d B r i e " A g e d B r i e . n e w ( i t e m ) e l s i f i t e m . n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " B a c k s t a g e P a s s . n e w ( i t e m ) e l s i f i t e m . n a m e = = " C o n j u r e d M a n a C a k e " C o n j u r e d I t e m . n e w ( i t e m ) e l s e n e w ( i t e m ) e n d e n d d e f u p d a t e r e t u r n i f n a m e = = " S u l f u r a s , H a n d o f R a g n a r o s " a g e u p d a t e _ q u a l i t y e n d e n d
  100. c l a s s I t e m W

    r a p p e r < S i m p l e D e l e g a t o r d e f s e l f . w r a p ( i t e m ) i f i t e m . n a m e = = " A g e d B r i e " A g e d B r i e . n e w ( i t e m ) e l s i f i t e m . n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " B a c k s t a g e P a s s . n e w ( i t e m ) e l s i f i t e m . n a m e = = " C o n j u r e d M a n a C a k e " C o n j u r e d I t e m . n e w ( i t e m ) e l s i f i t e m . n a m e = = " S u l f u r a s , H a n d o f R a g n a r o s " L e g e n d a r y I t e m . n e w ( i t e m ) e l s e n e w ( i t e m ) e n d e n d d e f u p d a t e r e t u r n i f n a m e = = " S u l f u r a s , H a n d o f R a g n a r o s " a g e u p d a t e _ q u a l i t y e n d e n d c l a s s L e g e n d a r y I t e m < I t e m W r a p p e r e n d
  101. c l a s s I t e m W

    r a p p e r < S i m p l e D e l e g a t o r d e f s e l f . w r a p ( i t e m ) i f i t e m . n a m e = = " A g e d B r i e " A g e d B r i e . n e w ( i t e m ) e l s i f i t e m . n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " B a c k s t a g e P a s s . n e w ( i t e m ) e l s i f i t e m . n a m e = = " C o n j u r e d M a n a C a k e " C o n j u r e d I t e m . n e w ( i t e m ) e l s i f i t e m . n a m e = = " S u l f u r a s , H a n d o f R a g n a r o s " L e g e n d a r y I t e m . n e w ( i t e m ) e l s e n e w ( i t e m ) e n d e n d d e f u p d a t e a g e u p d a t e _ q u a l i t y e n d e n d c l a s s L e g e n d a r y I t e m < I t e m W r a p p e r d e f u p d a t e # N o t h i n g t o d o - L e g e n d a r y i t e m s d o n ' t c h a n g e e n d e n d
  102. c l a s s I t e m W

    r a p p e r < S i m p l e D e l e g a t o r d e f s e l f . w r a p ( i t e m ) i f i t e m . n a m e = = " A g e d B r i e " A g e d B r i e . n e w ( i t e m ) e l s i f i t e m . n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " B a c k s t a g e P a s s . n e w ( i t e m ) e l s i f i t e m . n a m e = = " C o n j u r e d M a n a C a k e " C o n j u r e d I t e m . n e w ( i t e m ) e l s i f i t e m . n a m e = = " S u l f u r a s , H a n d o f R a g n a r o s " L e g e n d a r y I t e m . n e w ( i t e m ) e l s e n e w ( i t e m ) e n d e n d e n d
  103. c l a s s I t e m W

    r a p p e r < S i m p l e D e l e g a t o r d e f s e l f . w r a p ( i t e m ) c a s e i t e m . n a m e w h e n " A g e d B r i e " A g e d B r i e . n e w ( i t e m ) w h e n " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " B a c k s t a g e P a s s . n e w ( i t e m ) w h e n " C o n j u r e d M a n a C a k e " C o n j u r e d I t e m . n e w ( i t e m ) w h e n " S u l f u r a s , H a n d o f R a g n a r o s " L e g e n d a r y I t e m . n e w ( i t e m ) e l s e n e w ( i t e m ) e n d e n d e n d
  104. c l a s s I t e m W

    r a p p e r < S i m p l e D e l e g a t o r d e f q u a l i t y _ a d j u s t m e n t a d j u s t m e n t = - 1 i f s e l l _ i n < 0 a d j u s t m e n t = - 2 e n d a d j u s t m e n t e n d e n d
  105. c l a s s I t e m W

    r a p p e r < S i m p l e D e l e g a t o r d e f q u a l i t y _ a d j u s t m e n t i f s e l l _ i n < 0 p a s t _ d a t e _ a d j u s t m e n t e l s e n o r m a l _ a d j u s t m e n t e n d e n d d e f n o r m a l _ a d j u s t m e n t - 1 e n d d e f p a s t _ d a t e _ a d j u s t m e n t 2 * n o r m a l _ a d j u s t m e n t e n d e n d
  106. c l a s s A g e d B

    r i e < I t e m W r a p p e r d e f q u a l i t y _ a d j u s t m e n t a d j u s t m e n t = 1 i f s e l l _ i n < 0 a d j u s t m e n t = 2 e n d a d j u s t m e n t e n d e n d
  107. c l a s s A g e d B

    r i e < I t e m W r a p p e r d e f n o r m a l _ a d j u s t m e n t - s u p e r e n d e n d
  108. c l a s s C o n j u

    r e d I t e m < I t e m W r a p p e r d e f q u a l i t y _ a d j u s t m e n t a d j u s t m e n t = - 2 i f s e l l _ i n < 0 a d j u s t m e n t = - 4 e n d a d j u s t m e n t e n d e n d
  109. c l a s s C o n j u

    r e d I t e m < I t e m W r a p p e r d e f n o r m a l _ a d j u s t m e n t 2 * s u p e r e n d e n d
  110. c l a s s B a c k s

    t a g e P a s s < I t e m W r a p p e r d e f q u a l i t y _ a d j u s t m e n t a d j u s t m e n t = 1 i f s e l l _ i n < 1 0 a d j u s t m e n t = 2 e n d i f s e l l _ i n < 5 a d j u s t m e n t = 3 e n d i f s e l l _ i n < 0 a d j u s t m e n t = - q u a l i t y e n d a d j u s t m e n t e n d e n d
  111. c l a s s B a c k s

    t a g e P a s s < I t e m W r a p p e r d e f n o r m a l _ a d j u s t m e n t a d j u s t m e n t = 1 i f s e l l _ i n < 1 0 a d j u s t m e n t = 2 e n d i f s e l l _ i n < 5 a d j u s t m e n t = 3 e n d a d j u s t m e n t e n d d e f p a s t _ d a t e _ a d j u s t m e n t - q u a l i t y e n d e n d
  112. c l a s s B a c k s

    t a g e P a s s < I t e m W r a p p e r d e f n o r m a l _ a d j u s t m e n t a d j u s t m e n t = 1 i f s e l l _ i n < 1 0 a d j u s t m e n t = 2 e n d i f s e l l _ i n < 5 a d j u s t m e n t = 3 e n d a d j u s t m e n t e n d e n d
  113. c l a s s B a c k s

    t a g e P a s s < I t e m W r a p p e r d e f n o r m a l _ a d j u s t m e n t i f s e l l _ i n < 5 3 e l s i f s e l l _ i n < 1 0 2 e l s e 1 e n d e n d e n d
  114. The Spec ... "Backstage passes" ... quality increases by 2

    when there are 10 days or less and by 3 when there are 5 days or less, ...
  115. c l a s s B a c k s

    t a g e P a s s < I t e m W r a p p e r d e f n o r m a l _ a d j u s t m e n t i f s e l l _ i n < 5 3 e l s i f s e l l _ i n < 1 0 2 e l s e 1 e n d e n d e n d
  116. d e f u p d a t e _

    q u a l i t y f o r i i n 0 . . ( @ i t e m s . s i z e - 1 ) i f ( @ i t e m s [ i ] . n a m e ! = " A g e d B r i e " & & @ i t e m s [ i ] . n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " ) i f ( @ i t e m s [ i ] . q u a l i t y > 0 ) i f ( @ i t e m s [ i ] . n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " ) @ i t e m s [ i ] . q u a l i t y = @ i t e m s [ i ] . q u a l i t y - 1 e n d e n d e l s e i f ( @ i t e m s [ i ] . q u a l i t y < 5 0 ) @ i t e m s [ i ] . q u a l i t y = @ i t e m s [ i ] . q u a l i t y + 1 i f ( @ i t e m s [ i ] . n a m e = = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " ) i f ( @ i t e m s [ i ] . s e l l _ i n < 1 1 ) i f ( @ i t e m s [ i ] . q u a l i t y < 5 0 ) @ i t e m s [ i ] . q u a l i t y = @ i t e m s [ i ] . q u a l i t y + 1 e n d e n d i f ( @ i t e m s [ i ] . s e l l _ i n < 6 ) i f ( @ i t e m s [ i ] . q u a l i t y < 5 0 ) @ i t e m s [ i ] . q u a l i t y = @ i t e m s [ i ] . q u a l i t y + 1 e n d e n d e n d e n d e n d # . . . c o n t i n u e d . . .
  117. # . . . c o n t i n

    u e d . . . i f ( @ i t e m s [ i ] . n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " ) @ i t e m s [ i ] . s e l l _ i n = @ i t e m s [ i ] . s e l l _ i n - 1 ; e n d i f ( @ i t e m s [ i ] . s e l l _ i n < 0 ) i f ( @ i t e m s [ i ] . n a m e ! = " A g e d B r i e " ) i f ( @ i t e m s [ i ] . n a m e ! = " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " ) i f ( @ i t e m s [ i ] . q u a l i t y > 0 ) i f ( @ i t e m s [ i ] . n a m e ! = " S u l f u r a s , H a n d o f R a g n a r o s " ) @ i t e m s [ i ] . q u a l i t y = @ i t e m s [ i ] . q u a l i t y - 1 e n d e n d e l s e @ i t e m s [ i ] . q u a l i t y = @ i t e m s [ i ] . q u a l i t y - @ i t e m s [ i ] . q u a l i t y e n d e l s e i f ( @ i t e m s [ i ] . q u a l i t y < 5 0 ) @ i t e m s [ i ] . q u a l i t y = @ i t e m s [ i ] . q u a l i t y + 1 e n d e n d e n d e n d e n d
  118. r e q u i r e ' . /

    i t e m . r b ' r e q u i r e ' d e l e g a t e ' c l a s s G i l d e d R o s e @ i t e m s = [ ] d e f i n i t i a l i z e @ i t e m s = [ ] @ i t e m s < < I t e m . n e w ( " + 5 D e x t e r i t y V e s t " , 1 0 , 2 0 ) @ i t e m s < < I t e m . n e w ( " A g e d B r i e " , 2 , 0 ) @ i t e m s < < I t e m . n e w ( " E l i x i r o f t h e M o n g o o s e " , 5 , 7 ) @ i t e m s < < I t e m . n e w ( " S u l f u r a s , H a n d o f R a g n a r o s " , 0 , 8 0 ) @ i t e m s < < I t e m . n e w ( " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " , 1 5 , 2 0 ) @ i t e m s < < I t e m . n e w ( " C o n j u r e d M a n a C a k e " , 3 , 6 ) e n d d e f u p d a t e _ q u a l i t y @ i t e m s . e a c h d o | i t e m | I t e m W r a p p e r . w r a p ( i t e m ) . u p d a t e e n d e n d e n d
  119. c l a s s I t e m W

    r a p p e r < S i m p l e D e l e g a t o r d e f s e l f . w r a p ( i t e m ) c a s e i t e m . n a m e w h e n " A g e d B r i e " A g e d B r i e . n e w ( i t e m ) w h e n " B a c k s t a g e p a s s e s t o a T A F K A L 8 0 E T C c o n c e r t " B a c k s t a g e P a s s . n e w ( i t e m ) w h e n " C o n j u r e d M a n a C a k e " C o n j u r e d I t e m . n e w ( i t e m ) w h e n " S u l f u r a s , H a n d o f R a g n a r o s " L e g e n d a r y I t e m . n e w ( i t e m ) e l s e n e w ( i t e m ) e n d e n d # . . . c o n t i n u e d . . .
  120. # . . . c o n t i n

    u e d . . . d e f u p d a t e a g e u p d a t e _ q u a l i t y e n d d e f a g e s e l f . s e l l _ i n - = 1 e n d # . . . c o n t i n u e d . . .
  121. # . . . c o n t i n

    u e d . . . d e f u p d a t e _ q u a l i t y s e l f . q u a l i t y + = q u a l i t y _ a d j u s t m e n t e n d d e f q u a l i t y _ a d j u s t m e n t i f s e l l _ i n < 0 p a s t _ d a t e _ a d j u s t m e n t e l s e n o r m a l _ a d j u s t m e n t e n d e n d d e f n o r m a l _ a d j u s t m e n t - 1 e n d d e f p a s t _ d a t e _ a d j u s t m e n t 2 * n o r m a l _ a d j u s t m e n t e n d d e f q u a l i t y = ( n e w _ q u a l i t y ) n e w _ q u a l i t y = 0 i f n e w _ q u a l i t y < 0 n e w _ q u a l i t y = 5 0 i f n e w _ q u a l i t y > 5 0 s u p e r ( n e w _ q u a l i t y ) e n d e n d
  122. c l a s s A g e d B

    r i e < I t e m W r a p p e r d e f n o r m a l _ a d j u s t m e n t - s u p e r e n d e n d c l a s s B a c k s t a g e P a s s < I t e m W r a p p e r d e f n o r m a l _ a d j u s t m e n t i f s e l l _ i n < 5 3 e l s i f s e l l _ i n < 1 0 2 e l s e 1 e n d e n d d e f p a s t _ d a t e _ a d j u s t m e n t - q u a l i t y e n d e n d c l a s s C o n j u r e d I t e m < I t e m W r a p p e r d e f n o r m a l _ a d j u s t m e n t 2 * s u p e r e n d e n d c l a s s L e g e n d a r y I t e m < I t e m W r a p p e r d e f u p d a t e # N o t h i n g t o d o - L e g e n d a r y i t e m s d o n ' t c h a n g e e n d e n d
  123. References Gilded Rose Kata Working Effectively With Legacy Code -

    Michael Feathers Refactoring - Martin Fowler