19 Komitmen d6444a401c ... 028c100e19

Pembuat SHA1 Pesan Tanggal
  Kevin_Smarts 028c100e19 Merge remote-tracking branch 'Hooded_Silence/master' 1 Minggu lalu
  Kevin_Smarts 86554e06a3 Merge remote-tracking branch 'Lokplart/master' 1 Minggu lalu
  Myles Croft (Hooded Silence) 8137bb1ea1 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 1 Minggu lalu
  Myles Croft (Hooded Silence) 5806717883 [Double or Nothing Edition] Some quick fixes to stop double vision when firing gym events. 1 Minggu lalu
  f95Lok 226f23dfff [changed] arguments order for view_clothing_item to be in line with all other view_type_item functions 1 Minggu lalu
  f95Lok 79d1973ea1 [changed] edited 'pirsingsalon' to use the generalized display loops 1 Minggu lalu
  f95Lok 5c91e55206 [fixed] minor bugs in the newly implemented functions 1 Minggu lalu
  f95Lok 4702a33ffd [changed] renamed one attribute file to match with function arguments 1 Minggu lalu
  f95Lok cb43097084 [added] 'display_func_managed' function to 'shop_utils' 1 Minggu lalu
  f95Lok 5bcd3e7039 [added] 'view_item' and 'buy' functions to 'tattoo_management' and 'piercing_management' 1 Minggu lalu
  f95Lok 679da80089 [changed] renamed one attribute file to match with function arguments 1 Minggu lalu
  f95Lok a21805a12c [changed] renamed attribute files to match with function arguments 1 Minggu lalu
  f95Lok 9bfbde9fd2 [changed] renamed one attribute file to match with function arguments 1 Minggu lalu
  f95Lok e11c649589 [changed] renamed one attribute file to match with function arguments 1 Minggu lalu
  f95Lok ca32473bb6 [added] updated qproj 1 Minggu lalu
  f95Lok 5172f1733e Merge remote-tracking branch 'kevin/master' 1 Minggu lalu
  f95Lok 75e40c4d62 [added] attribute files for tattoos and piercings 1 Minggu lalu
  Myles Croft (Hooded Silence) 2cb6d3a087 Merge branch 'master' of https://git.tfgames.site/Kevin_Smarts/glife 1 Minggu lalu
  Myles Croft (Hooded Silence) 81c0c853ff [Bug fix] clear unnecessary image when at Vasily home door. 1 Minggu lalu
37 mengubah file dengan 2407 tambahan dan 1702 penghapusan
  1. 32 0
      glife.qproj
  2. 13 0
      locations/_attributes_piercing_brow.qsrc
  3. 101 0
      locations/_attributes_piercing_ears.qsrc
  4. 33 0
      locations/_attributes_piercing_lip.qsrc
  5. 21 0
      locations/_attributes_piercing_navel.qsrc
  6. 33 0
      locations/_attributes_piercing_nipples.qsrc
  7. 33 0
      locations/_attributes_piercing_nose.qsrc
  8. 45 0
      locations/_attributes_piercing_pussy.qsrc
  9. 21 0
      locations/_attributes_piercing_tongue.qsrc
  10. 80 0
      locations/_attributes_tattoo_ankle.qsrc
  11. 242 0
      locations/_attributes_tattoo_arm.qsrc
  12. 80 0
      locations/_attributes_tattoo_ass.qsrc
  13. 188 0
      locations/_attributes_tattoo_back.qsrc
  14. 68 0
      locations/_attributes_tattoo_belly.qsrc
  15. 38 0
      locations/_attributes_tattoo_breasts.qsrc
  16. 50 0
      locations/_attributes_tattoo_chest.qsrc
  17. 29 0
      locations/_attributes_tattoo_face.qsrc
  18. 32 0
      locations/_attributes_tattoo_hand.qsrc
  19. 146 0
      locations/_attributes_tattoo_leg.qsrc
  20. 32 0
      locations/_attributes_tattoo_lip.qsrc
  21. 95 0
      locations/_attributes_tattoo_neck.qsrc
  22. 164 0
      locations/_attributes_tattoo_pubic.qsrc
  23. 80 0
      locations/_attributes_tattoo_shoulder.qsrc
  24. 74 0
      locations/_attributes_tattoo_side.qsrc
  25. 101 0
      locations/_attributes_tattoo_tramp.qsrc
  26. 71 0
      locations/_attributes_tattoo_under.qsrc
  27. 158 0
      locations/_attributes_tattoo_wrist.qsrc
  28. 48 48
      locations/clothing.qsrc
  29. 2 2
      locations/gad_market.qsrc
  30. 9 1
      locations/gschool_lessonsev1.qsrc
  31. 8 0
      locations/piercing_attributes.qsrc
  32. 70 0
      locations/piercing_management.qsrc
  33. 116 1649
      locations/pirsingsalon.qsrc
  34. 44 1
      locations/shop_utils.qsrc
  35. 7 0
      locations/tattoo_attributes.qsrc
  36. 41 0
      locations/tattoo_management.qsrc
  37. 2 1
      locations/vasilyhome.qsrc

+ 32 - 0
glife.qproj

@@ -255,6 +255,38 @@
 		<Location name="$attributes_danilovich_purses"/>
 		<Location name="$attributes_moncheri_purses"/>
 	</Folder>
+	<Folder name="Piercings">
+		<Location name="$attributes_piercing_ears"/>
+		<Location name="$attributes_piercing_nose"/>
+		<Location name="$attributes_piercing_brow"/>
+		<Location name="$attributes_piercing_lip"/>
+		<Location name="$attributes_piercing_tongue"/>
+		<Location name="$attributes_piercing_navel"/>
+		<Location name="$attributes_piercing_nipples"/>
+		<Location name="$attributes_piercing_pussy"/>
+		<Location name="piercing_attributes"/>
+	</Folder>
+	<Folder name="Tattoos">
+		<Location name="$attributes_tattoo_ankle"/>
+		<Location name="$attributes_tattoo_arm"/>
+		<Location name="$attributes_tattoo_ass"/>
+		<Location name="$attributes_tattoo_back"/>
+		<Location name="$attributes_tattoo_belly"/>
+		<Location name="$attributes_tattoo_breasts"/>
+		<Location name="$attributes_tattoo_chest"/>
+		<Location name="$attributes_tattoo_face"/>
+		<Location name="$attributes_tattoo_hand"/>
+		<Location name="$attributes_tattoo_leg"/>
+		<Location name="$attributes_tattoo_lip"/>
+		<Location name="$attributes_tattoo_neck"/>
+		<Location name="$attributes_tattoo_pubic"/>
+		<Location name="$attributes_tattoo_shoulder"/>
+		<Location name="$attributes_tattoo_side"/>
+		<Location name="$attributes_tattoo_tramp"/>
+		<Location name="$attributes_tattoo_under"/>
+		<Location name="$attributes_tattoo_wrist"/>
+		<Location name="tattoo_attributes"/>
+	</Folder>
 	<Folder name="Accessories">
 		<Location name="sewing"/>
 		<Location name="camera"/>

+ 13 - 0
locations/_attributes_piercing_brow.qsrc

@@ -0,0 +1,13 @@
+# $attributes_piercing_brow
+
+if ARGS[0] = 1:
+	PirFirst = 5000
+	PirPrice = 2000
+
+elseif ARGS[0] = 2:
+	PirFirst = 5000
+	PirPrice = 2000
+
+end
+
+--- $attributes_piercing_brow ---------------------------------

+ 101 - 0
locations/_attributes_piercing_ears.qsrc

@@ -0,0 +1,101 @@
+# $attributes_piercing_ears
+
+if ARGS[0] = 1:
+	PirFirst = 3000
+	PirPrice = 1000
+
+elseif ARGS[0] = 2:
+	PirFirst = 3000
+	PirPrice = 1000
+
+elseif ARGS[0] = 3:
+	PirFirst = 3000
+	PirPrice = 1000
+
+elseif ARGS[0] = 4:
+	PirFirst = 3000
+	PirPrice = 1000
+
+elseif ARGS[0] = 5:
+	PirFirst = 3000
+	PirPrice = 1000
+
+elseif ARGS[0] = 6:
+	PirFirst = 3000
+	PirPrice = 1000
+
+elseif ARGS[0] = 7:
+	PirFirst = 3000
+	PirPrice = 1000
+
+elseif ARGS[0] = 8:
+	PirFirst = 3000
+	PirPrice = 1000
+
+elseif ARGS[0] = 9:
+	PirFirst = 3000
+	PirPrice = 1000
+
+elseif ARGS[0] = 10:
+	PirFirst = 3000
+	PirPrice = 1000
+
+elseif ARGS[0] = 11:
+	PirFirst = 3000
+	PirPrice = 1000
+
+elseif ARGS[0] = 12:
+	PirFirst = 3000
+	PirPrice = 1000
+
+elseif ARGS[0] = 13:
+	PirFirst = 3000
+	PirPrice = 1000
+
+elseif ARGS[0] = 14:
+	PirFirst = 3000
+	PirPrice = 1000
+
+elseif ARGS[0] = 15:
+	PirFirst = 3000
+	PirPrice = 1000
+
+elseif ARGS[0] = 16:
+	PirFirst = 3000
+	PirPrice = 1000
+
+elseif ARGS[0] = 17:
+	PirFirst = 3000
+	PirPrice = 1000
+
+elseif ARGS[0] = 18:
+	PirFirst = 3000
+	PirPrice = 1000
+
+elseif ARGS[0] = 19:
+	PirFirst = 3000
+	PirPrice = 1000
+
+elseif ARGS[0] = 20:
+	PirFirst = 3000
+	PirPrice = 1000
+
+elseif ARGS[0] = 21:
+	PirFirst = 3000
+	PirPrice = 1000
+
+elseif ARGS[0] = 22:
+	PirFirst = 3000
+	PirPrice = 1000
+
+elseif ARGS[0] = 23:
+	PirFirst = 3000
+	PirPrice = 1000
+
+elseif ARGS[0] = 24:
+	PirFirst = 3000
+	PirPrice = 1000
+
+end
+
+--- $attributes_piercing_ears ---------------------------------

+ 33 - 0
locations/_attributes_piercing_lip.qsrc

@@ -0,0 +1,33 @@
+# $attributes_piercing_lip
+
+if ARGS[0] = 1:
+	PirFirst = 6000
+	PirPrice = 3000
+
+elseif ARGS[0] = 2:
+	PirFirst = 6000
+	PirPrice = 3000
+
+elseif ARGS[0] = 3:
+	PirFirst = 6000
+	PirPrice = 3000
+
+elseif ARGS[0] = 4:
+	PirFirst = 6000
+	PirPrice = 3000
+
+elseif ARGS[0] = 5:
+	PirFirst = 6000
+	PirPrice = 3000
+
+elseif ARGS[0] = 6:
+	PirFirst = 6000
+	PirPrice = 3000
+
+elseif ARGS[0] = 7:
+	PirFirst = 6000
+	PirPrice = 3000
+
+end
+
+--- $attributes_piercing_lip ---------------------------------

+ 21 - 0
locations/_attributes_piercing_navel.qsrc

@@ -0,0 +1,21 @@
+# $attributes_piercing_navel
+
+if ARGS[0] = 1:
+	PirFirst = 8000
+	PirPrice = 5000
+
+elseif ARGS[0] = 2:
+	PirFirst = 8000
+	PirPrice = 5000
+
+elseif ARGS[0] = 3:
+	PirFirst = 8000
+	PirPrice = 5000
+
+elseif ARGS[0] = 4:
+	PirFirst = 8000
+	PirPrice = 5000
+
+end
+
+--- $attributes_piercing_navel ---------------------------------

+ 33 - 0
locations/_attributes_piercing_nipples.qsrc

@@ -0,0 +1,33 @@
+# $attributes_piercing_nipples
+
+if ARGS[0] = 1:
+	PirFirst = 10000
+	PirPrice = 6000
+
+elseif ARGS[0] = 2:
+	PirFirst = 10000
+	PirPrice = 6000
+
+elseif ARGS[0] = 3:
+	PirFirst = 10000
+	PirPrice = 6000
+
+elseif ARGS[0] = 4:
+	PirFirst = 10000
+	PirPrice = 6000
+
+elseif ARGS[0] = 5:
+	PirFirst = 10000
+	PirPrice = 6000
+
+elseif ARGS[0] = 6:
+	PirFirst = 10000
+	PirPrice = 6000
+
+elseif ARGS[0] = 7:
+	PirFirst = 10000
+	PirPrice = 6000
+
+end
+
+--- $attributes_piercing_nipples ---------------------------------

+ 33 - 0
locations/_attributes_piercing_nose.qsrc

@@ -0,0 +1,33 @@
+# $attributes_piercing_nose
+
+if ARGS[0] = 1:
+	PirFirst = 5000
+	PirPrice = 2000
+
+elseif ARGS[0] = 2:
+	PirFirst = 5000
+	PirPrice = 2000
+
+elseif ARGS[0] = 3:
+	PirFirst = 5000
+	PirPrice = 2000
+
+elseif ARGS[0] = 4:
+	PirFirst = 5000
+	PirPrice = 2000
+
+elseif ARGS[0] = 5:
+	PirFirst = 5000
+	PirPrice = 2000
+
+elseif ARGS[0] = 6:
+	PirFirst = 5000
+	PirPrice = 2000
+
+elseif ARGS[0] = 7:
+	PirFirst = 5000
+	PirPrice = 2000
+
+end
+
+--- $attributes_piercing_nose ---------------------------------

+ 45 - 0
locations/_attributes_piercing_pussy.qsrc

@@ -0,0 +1,45 @@
+# $attributes_piercing_pussy
+
+if ARGS[0] = 1:
+	PirFirst = 25000
+	PirPrice = 10000
+
+elseif ARGS[0] = 2:
+	PirFirst = 25000
+	PirPrice = 10000
+
+elseif ARGS[0] = 3:
+	PirFirst = 25000
+	PirPrice = 10000
+
+elseif ARGS[0] = 4:
+	PirFirst = 25000
+	PirPrice = 10000
+
+elseif ARGS[0] = 5:
+	PirFirst = 25000
+	PirPrice = 10000
+
+elseif ARGS[0] = 6:
+	PirFirst = 25000
+	PirPrice = 10000
+
+elseif ARGS[0] = 7:
+	PirFirst = 25000
+	PirPrice = 10000
+
+elseif ARGS[0] = 8:
+	PirFirst = 25000
+	PirPrice = 10000
+
+elseif ARGS[0] = 9:
+	PirFirst = 25000
+	PirPrice = 10000
+
+elseif ARGS[0] = 10:
+	PirFirst = 25000
+	PirPrice = 10000
+
+end
+
+--- $attributes_piercing_pussy ---------------------------------

+ 21 - 0
locations/_attributes_piercing_tongue.qsrc

@@ -0,0 +1,21 @@
+# $attributes_piercing_tongue
+
+if ARGS[0] = 1:
+	PirFirst = 7000
+	PirPrice = 4000
+
+elseif ARGS[0] = 2:
+	PirFirst = 7000
+	PirPrice = 4000
+
+elseif ARGS[0] = 3:
+	PirFirst = 7000
+	PirPrice = 4000
+
+elseif ARGS[0] = 4:
+	PirFirst = 7000
+	PirPrice = 4000
+
+end
+
+--- $attributes_piercing_tongue ---------------------------------

+ 80 - 0
locations/_attributes_tattoo_ankle.qsrc

@@ -0,0 +1,80 @@
+# $attributes_tattoo_ankle
+
+if ARGS[0] = 1:
+	TatPrice = 8000
+
+elseif ARGS[0] = 2:
+	TatPrice = 8000
+
+elseif ARGS[0] = 3:
+	TatPrice = 8000
+
+elseif ARGS[0] = 4:
+	TatPrice = 8000
+
+elseif ARGS[0] = 5:
+	TatPrice = 8000
+
+elseif ARGS[0] = 6:
+	TatPrice = 8000
+
+elseif ARGS[0] = 7:
+	TatPrice = 8000
+
+elseif ARGS[0] = 8:
+	TatPrice = 8000
+
+elseif ARGS[0] = 9:
+	TatPrice = 8000
+
+elseif ARGS[0] = 10:
+	TatPrice = 8000
+
+elseif ARGS[0] = 11:
+	TatPrice = 8000
+
+elseif ARGS[0] = 12:
+	TatPrice = 8000
+
+elseif ARGS[0] = 13:
+	TatPrice = 8000
+
+elseif ARGS[0] = 14:
+	TatPrice = 8000
+
+elseif ARGS[0] = 15:
+	TatPrice = 8000
+
+elseif ARGS[0] = 16:
+	TatPrice = 8000
+
+elseif ARGS[0] = 17:
+	TatPrice = 8000
+
+elseif ARGS[0] = 18:
+	TatPrice = 8000
+
+elseif ARGS[0] = 19:
+	TatPrice = 8000
+
+elseif ARGS[0] = 20:
+	TatPrice = 8000
+
+elseif ARGS[0] = 21:
+	TatPrice = 8000
+
+elseif ARGS[0] = 22:
+	TatPrice = 8000
+
+elseif ARGS[0] = 23:
+	TatPrice = 8000
+
+elseif ARGS[0] = 24:
+	TatPrice = 8000
+
+elseif ARGS[0] = 25:
+	TatPrice = 8000
+
+end
+
+--- $attributes_tattoo_ankle ---------------------------------

+ 242 - 0
locations/_attributes_tattoo_arm.qsrc

@@ -0,0 +1,242 @@
+# $attributes_tattoo_arm
+
+if ARGS[0] = 1:
+	TatPrice = 8000
+
+elseif ARGS[0] = 2:
+	TatPrice = 8000
+
+elseif ARGS[0] = 3:
+	TatPrice = 8000
+
+elseif ARGS[0] = 4:
+	TatPrice = 8000
+
+elseif ARGS[0] = 5:
+	TatPrice = 8000
+
+elseif ARGS[0] = 6:
+	TatPrice = 8000
+
+elseif ARGS[0] = 7:
+	TatPrice = 8000
+
+elseif ARGS[0] = 8:
+	TatPrice = 8000
+
+elseif ARGS[0] = 9:
+	TatPrice = 8000
+
+elseif ARGS[0] = 10:
+	TatPrice = 8000
+
+elseif ARGS[0] = 11:
+	TatPrice = 8000
+
+elseif ARGS[0] = 12:
+	TatPrice = 8000
+
+elseif ARGS[0] = 13:
+	TatPrice = 8000
+
+elseif ARGS[0] = 14:
+	TatPrice = 8000
+
+elseif ARGS[0] = 15:
+	TatPrice = 8000
+
+elseif ARGS[0] = 16:
+	TatPrice = 8000
+
+elseif ARGS[0] = 17:
+	TatPrice = 8000
+
+elseif ARGS[0] = 18:
+	TatPrice = 8000
+
+elseif ARGS[0] = 19:
+	TatPrice = 8000
+
+elseif ARGS[0] = 20:
+	TatPrice = 8000
+
+elseif ARGS[0] = 21:
+	TatPrice = 8000
+
+elseif ARGS[0] = 22:
+	TatPrice = 8000
+
+elseif ARGS[0] = 23:
+	TatPrice = 8000
+
+elseif ARGS[0] = 24:
+	TatPrice = 8000
+
+elseif ARGS[0] = 25:
+	TatPrice = 8000
+
+elseif ARGS[0] = 26:
+	TatPrice = 8000
+
+elseif ARGS[0] = 27:
+	TatPrice = 8000
+
+elseif ARGS[0] = 28:
+	TatPrice = 8000
+
+elseif ARGS[0] = 29:
+	TatPrice = 8000
+
+elseif ARGS[0] = 30:
+	TatPrice = 8000
+
+elseif ARGS[0] = 31:
+	TatPrice = 8000
+
+elseif ARGS[0] = 32:
+	TatPrice = 8000
+
+elseif ARGS[0] = 33:
+	TatPrice = 8000
+
+elseif ARGS[0] = 34:
+	TatPrice = 8000
+
+elseif ARGS[0] = 35:
+	TatPrice = 8000
+
+elseif ARGS[0] = 36:
+	TatPrice = 8000
+
+elseif ARGS[0] = 37:
+	TatPrice = 8000
+
+elseif ARGS[0] = 38:
+	TatPrice = 8000
+
+elseif ARGS[0] = 39:
+	TatPrice = 8000
+
+elseif ARGS[0] = 40:
+	TatPrice = 8000
+
+elseif ARGS[0] = 41:
+	TatPrice = 8000
+
+elseif ARGS[0] = 42:
+	TatPrice = 8000
+
+elseif ARGS[0] = 43:
+	TatPrice = 8000
+
+elseif ARGS[0] = 44:
+	TatPrice = 8000
+
+elseif ARGS[0] = 45:
+	TatPrice = 8000
+
+elseif ARGS[0] = 46:
+	TatPrice = 8000
+
+elseif ARGS[0] = 47:
+	TatPrice = 8000
+
+elseif ARGS[0] = 48:
+	TatPrice = 8000
+
+elseif ARGS[0] = 49:
+	TatPrice = 8000
+
+elseif ARGS[0] = 40:
+	TatPrice = 8000
+
+elseif ARGS[0] = 51:
+	TatPrice = 8000
+
+elseif ARGS[0] = 52:
+	TatPrice = 8000
+
+elseif ARGS[0] = 53:
+	TatPrice = 8000
+
+elseif ARGS[0] = 54:
+	TatPrice = 8000
+
+elseif ARGS[0] = 55:
+	TatPrice = 8000
+
+elseif ARGS[0] = 56:
+	TatPrice = 8000
+
+elseif ARGS[0] = 57:
+	TatPrice = 8000
+
+elseif ARGS[0] = 58:
+	TatPrice = 8000
+
+elseif ARGS[0] = 59:
+	TatPrice = 8000
+
+elseif ARGS[0] = 60:
+	TatPrice = 8000
+
+elseif ARGS[0] = 61:
+	TatPrice = 8000
+
+elseif ARGS[0] = 62:
+	TatPrice = 8000
+
+elseif ARGS[0] = 63:
+	TatPrice = 8000
+
+elseif ARGS[0] = 64:
+	TatPrice = 8000
+
+elseif ARGS[0] = 65:
+	TatPrice = 8000
+
+elseif ARGS[0] = 66:
+	TatPrice = 8000
+
+elseif ARGS[0] = 67:
+	TatPrice = 8000
+
+elseif ARGS[0] = 68:
+	TatPrice = 8000
+
+elseif ARGS[0] = 69:
+	TatPrice = 8000
+
+elseif ARGS[0] = 70:
+	TatPrice = 8000
+
+elseif ARGS[0] = 71:
+	TatPrice = 8000
+
+elseif ARGS[0] = 72:
+	TatPrice = 8000
+
+elseif ARGS[0] = 73:
+	TatPrice = 8000
+
+elseif ARGS[0] = 74:
+	TatPrice = 8000
+
+elseif ARGS[0] = 75:
+	TatPrice = 8000
+
+elseif ARGS[0] = 76:
+	TatPrice = 8000
+
+elseif ARGS[0] = 77:
+	TatPrice = 8000
+
+elseif ARGS[0] = 78:
+	TatPrice = 8000
+
+elseif ARGS[0] = 79:
+	TatPrice = 8000
+
+end
+
+--- $attributes_tattoo_arm ---------------------------------

+ 80 - 0
locations/_attributes_tattoo_ass.qsrc

@@ -0,0 +1,80 @@
+# $attributes_tattoo_ass
+
+if ARGS[0] = 1:
+	TatPrice = 10000
+
+elseif ARGS[0] = 2:
+	TatPrice = 10000
+
+elseif ARGS[0] = 3:
+	TatPrice = 10000
+
+elseif ARGS[0] = 4:
+	TatPrice = 10000
+
+elseif ARGS[0] = 5:
+	TatPrice = 10000
+
+elseif ARGS[0] = 6:
+	TatPrice = 10000
+
+elseif ARGS[0] = 7:
+	TatPrice = 10000
+
+elseif ARGS[0] = 8:
+	TatPrice = 10000
+
+elseif ARGS[0] = 9:
+	TatPrice = 10000
+
+elseif ARGS[0] = 10:
+	TatPrice = 10000
+
+elseif ARGS[0] = 11:
+	TatPrice = 10000
+
+elseif ARGS[0] = 12:
+	TatPrice = 10000
+
+elseif ARGS[0] = 13:
+	TatPrice = 10000
+
+elseif ARGS[0] = 14:
+	TatPrice = 10000
+
+elseif ARGS[0] = 15:
+	TatPrice = 10000
+
+elseif ARGS[0] = 16:
+	TatPrice = 10000
+
+elseif ARGS[0] = 17:
+	TatPrice = 10000
+
+elseif ARGS[0] = 18:
+	TatPrice = 10000
+
+elseif ARGS[0] = 19:
+	TatPrice = 10000
+
+elseif ARGS[0] = 20:
+	TatPrice = 10000
+
+elseif ARGS[0] = 21:
+	TatPrice = 10000
+
+elseif ARGS[0] = 22:
+	TatPrice = 10000
+
+elseif ARGS[0] = 23:
+	TatPrice = 10000
+
+elseif ARGS[0] = 24:
+	TatPrice = 10000
+
+elseif ARGS[0] = 25:
+	TatPrice = 10000
+
+end
+
+--- $attributes_tattoo_ass ---------------------------------

+ 188 - 0
locations/_attributes_tattoo_back.qsrc

@@ -0,0 +1,188 @@
+# $attributes_tattoo_back
+
+if ARGS[0] = 1:
+	TatPrice = 10000
+
+elseif ARGS[0] = 2:
+	TatPrice = 10000
+
+elseif ARGS[0] = 3:
+	TatPrice = 10000
+
+elseif ARGS[0] = 4:
+	TatPrice = 10000
+
+elseif ARGS[0] = 5:
+	TatPrice = 10000
+
+elseif ARGS[0] = 6:
+	TatPrice = 10000
+
+elseif ARGS[0] = 7:
+	TatPrice = 10000
+
+elseif ARGS[0] = 8:
+	TatPrice = 10000
+
+elseif ARGS[0] = 9:
+	TatPrice = 10000
+
+elseif ARGS[0] = 10:
+	TatPrice = 10000
+
+elseif ARGS[0] = 11:
+	TatPrice = 10000
+
+elseif ARGS[0] = 12:
+	TatPrice = 10000
+
+elseif ARGS[0] = 13:
+	TatPrice = 10000
+
+elseif ARGS[0] = 14:
+	TatPrice = 10000
+
+elseif ARGS[0] = 15:
+	TatPrice = 10000
+
+elseif ARGS[0] = 16:
+	TatPrice = 10000
+
+elseif ARGS[0] = 17:
+	TatPrice = 10000
+
+elseif ARGS[0] = 18:
+	TatPrice = 10000
+
+elseif ARGS[0] = 19:
+	TatPrice = 10000
+
+elseif ARGS[0] = 20:
+	TatPrice = 10000
+
+elseif ARGS[0] = 21:
+	TatPrice = 10000
+
+elseif ARGS[0] = 22:
+	TatPrice = 10000
+
+elseif ARGS[0] = 23:
+	TatPrice = 10000
+
+elseif ARGS[0] = 24:
+	TatPrice = 10000
+
+elseif ARGS[0] = 25:
+	TatPrice = 10000
+
+elseif ARGS[0] = 26:
+	TatPrice = 10000
+
+elseif ARGS[0] = 27:
+	TatPrice = 10000
+
+elseif ARGS[0] = 28:
+	TatPrice = 10000
+
+elseif ARGS[0] = 29:
+	TatPrice = 10000
+
+elseif ARGS[0] = 30:
+	TatPrice = 10000
+
+elseif ARGS[0] = 31:
+	TatPrice = 10000
+
+elseif ARGS[0] = 32:
+	TatPrice = 10000
+
+elseif ARGS[0] = 33:
+	TatPrice = 10000
+
+elseif ARGS[0] = 34:
+	TatPrice = 10000
+
+elseif ARGS[0] = 35:
+	TatPrice = 10000
+
+elseif ARGS[0] = 36:
+	TatPrice = 10000
+
+elseif ARGS[0] = 37:
+	TatPrice = 10000
+
+elseif ARGS[0] = 38:
+	TatPrice = 10000
+
+elseif ARGS[0] = 39:
+	TatPrice = 10000
+
+elseif ARGS[0] = 40:
+	TatPrice = 10000
+
+elseif ARGS[0] = 41:
+	TatPrice = 10000
+
+elseif ARGS[0] = 42:
+	TatPrice = 10000
+
+elseif ARGS[0] = 43:
+	TatPrice = 10000
+
+elseif ARGS[0] = 44:
+	TatPrice = 10000
+
+elseif ARGS[0] = 45:
+	TatPrice = 10000
+
+elseif ARGS[0] = 46:
+	TatPrice = 10000
+
+elseif ARGS[0] = 47:
+	TatPrice = 10000
+
+elseif ARGS[0] = 48:
+	TatPrice = 10000
+
+elseif ARGS[0] = 49:
+	TatPrice = 10000
+
+elseif ARGS[0] = 40:
+	TatPrice = 10000
+
+elseif ARGS[0] = 51:
+	TatPrice = 10000
+
+elseif ARGS[0] = 52:
+	TatPrice = 10000
+
+elseif ARGS[0] = 53:
+	TatPrice = 10000
+
+elseif ARGS[0] = 54:
+	TatPrice = 10000
+
+elseif ARGS[0] = 55:
+	TatPrice = 10000
+
+elseif ARGS[0] = 56:
+	TatPrice = 10000
+
+elseif ARGS[0] = 57:
+	TatPrice = 10000
+
+elseif ARGS[0] = 58:
+	TatPrice = 10000
+
+elseif ARGS[0] = 59:
+	TatPrice = 10000
+
+elseif ARGS[0] = 60:
+	TatPrice = 10000
+
+elseif ARGS[0] = 61:
+	TatPrice = 10000
+
+end
+
+--- $attributes_tattoo_back ---------------------------------

+ 68 - 0
locations/_attributes_tattoo_belly.qsrc

@@ -0,0 +1,68 @@
+# $attributes_tattoo_belly
+
+if ARGS[0] = 1:
+	TatPrice = 10000
+
+elseif ARGS[0] = 2:
+	TatPrice = 10000
+
+elseif ARGS[0] = 3:
+	TatPrice = 10000
+
+elseif ARGS[0] = 4:
+	TatPrice = 10000
+
+elseif ARGS[0] = 5:
+	TatPrice = 10000
+
+elseif ARGS[0] = 6:
+	TatPrice = 10000
+
+elseif ARGS[0] = 7:
+	TatPrice = 10000
+
+elseif ARGS[0] = 8:
+	TatPrice = 10000
+
+elseif ARGS[0] = 9:
+	TatPrice = 10000
+
+elseif ARGS[0] = 10:
+	TatPrice = 10000
+
+elseif ARGS[0] = 11:
+	TatPrice = 10000
+
+elseif ARGS[0] = 12:
+	TatPrice = 10000
+
+elseif ARGS[0] = 13:
+	TatPrice = 10000
+
+elseif ARGS[0] = 14:
+	TatPrice = 10000
+
+elseif ARGS[0] = 15:
+	TatPrice = 10000
+
+elseif ARGS[0] = 16:
+	TatPrice = 10000
+
+elseif ARGS[0] = 17:
+	TatPrice = 10000
+
+elseif ARGS[0] = 18:
+	TatPrice = 10000
+
+elseif ARGS[0] = 19:
+	TatPrice = 10000
+
+elseif ARGS[0] = 20:
+	TatPrice = 10000
+
+elseif ARGS[0] = 21:
+	TatPrice = 10000
+
+end
+
+--- $attributes_tattoo_belly ---------------------------------

+ 38 - 0
locations/_attributes_tattoo_breasts.qsrc

@@ -0,0 +1,38 @@
+# $attributes_tattoo_breasts
+
+if ARGS[0] = 1:
+	TatPrice = 15000
+
+elseif ARGS[0] = 2:
+	TatPrice = 15000
+
+elseif ARGS[0] = 3:
+	TatPrice = 15000
+
+elseif ARGS[0] = 4:
+	TatPrice = 15000
+
+elseif ARGS[0] = 5:
+	TatPrice = 15000
+
+elseif ARGS[0] = 6:
+	TatPrice = 15000
+
+elseif ARGS[0] = 7:
+	TatPrice = 15000
+
+elseif ARGS[0] = 8:
+	TatPrice = 15000
+
+elseif ARGS[0] = 9:
+	TatPrice = 15000
+
+elseif ARGS[0] = 10:
+	TatPrice = 15000
+
+elseif ARGS[0] = 11:
+	TatPrice = 15000
+
+end
+
+--- $attributes_tattoo_breasts ---------------------------------

+ 50 - 0
locations/_attributes_tattoo_chest.qsrc

@@ -0,0 +1,50 @@
+# $attributes_tattoo_chest
+
+if ARGS[0] = 1:
+	TatPrice = 12000
+
+elseif ARGS[0] = 2:
+	TatPrice = 12000
+
+elseif ARGS[0] = 3:
+	TatPrice = 12000
+
+elseif ARGS[0] = 4:
+	TatPrice = 12000
+
+elseif ARGS[0] = 5:
+	TatPrice = 12000
+
+elseif ARGS[0] = 6:
+	TatPrice = 12000
+
+elseif ARGS[0] = 7:
+	TatPrice = 12000
+
+elseif ARGS[0] = 8:
+	TatPrice = 12000
+
+elseif ARGS[0] = 9:
+	TatPrice = 12000
+
+elseif ARGS[0] = 10:
+	TatPrice = 12000
+
+elseif ARGS[0] = 11:
+	TatPrice = 12000
+
+elseif ARGS[0] = 12:
+	TatPrice = 12000
+
+elseif ARGS[0] = 13:
+	TatPrice = 12000
+
+elseif ARGS[0] = 14:
+	TatPrice = 12000
+
+elseif ARGS[0] = 15:
+	TatPrice = 12000
+
+end
+
+--- $attributes_tattoo_chest ---------------------------------

+ 29 - 0
locations/_attributes_tattoo_face.qsrc

@@ -0,0 +1,29 @@
+# $attributes_tattoo_face
+
+if ARGS[0] = 1:
+	TatPrice = 10000
+
+elseif ARGS[0] = 2:
+	TatPrice = 10000
+
+elseif ARGS[0] = 3:
+	TatPrice = 10000
+
+elseif ARGS[0] = 4:
+	TatPrice = 10000
+
+elseif ARGS[0] = 5:
+	TatPrice = 10000
+
+elseif ARGS[0] = 6:
+	TatPrice = 10000
+
+elseif ARGS[0] = 7:
+	TatPrice = 10000
+
+elseif ARGS[0] = 8:
+	TatPrice = 10000
+
+end
+
+--- $attributes_tattoo_face ---------------------------------

+ 32 - 0
locations/_attributes_tattoo_hand.qsrc

@@ -0,0 +1,32 @@
+# $attributes_tattoo_hand
+
+if ARGS[0] = 1:
+	TatPrice = 7000
+
+elseif ARGS[0] = 2:
+	TatPrice = 7000
+
+elseif ARGS[0] = 3:
+	TatPrice = 7000
+
+elseif ARGS[0] = 4:
+	TatPrice = 7000
+
+elseif ARGS[0] = 5:
+	TatPrice = 7000
+
+elseif ARGS[0] = 6:
+	TatPrice = 7000
+
+elseif ARGS[0] = 7:
+	TatPrice = 7000
+
+elseif ARGS[0] = 8:
+	TatPrice = 7000
+
+elseif ARGS[0] = 9:
+	TatPrice = 7000
+
+end
+
+--- $attributes_tattoo_hand ---------------------------------

+ 146 - 0
locations/_attributes_tattoo_leg.qsrc

@@ -0,0 +1,146 @@
+# $attributes_tattoo_leg
+
+if ARGS[0] = 1:
+	TatPrice = 10000
+
+elseif ARGS[0] = 2:
+	TatPrice = 10000
+
+elseif ARGS[0] = 3:
+	TatPrice = 10000
+
+elseif ARGS[0] = 4:
+	TatPrice = 10000
+
+elseif ARGS[0] = 5:
+	TatPrice = 10000
+
+elseif ARGS[0] = 6:
+	TatPrice = 10000
+
+elseif ARGS[0] = 7:
+	TatPrice = 10000
+
+elseif ARGS[0] = 8:
+	TatPrice = 10000
+
+elseif ARGS[0] = 9:
+	TatPrice = 10000
+
+elseif ARGS[0] = 10:
+	TatPrice = 10000
+
+elseif ARGS[0] = 11:
+	TatPrice = 10000
+
+elseif ARGS[0] = 12:
+	TatPrice = 10000
+
+elseif ARGS[0] = 13:
+	TatPrice = 10000
+
+elseif ARGS[0] = 14:
+	TatPrice = 10000
+
+elseif ARGS[0] = 15:
+	TatPrice = 10000
+
+elseif ARGS[0] = 16:
+	TatPrice = 10000
+
+elseif ARGS[0] = 17:
+	TatPrice = 10000
+
+elseif ARGS[0] = 18:
+	TatPrice = 10000
+
+elseif ARGS[0] = 19:
+	TatPrice = 10000
+
+elseif ARGS[0] = 20:
+	TatPrice = 10000
+
+elseif ARGS[0] = 21:
+	TatPrice = 10000
+
+elseif ARGS[0] = 22:
+	TatPrice = 10000
+
+elseif ARGS[0] = 23:
+	TatPrice = 10000
+
+elseif ARGS[0] = 24:
+	TatPrice = 10000
+
+elseif ARGS[0] = 25:
+	TatPrice = 10000
+
+elseif ARGS[0] = 26:
+	TatPrice = 10000
+
+elseif ARGS[0] = 27:
+	TatPrice = 10000
+
+elseif ARGS[0] = 28:
+	TatPrice = 10000
+
+elseif ARGS[0] = 29:
+	TatPrice = 10000
+
+elseif ARGS[0] = 30:
+	TatPrice = 10000
+
+elseif ARGS[0] = 31:
+	TatPrice = 10000
+
+elseif ARGS[0] = 32:
+	TatPrice = 10000
+
+elseif ARGS[0] = 33:
+	TatPrice = 10000
+
+elseif ARGS[0] = 34:
+	TatPrice = 10000
+
+elseif ARGS[0] = 35:
+	TatPrice = 10000
+
+elseif ARGS[0] = 36:
+	TatPrice = 10000
+
+elseif ARGS[0] = 37:
+	TatPrice = 10000
+
+elseif ARGS[0] = 38:
+	TatPrice = 10000
+
+elseif ARGS[0] = 39:
+	TatPrice = 10000
+
+elseif ARGS[0] = 40:
+	TatPrice = 10000
+
+elseif ARGS[0] = 41:
+	TatPrice = 10000
+
+elseif ARGS[0] = 42:
+	TatPrice = 10000
+
+elseif ARGS[0] = 43:
+	TatPrice = 10000
+
+elseif ARGS[0] = 44:
+	TatPrice = 10000
+
+elseif ARGS[0] = 45:
+	TatPrice = 10000
+
+elseif ARGS[0] = 46:
+	TatPrice = 10000
+
+elseif ARGS[0] = 47:
+	TatPrice = 10000
+
+end
+
+--- $attributes_tattoo_leg ---------------------------------

+ 32 - 0
locations/_attributes_tattoo_lip.qsrc

@@ -0,0 +1,32 @@
+# $attributes_tattoo_lip
+
+if ARGS[0] = 1:
+	TatPrice = 5000
+
+elseif ARGS[0] = 2:
+	TatPrice = 5000
+
+elseif ARGS[0] = 3:
+	TatPrice = 5000
+
+elseif ARGS[0] = 4:
+	TatPrice = 5000
+
+elseif ARGS[0] = 5:
+	TatPrice = 5000
+
+elseif ARGS[0] = 6:
+	TatPrice = 5000
+
+elseif ARGS[0] = 7:
+	TatPrice = 5000
+
+elseif ARGS[0] = 8:
+	TatPrice = 5000
+
+elseif ARGS[0] = 9:
+	TatPrice = 5000
+
+end
+
+--- $attributes_tattoo_lip ---------------------------------

+ 95 - 0
locations/_attributes_tattoo_neck.qsrc

@@ -0,0 +1,95 @@
+# $attributes_tattoo_neck
+
+if ARGS[0] = 1:
+	TatPrice = 8000
+
+elseif ARGS[0] = 2:
+	TatPrice = 8000
+
+elseif ARGS[0] = 3:
+	TatPrice = 8000
+
+elseif ARGS[0] = 4:
+	TatPrice = 8000
+
+elseif ARGS[0] = 5:
+	TatPrice = 8000
+
+elseif ARGS[0] = 6:
+	TatPrice = 8000
+
+elseif ARGS[0] = 7:
+	TatPrice = 8000
+
+elseif ARGS[0] = 8:
+	TatPrice = 8000
+
+elseif ARGS[0] = 9:
+	TatPrice = 8000
+
+elseif ARGS[0] = 10:
+	TatPrice = 8000
+
+elseif ARGS[0] = 11:
+	TatPrice = 8000
+
+elseif ARGS[0] = 12:
+	TatPrice = 8000
+
+elseif ARGS[0] = 13:
+	TatPrice = 8000
+
+elseif ARGS[0] = 14:
+	TatPrice = 8000
+
+elseif ARGS[0] = 15:
+	TatPrice = 8000
+
+elseif ARGS[0] = 16:
+	TatPrice = 8000
+
+elseif ARGS[0] = 17:
+	TatPrice = 8000
+
+elseif ARGS[0] = 18:
+	TatPrice = 8000
+
+elseif ARGS[0] = 19:
+	TatPrice = 8000
+
+elseif ARGS[0] = 20:
+	TatPrice = 8000
+
+elseif ARGS[0] = 21:
+	TatPrice = 8000
+
+elseif ARGS[0] = 22:
+	TatPrice = 8000
+
+elseif ARGS[0] = 23:
+	TatPrice = 8000
+
+elseif ARGS[0] = 24:
+	TatPrice = 8000
+
+elseif ARGS[0] = 25:
+	TatPrice = 8000
+
+elseif ARGS[0] = 26:
+	TatPrice = 8000
+
+elseif ARGS[0] = 27:
+	TatPrice = 8000
+
+elseif ARGS[0] = 28:
+	TatPrice = 8000
+
+elseif ARGS[0] = 29:
+	TatPrice = 8000
+
+elseif ARGS[0] = 30:
+	TatPrice = 8000
+
+end
+
+--- $attributes_tattoo_neck ---------------------------------

+ 164 - 0
locations/_attributes_tattoo_pubic.qsrc

@@ -0,0 +1,164 @@
+# $attributes_tattoo_pubic
+
+if ARGS[0] = 1:
+	TatPrice = 20000
+
+elseif ARGS[0] = 2:
+	TatPrice = 20000
+
+elseif ARGS[0] = 3:
+	TatPrice = 20000
+
+elseif ARGS[0] = 4:
+	TatPrice = 20000
+
+elseif ARGS[0] = 5:
+	TatPrice = 20000
+
+elseif ARGS[0] = 6:
+	TatPrice = 20000
+
+elseif ARGS[0] = 7:
+	TatPrice = 20000
+
+elseif ARGS[0] = 8:
+	TatPrice = 20000
+
+elseif ARGS[0] = 9:
+	TatPrice = 20000
+
+elseif ARGS[0] = 10:
+	TatPrice = 20000
+
+elseif ARGS[0] = 11:
+	TatPrice = 20000
+
+elseif ARGS[0] = 12:
+	TatPrice = 20000
+
+elseif ARGS[0] = 13:
+	TatPrice = 20000
+
+elseif ARGS[0] = 14:
+	TatPrice = 20000
+
+elseif ARGS[0] = 15:
+	TatPrice = 20000
+
+elseif ARGS[0] = 16:
+	TatPrice = 20000
+
+elseif ARGS[0] = 17:
+	TatPrice = 20000
+
+elseif ARGS[0] = 18:
+	TatPrice = 20000
+
+elseif ARGS[0] = 19:
+	TatPrice = 20000
+
+elseif ARGS[0] = 20:
+	TatPrice = 20000
+
+elseif ARGS[0] = 21:
+	TatPrice = 20000
+
+elseif ARGS[0] = 22:
+	TatPrice = 20000
+
+elseif ARGS[0] = 23:
+	TatPrice = 20000
+
+elseif ARGS[0] = 24:
+	TatPrice = 20000
+
+elseif ARGS[0] = 25:
+	TatPrice = 20000
+
+elseif ARGS[0] = 26:
+	TatPrice = 20000
+
+elseif ARGS[0] = 27:
+	TatPrice = 20000
+
+elseif ARGS[0] = 28:
+	TatPrice = 20000
+
+elseif ARGS[0] = 29:
+	TatPrice = 20000
+
+elseif ARGS[0] = 30:
+	TatPrice = 20000
+
+elseif ARGS[0] = 31:
+	TatPrice = 20000
+
+elseif ARGS[0] = 32:
+	TatPrice = 20000
+
+elseif ARGS[0] = 33:
+	TatPrice = 20000
+
+elseif ARGS[0] = 34:
+	TatPrice = 20000
+
+elseif ARGS[0] = 35:
+	TatPrice = 20000
+
+elseif ARGS[0] = 36:
+	TatPrice = 20000
+
+elseif ARGS[0] = 37:
+	TatPrice = 20000
+
+elseif ARGS[0] = 38:
+	TatPrice = 20000
+
+elseif ARGS[0] = 39:
+	TatPrice = 20000
+
+elseif ARGS[0] = 40:
+	TatPrice = 20000
+
+elseif ARGS[0] = 41:
+	TatPrice = 20000
+
+elseif ARGS[0] = 42:
+	TatPrice = 20000
+
+elseif ARGS[0] = 43:
+	TatPrice = 20000
+
+elseif ARGS[0] = 44:
+	TatPrice = 20000
+
+elseif ARGS[0] = 45:
+	TatPrice = 20000
+
+elseif ARGS[0] = 46:
+	TatPrice = 20000
+
+elseif ARGS[0] = 47:
+	TatPrice = 20000
+
+elseif ARGS[0] = 48:
+	TatPrice = 20000
+
+elseif ARGS[0] = 49:
+	TatPrice = 20000
+
+elseif ARGS[0] = 40:
+	TatPrice = 20000
+
+elseif ARGS[0] = 51:
+	TatPrice = 20000
+
+elseif ARGS[0] = 52:
+	TatPrice = 20000
+
+elseif ARGS[0] = 53:
+	TatPrice = 20000
+
+end
+
+--- $attributes_tattoo_pubic ---------------------------------

+ 80 - 0
locations/_attributes_tattoo_shoulder.qsrc

@@ -0,0 +1,80 @@
+# $attributes_tattoo_shoulder
+
+if ARGS[0] = 1:
+	TatPrice = 8000
+
+elseif ARGS[0] = 2:
+	TatPrice = 8000
+
+elseif ARGS[0] = 3:
+	TatPrice = 8000
+
+elseif ARGS[0] = 4:
+	TatPrice = 8000
+
+elseif ARGS[0] = 5:
+	TatPrice = 8000
+
+elseif ARGS[0] = 6:
+	TatPrice = 8000
+
+elseif ARGS[0] = 7:
+	TatPrice = 8000
+
+elseif ARGS[0] = 8:
+	TatPrice = 8000
+
+elseif ARGS[0] = 9:
+	TatPrice = 8000
+
+elseif ARGS[0] = 10:
+	TatPrice = 8000
+
+elseif ARGS[0] = 11:
+	TatPrice = 8000
+
+elseif ARGS[0] = 12:
+	TatPrice = 8000
+
+elseif ARGS[0] = 13:
+	TatPrice = 8000
+
+elseif ARGS[0] = 14:
+	TatPrice = 8000
+
+elseif ARGS[0] = 15:
+	TatPrice = 8000
+
+elseif ARGS[0] = 16:
+	TatPrice = 8000
+
+elseif ARGS[0] = 17:
+	TatPrice = 8000
+
+elseif ARGS[0] = 18:
+	TatPrice = 8000
+
+elseif ARGS[0] = 19:
+	TatPrice = 8000
+
+elseif ARGS[0] = 20:
+	TatPrice = 8000
+
+elseif ARGS[0] = 21:
+	TatPrice = 8000
+
+elseif ARGS[0] = 22:
+	TatPrice = 8000
+
+elseif ARGS[0] = 23:
+	TatPrice = 8000
+
+elseif ARGS[0] = 24:
+	TatPrice = 8000
+
+elseif ARGS[0] = 25:
+	TatPrice = 8000
+
+end
+
+--- $attributes_tattoo_shoulder ---------------------------------

+ 74 - 0
locations/_attributes_tattoo_side.qsrc

@@ -0,0 +1,74 @@
+# $attributes_tattoo_side
+
+if ARGS[0] = 1:
+	TatPrice = 12000
+
+elseif ARGS[0] = 2:
+	TatPrice = 12000
+
+elseif ARGS[0] = 3:
+	TatPrice = 12000
+
+elseif ARGS[0] = 4:
+	TatPrice = 12000
+
+elseif ARGS[0] = 5:
+	TatPrice = 12000
+
+elseif ARGS[0] = 6:
+	TatPrice = 12000
+
+elseif ARGS[0] = 7:
+	TatPrice = 12000
+
+elseif ARGS[0] = 8:
+	TatPrice = 12000
+
+elseif ARGS[0] = 9:
+	TatPrice = 12000
+
+elseif ARGS[0] = 10:
+	TatPrice = 12000
+
+elseif ARGS[0] = 11:
+	TatPrice = 12000
+
+elseif ARGS[0] = 12:
+	TatPrice = 12000
+
+elseif ARGS[0] = 13:
+	TatPrice = 12000
+
+elseif ARGS[0] = 14:
+	TatPrice = 12000
+
+elseif ARGS[0] = 15:
+	TatPrice = 12000
+
+elseif ARGS[0] = 16:
+	TatPrice = 12000
+
+elseif ARGS[0] = 17:
+	TatPrice = 12000
+
+elseif ARGS[0] = 18:
+	TatPrice = 12000
+
+elseif ARGS[0] = 19:
+	TatPrice = 12000
+
+elseif ARGS[0] = 20:
+	TatPrice = 12000
+
+elseif ARGS[0] = 21:
+	TatPrice = 12000
+
+elseif ARGS[0] = 22:
+	TatPrice = 12000
+
+elseif ARGS[0] = 23:
+	TatPrice = 12000
+
+end
+
+--- $attributes_tattoo_side ---------------------------------

+ 101 - 0
locations/_attributes_tattoo_tramp.qsrc

@@ -0,0 +1,101 @@
+# $attributes_tattoo_tramp
+
+if ARGS[0] = 1:
+	TatPrice = 12000
+
+elseif ARGS[0] = 2:
+	TatPrice = 12000
+
+elseif ARGS[0] = 3:
+	TatPrice = 12000
+
+elseif ARGS[0] = 4:
+	TatPrice = 12000
+
+elseif ARGS[0] = 5:
+	TatPrice = 12000
+
+elseif ARGS[0] = 6:
+	TatPrice = 12000
+
+elseif ARGS[0] = 7:
+	TatPrice = 12000
+
+elseif ARGS[0] = 8:
+	TatPrice = 12000
+
+elseif ARGS[0] = 9:
+	TatPrice = 12000
+
+elseif ARGS[0] = 10:
+	TatPrice = 12000
+
+elseif ARGS[0] = 11:
+	TatPrice = 12000
+
+elseif ARGS[0] = 12:
+	TatPrice = 12000
+
+elseif ARGS[0] = 13:
+	TatPrice = 12000
+
+elseif ARGS[0] = 14:
+	TatPrice = 12000
+
+elseif ARGS[0] = 15:
+	TatPrice = 12000
+
+elseif ARGS[0] = 16:
+	TatPrice = 12000
+
+elseif ARGS[0] = 17:
+	TatPrice = 12000
+
+elseif ARGS[0] = 18:
+	TatPrice = 12000
+
+elseif ARGS[0] = 19:
+	TatPrice = 12000
+
+elseif ARGS[0] = 20:
+	TatPrice = 12000
+
+elseif ARGS[0] = 21:
+	TatPrice = 12000
+
+elseif ARGS[0] = 22:
+	TatPrice = 12000
+
+elseif ARGS[0] = 23:
+	TatPrice = 12000
+
+elseif ARGS[0] = 24:
+	TatPrice = 12000
+
+elseif ARGS[0] = 25:
+	TatPrice = 12000
+
+elseif ARGS[0] = 26:
+	TatPrice = 12000
+
+elseif ARGS[0] = 27:
+	TatPrice = 12000
+
+elseif ARGS[0] = 28:
+	TatPrice = 12000
+
+elseif ARGS[0] = 29:
+	TatPrice = 12000
+
+elseif ARGS[0] = 30:
+	TatPrice = 12000
+
+elseif ARGS[0] = 31:
+	TatPrice = 12000
+
+elseif ARGS[0] = 32:
+	TatPrice = 12000
+
+end
+
+--- $attributes_tattoo_tramp ---------------------------------

+ 71 - 0
locations/_attributes_tattoo_under.qsrc

@@ -0,0 +1,71 @@
+# $attributes_tattoo_under
+
+if ARGS[0] = 1:
+	TatPrice = 12000
+
+elseif ARGS[0] = 2:
+	TatPrice = 12000
+
+elseif ARGS[0] = 3:
+	TatPrice = 12000
+
+elseif ARGS[0] = 4:
+	TatPrice = 12000
+
+elseif ARGS[0] = 5:
+	TatPrice = 12000
+
+elseif ARGS[0] = 6:
+	TatPrice = 12000
+
+elseif ARGS[0] = 7:
+	TatPrice = 12000
+
+elseif ARGS[0] = 8:
+	TatPrice = 12000
+
+elseif ARGS[0] = 9:
+	TatPrice = 12000
+
+elseif ARGS[0] = 10:
+	TatPrice = 12000
+
+elseif ARGS[0] = 11:
+	TatPrice = 12000
+
+elseif ARGS[0] = 12:
+	TatPrice = 12000
+
+elseif ARGS[0] = 13:
+	TatPrice = 12000
+
+elseif ARGS[0] = 14:
+	TatPrice = 12000
+
+elseif ARGS[0] = 15:
+	TatPrice = 12000
+
+elseif ARGS[0] = 16:
+	TatPrice = 12000
+
+elseif ARGS[0] = 17:
+	TatPrice = 12000
+
+elseif ARGS[0] = 18:
+	TatPrice = 12000
+
+elseif ARGS[0] = 19:
+	TatPrice = 12000
+
+elseif ARGS[0] = 20:
+	TatPrice = 12000
+
+elseif ARGS[0] = 21:
+	TatPrice = 12000
+
+elseif ARGS[0] = 22:
+	TatPrice = 12000
+
+end
+
+--- $attributes_tattoo_under ---------------------------------

+ 158 - 0
locations/_attributes_tattoo_wrist.qsrc

@@ -0,0 +1,158 @@
+# $attributes_tattoo_wrist
+
+if ARGS[0] = 1:
+	TatPrice = 7000
+
+elseif ARGS[0] = 2:
+	TatPrice = 7000
+
+elseif ARGS[0] = 3:
+	TatPrice = 7000
+
+elseif ARGS[0] = 4:
+	TatPrice = 7000
+
+elseif ARGS[0] = 5:
+	TatPrice = 7000
+
+elseif ARGS[0] = 6:
+	TatPrice = 7000
+
+elseif ARGS[0] = 7:
+	TatPrice = 7000
+
+elseif ARGS[0] = 8:
+	TatPrice = 7000
+
+elseif ARGS[0] = 9:
+	TatPrice = 7000
+
+elseif ARGS[0] = 10:
+	TatPrice = 7000
+
+elseif ARGS[0] = 11:
+	TatPrice = 7000
+
+elseif ARGS[0] = 12:
+	TatPrice = 7000
+
+elseif ARGS[0] = 13:
+	TatPrice = 7000
+
+elseif ARGS[0] = 14:
+	TatPrice = 7000
+
+elseif ARGS[0] = 15:
+	TatPrice = 7000
+
+elseif ARGS[0] = 16:
+	TatPrice = 7000
+
+elseif ARGS[0] = 17:
+	TatPrice = 7000
+
+elseif ARGS[0] = 18:
+	TatPrice = 7000
+
+elseif ARGS[0] = 19:
+	TatPrice = 7000
+
+elseif ARGS[0] = 20:
+	TatPrice = 7000
+
+elseif ARGS[0] = 21:
+	TatPrice = 7000
+
+elseif ARGS[0] = 22:
+	TatPrice = 7000
+
+elseif ARGS[0] = 23:
+	TatPrice = 7000
+
+elseif ARGS[0] = 24:
+	TatPrice = 7000
+
+elseif ARGS[0] = 25:
+	TatPrice = 7000
+
+elseif ARGS[0] = 26:
+	TatPrice = 7000
+
+elseif ARGS[0] = 27:
+	TatPrice = 7000
+
+elseif ARGS[0] = 28:
+	TatPrice = 7000
+
+elseif ARGS[0] = 29:
+	TatPrice = 7000
+
+elseif ARGS[0] = 30:
+	TatPrice = 7000
+
+elseif ARGS[0] = 31:
+	TatPrice = 7000
+
+elseif ARGS[0] = 32:
+	TatPrice = 7000
+
+elseif ARGS[0] = 33:
+	TatPrice = 7000
+
+elseif ARGS[0] = 34:
+	TatPrice = 7000
+
+elseif ARGS[0] = 35:
+	TatPrice = 7000
+
+elseif ARGS[0] = 36:
+	TatPrice = 7000
+
+elseif ARGS[0] = 37:
+	TatPrice = 7000
+
+elseif ARGS[0] = 38:
+	TatPrice = 7000
+
+elseif ARGS[0] = 39:
+	TatPrice = 7000
+
+elseif ARGS[0] = 40:
+	TatPrice = 7000
+
+elseif ARGS[0] = 41:
+	TatPrice = 7000
+
+elseif ARGS[0] = 42:
+	TatPrice = 7000
+
+elseif ARGS[0] = 43:
+	TatPrice = 7000
+
+elseif ARGS[0] = 44:
+	TatPrice = 7000
+
+elseif ARGS[0] = 45:
+	TatPrice = 7000
+
+elseif ARGS[0] = 46:
+	TatPrice = 7000
+
+elseif ARGS[0] = 47:
+	TatPrice = 7000
+
+elseif ARGS[0] = 48:
+	TatPrice = 7000
+
+elseif ARGS[0] = 49:
+	TatPrice = 7000
+
+elseif ARGS[0] = 40:
+	TatPrice = 7000
+
+elseif ARGS[0] = 51:
+	TatPrice = 7000
+
+end
+
+--- $attributes_tattoo_wrist ---------------------------------

+ 48 - 48
locations/clothing.qsrc

@@ -102,7 +102,7 @@ $clothing_list_line = {
 	else
 		clothing_temp = 100 & !clothing widdefault to 100
 	end
-	$RESULT +='<TD><a href="exec:gt ''clothing'', ''view_clothing_item'', ''<<$ARGS[1]>>'', <<ARGS[2]>>, ''<<$ARGS[0]>>''"><img src="<<FUNC(''$clothing_image'', $ARGS[1], ARGS[2])>>" width="<<clothing_temp>>"></a></TD>'
+	$RESULT +='<TD><a href="exec:gt ''clothing'', ''view_clothing_item'', ''<<$ARGS[0]>>'', ''<<$ARGS[1]>>'', <<ARGS[2]>>"><img src="<<FUNC(''$clothing_image'', $ARGS[1], ARGS[2])>>" width="<<clothing_temp>>"></a></TD>'
 	killvar 'clothing_temp'
 	$swimwear_description = ''
 	gs 'clothing_attributes', $ARGS[1], ARGS[2]
@@ -1468,27 +1468,27 @@ end
 
 if $ARGS[0] = 'view_clothing_item':
 	!! ARGS 0 - view_clothing_item
-	!! ARGS 1 - clothing type
-	!! ARGS 2 - clothing index
-	!! ARGS 3 = action type (wardrobe, shop, sell, resize)
+	!! ARGS 1 - action type (wardrobe, shop, sell, resize)
+	!! ARGS 2 - clothing type
+	!! ARGS 3 - clothing index
 
 	$swimwear_description = ''
 
 	cla
-	'<center><img src="<<FUNC(''$clothing_image'', $ARGS[1], ARGS[2])>>"></center>'
-	gs 'clothing_attributes', $ARGS[1], ARGS[2]
+	'<center><img src="<<FUNC(''$clothing_image'', $ARGS[2], ARGS[3])>>"></center>'
+	gs 'clothing_attributes', $ARGS[2], ARGS[3]
 
-	$RESULT = FUNC('$short_description', $ARGS[1], CloStyle2)
-	$RESULT += '<<ARGS[2]>>'
+	$RESULT = FUNC('$short_description', $ARGS[2], CloStyle2)
+	$RESULT += '<<ARGS[3]>>'
 	'<<$RESULT>>'
-	if $ARGS[1] = 'misc_outfits' and ARGS[2] = 1:
+	if $ARGS[2] = 'misc_outfits' and ARGS[3] = 1:
 		'A hessian sack the hunters gave you.'
 	elseif $swimwear_description = '':
 		gs 'clothing_descriptions'
 		'<<$description>>'
-		if hypnoClothes > 0 and (CloThinness >= 6 or $ARGS[1] = 'salacious_outfits' or $ARGS[1] = 'salacious_dress' _
-		or (($ARGS[1] = 'eroto_outfits' or $ARGS[1] = 'eroto_dress' or $ARGS[1] = 'eroto_strip') and CloThinness >= 3) _
-		or ($ARGS[1] = 'danilovich_outfits' and CloThinness >= 5)):
+		if hypnoClothes > 0 and (CloThinness >= 6 or $ARGS[2] = 'salacious_outfits' or $ARGS[2] = 'salacious_dress' _
+		or (($ARGS[2] = 'eroto_outfits' or $ARGS[2] = 'eroto_dress' or $ARGS[2] = 'eroto_strip') and CloThinness >= 3) _
+		or ($ARGS[2] = 'danilovich_outfits' and CloThinness >= 5)):
 			nl & '<I>You have a strange feeling about this outfit. You <b>really</b> want to wear it.</i>'
 		end
 	else
@@ -1520,26 +1520,26 @@ if $ARGS[0] = 'view_clothing_item':
 		'This is sport clothing.'
 	end
 
-	if $ARGS[3] ! 'shop' and ($ARGS[1] ! 'gm_school' or ARGS[2] ! 6):
+	if $ARGS[1] ! 'shop' and ($ARGS[2] ! 'gm_school' or ARGS[3] ! 6):
 		$RESULT = '(strength '
-		dynamic '$RESULT += <<$ARGS[1]>>_h[<<ARGS[2]>>]'
-		if $ARGS[1] ! 'danilovich_outfits' and $ARGS[1] ! 'coat' and CloStyle ! 5:
+		dynamic '$RESULT += <<$ARGS[2]>>_h[<<ARGS[3]>>]'
+		if $ARGS[2] ! 'danilovich_outfits' and $ARGS[2] ! 'coat' and CloStyle ! 5:
 			$RESULT += ', hip size '
-			dynamic '$RESULT += <<$ARGS[1]>>_b[<<ARGS[2]>>]'
+			dynamic '$RESULT += <<$ARGS[2]>>_b[<<ARGS[3]>>]'
 		end
 		$RESULT += ')'
 		'<<$RESULT>>'
 	end
 
-	if $ARGS[3] = 'shop':
-		if dyneval('RESULT = <<$ARGS[1]>>[<<ARGS[2]>>]') = 1:
+	if $ARGS[1] = 'shop':
+		if dyneval('RESULT = <<$ARGS[2]>>[<<ARGS[3]>>]') = 1:
 			'You already own this item.'
 			act 'Leave': gt $loc, $loc_arg
 		else
-			if $ARGS[1] = 'coat' and ARGS[2] = 5:
+			if $ARGS[2] = 'coat' and ARGS[3] = 5:
 				price = CloPrice
 			else
-				price = (CloPrice * ((5 * CloQuality) + 100) / 100) * 1000 / (1250 - Clothingstock[ARGS[2]]) * 3 / 2
+				price = (CloPrice * ((5 * CloQuality) + 100) / 100) * 1000 / (1250 - Clothingstock[ARGS[3]]) * 3 / 2
 				price = price / 50 * 50
 			end
 			'Price: <<price>> <b>₽</b>'
@@ -1556,7 +1556,7 @@ if $ARGS[0] = 'view_clothing_item':
 						if CloStyle = 5:h = 20
 						h += (3 * CloQuality)
 						money -= price
-						gs 'clothing', 'view_clothing_item_buy', $ARGS[3], $ARGS[1], ARGS[2]
+						gs 'clothing', 'view_clothing_item_buy', $ARGS[1], $ARGS[2], ARGS[3]
 					end
 				end
 				if karta >= Price:
@@ -1566,17 +1566,17 @@ if $ARGS[0] = 'view_clothing_item':
 						if CloStyle = 5:h = 20
 						h += (3 * CloQuality)
 						karta -= price
-						gs 'clothing', 'view_clothing_item_buy', $ARGS[3], $ARGS[1], ARGS[2]
+						gs 'clothing', 'view_clothing_item_buy', $ARGS[1], $ARGS[2], ARGS[3]
 					end
 				end
 			end
 		end
-	elseif $ARGS[3] = 'wardrobe':
+	elseif $ARGS[1] = 'wardrobe':
 		act 'Return':gt 'clothing', 'clothing_list', '<<$ward_list_store>>'
 
-		if $ARGS[1] ! 'gm_school' or ARGS[2] ! 6:
+		if $ARGS[2] ! 'gm_school' or ARGS[3] ! 6:
 			!! if the clothing is worn out
-			if dyneval('RESULT = <<$ARGS[1]>>_h[<<ARGS[2]>>]') <= 0:
+			if dyneval('RESULT = <<$ARGS[2]>>_h[<<ARGS[3]>>]') <= 0:
 				'This item is worn and is not suitable for further wear.'
 				if pcs_sewng >= 60 and mc_inventory['sewing_fabric'] > 0:
 					cla
@@ -1587,7 +1587,7 @@ if $ARGS[0] = 'view_clothing_item':
 							cla
 							mc_inventory['sewing_fabric'] -= 1
 							minut += 30
-							dynamic $ARGS[1] + '_h[<<ARGS[2]>>] += 30'
+							dynamic $ARGS[2] + '_h[<<ARGS[3]>>] += 30'
 							'<center><img <<$set_imgh>> src="images/pc/activities/sewing/fix' + rand(1,2) + '.jpg"></center>'
 							'You spend 30 minutes fixing the outfit.'
 							act 'Return':gt 'clothing', 'clothing_list', '<<$ward_list_store>>'
@@ -1596,7 +1596,7 @@ if $ARGS[0] = 'view_clothing_item':
 							cla
 							mc_inventory['sewing_fabric'] += 3
 							minut += 30
-							dynamic $ARGS[1] + '[<<ARGS[2]>>] = 0'
+							dynamic $ARGS[2] + '[<<ARGS[3]>>] = 0'
 							'<center><img <<$set_imgh>> src="images/pc/activities/sewing/fix' + rand(1,2) + '.jpg"></center>'
 							'Despite your skill with a needle, this outfit has proved beyond repair. All that is left of it is only good for your cloth pile.'
 							act 'Return': gt 'clothing', 'clothing_list', '<<$ward_list_store>>'
@@ -1609,9 +1609,9 @@ if $ARGS[0] = 'view_clothing_item':
 			end
 
 			!! if the clothing is a type that checks for hip size
-			if $ARGS[1] ! 'danilovich_outfits' and CloStyle ! 5:
+			if $ARGS[2] ! 'danilovich_outfits' and CloStyle ! 5:
 				!! if the hipsize is too far from your hipsize
-				dynamic 'RESULT = <<$ARGS[1]>>_b[<<ARGS[2]>>]'
+				dynamic 'RESULT = <<$ARGS[2]>>_b[<<ARGS[3]>>]'
 				if RESULT < pcs_hips - 8 or RESULT > pcs_hips + 8:
 					if RESULT < pcs_hips:
 						'This item is too small for you to wear.'
@@ -1626,7 +1626,7 @@ if $ARGS[0] = 'view_clothing_item':
 							cla
 							mc_inventory['sewing_fabric'] -= 1
 							minut += 30
-							dynamic $ARGS[1] + '_b[<<ARGS[2]>>] = pcs_hips'
+							dynamic $ARGS[2] + '_b[<<ARGS[3]>>] = pcs_hips'
 							'You spend 30 minutes resizing the outfit.'
 							act 'Return':gt 'clothing', 'clothing_list', '<<$ward_list_store>>'
 						end
@@ -1637,7 +1637,7 @@ if $ARGS[0] = 'view_clothing_item':
 							act 'Resize item':
 								minut += 15
 								money -= 500
-								dynamic $ARGS[1] + '_b[<<ARGS[2]>>] = pcs_hips'
+								dynamic $ARGS[2] + '_b[<<ARGS[3]>>] = pcs_hips'
 								*nl
 								'You hand the clothing over to the tailor who takes it into the back. Fifteen minutes later, he presents your clothing back to you, adjusted to fit you perfectly.'
 								act 'Return':gt 'clothing', 'clothing_list', '<<$ward_list_store>>'
@@ -1652,73 +1652,73 @@ if $ARGS[0] = 'view_clothing_item':
 			end
 		end
 
-		if $ARGS[1] ! 'danilovich_swimsuit' and $ARGS[1] ! 'scandalicious_bikinis' and $ARGS[1] ! 'scandalicious_swimsuit' and $ARGS[1] ! 'allure_bikinis' and $ARGS[1] ! 'allure_bikinis':
+		if $ARGS[2] ! 'danilovich_swimsuit' and $ARGS[2] ! 'scandalicious_bikinis' and $ARGS[2] ! 'scandalicious_swimsuit' and $ARGS[2] ! 'allure_bikinis' and $ARGS[2] ! 'allure_bikinis':
 
 			if CloInhibit > pcs_inhib:
 				'You don''t feel daring enough to wear an outfit this revealing.'
-			elseif ARRPOS('$CloLosTyp', $ARGS[1]) ! -1 and ARRPOS('CloLosNum',ARGS[2]) ! -1 :
+			elseif ARRPOS('$CloLosTyp', $ARGS[2]) ! -1 and ARRPOS('CloLosNum',ARGS[3]) ! -1 :
 				'You lost these clothes somewhere, maybe you can find them again?.'
 			else
 				act 'Wear':
-					gs 'clothing', 'wear', $ARGS[1], ARGS[2]
+					gs 'clothing', 'wear', $ARGS[2], ARGS[3]
 
 					gt 'clothing', 'view_clothing_list', '<<$ward_list_page>>', '<<$ward_list_store>>'
 				end
 			end
 		end
-	elseif $ARGS[3] = 'store' or $ARGS[3] = 'unwanted':
+	elseif $ARGS[1] = 'store' or $ARGS[1] = 'unwanted':
 		act 'Return':gt 'clothing', 'clothing_list', '<<$ward_list_store>>'
 
-		if $ARGS[1] ! 'coat':
+		if $ARGS[2] ! 'coat':
 			act 'Move back to wardrobe':
-				dynamic $ARGS[1] + '_s[<<ARGS[2]>>] = 0'
+				dynamic $ARGS[2] + '_s[<<ARGS[3]>>] = 0'
 				gt 'clothing', 'clothing_list', '<<$ward_list_store>>'
 			end
 		end
 
-	elseif $ARGS[3] = 'sell':
-		$ward_list_page = $ARGS[3]
+	elseif $ARGS[1] = 'sell':
+		$ward_list_page = $ARGS[1]
 		act 'Keep item':gt 'clothing', 'clothing_list', '<<$ward_list_store>>'
 
 		!! value is based on the strength remaining
-		dynamic 'RESULT = <<$ARGS[1]>>_h[<<ARGS[2]>>]'
+		dynamic 'RESULT = <<$ARGS[2]>>_h[<<ARGS[3]>>]'
 		if RESULT > 45:
 			'You can sell this item for 500 <b>₽</b>.'
 			act 'Sell':
-				dynamic '<<$ARGS[1]>>[<<ARGS[2]>>] = 0'
+				dynamic '<<$ARGS[2]>>[<<ARGS[3]>>] = 0'
 				money += 500
 				gt 'clothing', 'clothing_list', '<<$ward_list_store>>'
 			end
 		elseif RESULT > 30:
 			'You can sell this item for 300 <b>₽</b>.'
 			act 'Sell':
-				dynamic '<<$ARGS[1]>>[<<ARGS[2]>>] = 0'
+				dynamic '<<$ARGS[2]>>[<<ARGS[3]>>] = 0'
 				money += 300
 				gt 'clothing', 'clothing_list', '<<$ward_list_store>>'
 			end
 		elseif RESULT > 0:
 			'You can sell this item for 100 <b>₽</b>.'
 			act 'Sell':
-				dynamic '<<$ARGS[1]>>[<<ARGS[2]>>] = 0'
+				dynamic '<<$ARGS[2]>>[<<ARGS[3]>>] = 0'
 				money += 100
 				gt 'clothing', 'clothing_list', '<<$ward_list_store>>'
 			end
 		else
 			'This item is too worn to have any sale value.'
 			act 'Throw it away':
-				dynamic '<<$ARGS[1]>>[<<ARGS[2]>>] = 0'
+				dynamic '<<$ARGS[2]>>[<<ARGS[3]>>] = 0'
 				gt 'clothing', 'clothing_list', '<<$ward_list_store>>'
 			end
 		end
-	elseif $ARGS[3] = 'resize':
+	elseif $ARGS[1] = 'resize':
 		act 'Leave item alone':gt 'clothing', 'view_clothing_list', '<<$ward_list_page>>', '<<$ward_list_store>>'
 
-		if $ARGS[1] ! 'danilovich_outfits' and $ARGS[1] ! 'coat' and CloStyle ! 5:
-			if dyneval('RESULT = <<$ARGS[1]>>_b[<<ARGS[2]>>]') ! pcs_hips and money >= 500:
+		if $ARGS[2] ! 'danilovich_outfits' and $ARGS[2] ! 'coat' and CloStyle ! 5:
+			if dyneval('RESULT = <<$ARGS[2]>>_b[<<ARGS[3]>>]') ! pcs_hips and money >= 500:
 				'You can have this resized for 500 <b>₽</b>.'
 				act 'Resize':
 					money -= 500
-					dynamic '<<$ARGS[1]>>_b[<<ARGS[2]>>] = pcs_hips'
+					dynamic '<<$ARGS[2]>>_b[<<ARGS[3]>>] = pcs_hips'
 					gt 'clothing', 'view_clothing_list', 'resize'
 				end
 			end

+ 2 - 2
locations/gad_market.qsrc

@@ -238,8 +238,8 @@ if $ARGS[0] = 'swimsuit_cart':
 	end
 end
 
-if $ARGS[0] = 'bikini1': gt 'clothing', 'view_clothing_item', 'scandalicious_bikinis', i, 'shop'
-if $ARGS[0] = 'swim1': gt 'clothing', 'view_clothing_item', 'scandalicious_swimsuit', i, 'shop'
+if $ARGS[0] = 'bikini1': gt 'clothing', 'view_clothing_item', 'shop', 'scandalicious_bikinis', i
+if $ARGS[0] = 'swim1': gt 'clothing', 'view_clothing_item', 'shop', 'scandalicious_swimsuit', i
 
 
 

+ 9 - 1
locations/gschool_lessonsev1.qsrc

@@ -40,15 +40,18 @@ if $ARGS[0] = 'fiz_rand':
 			'You''re training with some free weights today. As you do your routine, you notice that the class has grown awfully quiet and glance over to see most of them gawking at Albina, who has bent over while also working out with weights and is showing off her toned bubble butt to everyone watching. She soon straightens back up and gives all of them a dirty look.'
 		end
 	elseif fizperand = 6:
+		*clr & cla
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/gym/gymfight.jpg"></center>'
 		'You hear a commotion from the other side of the room and look over to see Dan and Roman shoving each other. Roman shoves Dan again and it quickly starts escalating. A few punches are thrown and the two of them are soon down on the ground fighting. The coach rushes over and quickly pulls them apart before sending them to the principal.'
 	elseif fizperand = 7:
+		*clr & cla
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/gym/tinydick.jpg"></center>'
 		'During a break in gym class, you and several other girls are talking when Igor wanders over and tries to chat you all up. You find his efforts amusing at best and you can tell they aren''t working on the other girls either, yet he seems to think he''s oozing cool and keeps chatting up the lot of you before Vitek suddenly rushes up behind him, grabs his shorts and yanks them down to his ankles.'
 		'Unfortunately for Igor, his underwear went with the shorts and now he''s standing half naked in front of a bunch of girls. What''s worse is that now everyone can see how tiny his dick is, making you and the others gasp and giggle, several girls even pointing and laughing loudly. The whole class is soon in stitches as Igor desperately tries to pull up his shorts and fails, all while cursing at Vitek and calling him all kinds of names. You almost feel sorry for him; not only is he a terrible flirt, but the whole class has seen his tiny dick.'
 	elseif fizperand = 8 and $pantyworntype ! 'none':
 		gt 'gschool_lessonsev1', 'fiz8'
 	elseif fizperand = 9:
+		*clr & cla
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/gym/hanging.jpg"></center>'
 		'During class, Albina gives you a tap on the shoulder, giggling and pointing at Vitek. You look over and see the tip of his dick hanging out the leg of his shorts. You giggle as well, but you are also quite impressed and maybe just a little turned on at the sight; he''s certainly very well endowed.'
 		'It takes him a while to notice the girls giggling at him and even longer to figure out why. Once he does, he makes a show of tucking his dick away by adjusting his shorts, all with a huge smile on his face.'
@@ -57,21 +60,27 @@ if $ARGS[0] = 'fiz_rand':
 	elseif fizperand = 10 and pcs_hotcat >= 5 and fame['pav_slut'] >= 150:
 		gt 'gschool_lessonsev1', 'fiz10'
 	elseif fizperand = 11:
+		*clr & cla
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/gym/bendoverff.jpg"></center>'
 		'During class, Lina notices Ivan watching Lariska and moves up behind her before pushing her forward at the shoulders, making her bend over. She proceeds to pretend to hump Lariska, obviously trying to mimic Ivan''s voice and speech. "Oh Lariska, I want to fuck your ass!" This causes several of the other students to laugh, even Ivan, but it''s quickly broken up by Mr. Nikolaevich.'
 	elseif fizperand = 12:
+		*clr & cla
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/gym/doublebutt.jpg"></center>'
 		'During class, Lina and Lariska are whispering and giggling about something. After some time, they pull down the back of their shorts to flash their panty-clad asses at several of the more popular jock boys.'
 	elseif fizperand = 13:
+		*clr & cla
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/gym/dry3some.jpg"></center>'
 		'Near the end of class, some girls are chatting when they notice some boys looking their way and start horsing around. One buries her face in her friend''s breasts as the third pretends to hump her. After a few seconds, once several guys are watching, they stop and laugh as they move away.'
 	elseif fizperand = 14:
+		*clr & cla
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/gym/hardon.jpg"></center>'
 		'At the end of class, everyone is allowed to do their own thing so long as they''re doing something physical. You see Fedor using the bench press and notice that he''s sporting a serious hardon, with several of the other girls having noticed as well and giggling about it.'
 	elseif fizperand = 15:
+		*clr & cla
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/gym/stretchhump.jpg"></center>'
 		'Lina is on the floor doing the splits when Lariska comes up behind her and lays on top of her, pretending to hump her. Lina laughs before they break it up.'
 	elseif fizperand = 16:
+		*clr & cla
 		'<center><img <<$set_imgh>> src="images/locations/pavlovsk/school/gym/teaseboys' + rand(1,2) + '.jpg"></center>'
 		'Lena and Lera notice several of the boys watching them and start teasing them by pretending to make out in front of them. Knowing them, they''re likely doing it for more than the laughs.'
 	else
@@ -2006,4 +2015,3 @@ if $ARGS[0] = 'russian':
 end
 
 --- gschool_lessonsev1 ---------------------------------
-

+ 8 - 0
locations/piercing_attributes.qsrc

@@ -0,0 +1,8 @@
+# piercing_attributes
+
+PirFirst = 0
+PirPrice = 0
+
+gs '$attributes_piercing_<<$ARGS[0]>>', ARGS[1]
+
+--- piercing_attributes ---------------------------------

+ 70 - 0
locations/piercing_management.qsrc

@@ -114,7 +114,77 @@ if $ARGS[0] = 'count':
 end
 
 
+! [1] - payment method
+! [2] - slot
+! [3] - index
+if $ARGS[0] = 'buy':
+	if pcs_piercings[$ARGS[2]] = 0:
+		*clr
+		'<center><img src="<<func(''piercing_management'', ''<<$ARGS[2]>>_image'', ARGS[3])>>"></center>'
+		'The tattooist disinfects the area, pierces your <<$ARGS[2]>> and inserts your chosen piercing.'
+	else
+		'You buy the piercing.'
+	end
+
+	if $ARGS[1] = 'money': 
+		money -= price 
+	else 
+		karta -= price
+	end
+
+	gs 'piercing_management', 'add', $ARGS[2], ARGS[3]
+	gs 'piercing_management', 'count'
+	gs 'stat'
 
+	act 'Return': gt $loc, $loc_arg
+end
+
+
+! [1] - action type
+! [2] - slot
+! [3] - index
+if $ARGS[0] = 'view_item':
+	msg 'in item'
+	gs 'piercing_attributes', $ARGS[2], ARGS[3]
+
+	'<center><img src="<<func(''piercing_management'', ''<<$ARGS[2]>>_image'', ARGS[3])>>"></center>'
+
+	if $ARGS[1] = 'shop':
+		if pcs_piercings['<<$ARGS[2]>>_<<ARGS[3]>>_owned'] = 1:
+			'You already own this piercing.'
+			act 'Return': gt $loc, $loc_arg
+
+		else
+			price = PirPrice
+			if pcs_piercings[$ARGS[2]] = 0:
+				price += PirFirst
+				if max(money, karta) < price:
+					'You cannot afford to get your <<$ARGS[2]>> pierced with this piercing.'
+				else
+					if money >= price:
+						act 'Get your <<$ARGS[2]>> pierced and buy this piercing for for <<price>> <b>₽</b> (cash)': gt 'piercing_management', 'buy', 'money', $ARGS[2], ARGS[3]
+					end
+					if karta >= price:
+						act 'Get your <<$ARGS[2]>> pierced and buy this piercing for for <<price>> <b>₽</b> (card)': gt 'piercing_management', 'buy', 'karta', $ARGS[2], ARGS[3]
+					end
+				end
+
+			else
+				if max(money, karta) < price:
+					'You don''t have enough money for this piercing.'
+				else
+					if money >= price:
+						act 'Buy this piercing for <<price>> <b>₽</b> (cash)': gt 'piercing_management', 'buy', 'money', $ARGS[2], ARGS[3]
+					end
+					if karta >= price:
+						act 'Buy this piercing for <<price>> <b>₽</b> (card)': gt 'piercing_management', 'buy', 'karta', $ARGS[2], ARGS[3]
+					end
+				end
+			end
+			act 'Return': gt $loc, $loc_arg
+		end
+	end
+end
 
 
 

+ 116 - 1649
locations/pirsingsalon.qsrc

@@ -74,9 +74,9 @@ if $ARGS[0] = 'shop_menu':
 	$temp_table +=		'</td>'
 	$temp_table +=		'<td>'
 	if pcs_piercings['ears'] = 0:
-		$temp_table +=		'<a href="exec: gt ''pirsingsalon'', ''piercing_ears''">Ear - 3,000 <b>₽</b></a>'
+		$temp_table +=		'<a href="exec: salon_temp_state = 0 & gt ''pirsingsalon'', ''piercing_ears''">Ear - 3,000 <b>₽</b></a>'
 	else
-		$temp_table +=		'<a href="exec: gt ''pirsingsalon'', ''piercing_ears''">Ear - 1,000 <b>₽</b></a>'
+		$temp_table +=		'<a href="exec: salon_temp_state = 1 & gt ''pirsingsalon'', ''piercing_ears''">Ear - 1,000 <b>₽</b></a>'
 	end
 	$temp_table +=		'</td>'
 	$temp_table +=	'</tr>'
@@ -90,9 +90,9 @@ if $ARGS[0] = 'shop_menu':
 	$temp_table +=		'</td>'
 	$temp_table +=		'<td>'
 	if pcs_piercings['nose'] = 0:
-		$temp_table +=		'<a href="exec: gt ''pirsingsalon'', ''piercing_nose''">Nose - 5,000 <b>₽</b></a>'
+		$temp_table +=		'<a href="exec: salon_temp_state = 0 & gt ''pirsingsalon'', ''piercing_nose''">Nose - 5,000 <b>₽</b></a>'
 	else
-		$temp_table +=		'<a href="exec: gt ''pirsingsalon'', ''piercing_nose''">Nose - 2,000 <b>₽</b></a>'
+		$temp_table +=		'<a href="exec: salon_temp_state = 1 & gt ''pirsingsalon'', ''piercing_nose''">Nose - 2,000 <b>₽</b></a>'
 	end
 	$temp_table +=		'</td>'
 	$temp_table +=	'</tr>'
@@ -106,9 +106,9 @@ if $ARGS[0] = 'shop_menu':
 	$temp_table +=		'</td>'
 	$temp_table +=		'<td>'
 	if pcs_piercings['brow'] = 0:
-		$temp_table +=			'<a href="exec: gt ''pirsingsalon'', ''piercing_brow''">Eyebrow - 5,000 <b>₽</b></a>'
+		$temp_table +=		'<a href="exec: salon_temp_state = 0 & gt ''pirsingsalon'', ''piercing_brow''">Eyebrow - 5,000 <b>₽</b></a>'
 	else
-		$temp_table +=			'<a href="exec: gt ''pirsingsalon'', ''piercing_brow''">Eyebrow - 2,000 <b>₽</b></a>'
+		$temp_table +=		'<a href="exec: salon_temp_state = 1 & gt ''pirsingsalon'', ''piercing_brow''">Eyebrow - 2,000 <b>₽</b></a>'
 	end
 	$temp_table +=		'</td>'
 	$temp_table +=	'</tr>'
@@ -122,9 +122,9 @@ if $ARGS[0] = 'shop_menu':
 	$temp_table +=		'</td>'
 	$temp_table +=		'<td>'
 	if pcs_piercings['lip'] = 0:
-		$temp_table +=		'<a href="exec: gt ''pirsingsalon'', ''piercing_lip''">Lip - 6,000 <b>₽</b></a>'
+		$temp_table +=		'<a href="exec: salon_temp_state = 0 & gt ''pirsingsalon'', ''piercing_lip''">Lip - 6,000 <b>₽</b></a>'
 	else
-		$temp_table +=		'<a href="exec: gt ''pirsingsalon'', ''piercing_lip''">Lip - 3,000 <b>₽</b></a>'
+		$temp_table +=		'<a href="exec: salon_temp_state = 1 & gt ''pirsingsalon'', ''piercing_lip''">Lip - 3,000 <b>₽</b></a>'
 	end
 	$temp_table +=		'</td>'
 	$temp_table +=	'</tr>'
@@ -138,9 +138,9 @@ if $ARGS[0] = 'shop_menu':
 	$temp_table +=		'</td>'
 	$temp_table +=		'<td>'
 	if pcs_piercings['tongue'] = 0:
-		$temp_table +=		'<a href="exec: gt ''pirsingsalon'', ''piercing_tongue''">Tongue - 7,000 <b>₽</b></a>'
+		$temp_table +=		'<a href="exec: salon_temp_state = 0 & gt ''pirsingsalon'', ''piercing_tongue''">Tongue - 7,000 <b>₽</b></a>'
 	else
-		$temp_table +=		'<a href="exec: gt ''pirsingsalon'', ''piercing_tongue''">Tongue - 4,000 <b>₽</b></a>'
+		$temp_table +=		'<a href="exec: salon_temp_state = 1 & gt ''pirsingsalon'', ''piercing_tongue''">Tongue - 4,000 <b>₽</b></a>'
 	end
 	$temp_table +=		'</td>'
 	$temp_table +=	'</tr>'
@@ -154,9 +154,9 @@ if $ARGS[0] = 'shop_menu':
 	$temp_table +=		'</td>'
 	$temp_table +=		'<td>'
 	if pcs_piercings['navel'] = 0:
-		$temp_table +=		'<a href="exec: gt ''pirsingsalon'', ''piercing_navel''">Navel - 8,000 <b>₽</b></a>'
+		$temp_table +=		'<a href="exec: salon_temp_state = 0 & gt ''pirsingsalon'', ''piercing_navel''">Navel - 8,000 <b>₽</b></a>'
 	else
-		$temp_table +=		'<a href="exec: gt ''pirsingsalon'', ''piercing_navel''">Navel - 5,000 <b>₽</b></a>'
+		$temp_table +=		'<a href="exec: salon_temp_state = 1 & gt ''pirsingsalon'', ''piercing_navel''">Navel - 5,000 <b>₽</b></a>'
 	end
 	$temp_table +=		'</td>'
 	$temp_table +=	'</tr>'
@@ -170,9 +170,9 @@ if $ARGS[0] = 'shop_menu':
 	$temp_table +=		'</td>'
 	$temp_table +=		'<td>'
 	if pcs_piercings['nipples'] = 0:
-		$temp_table +=		'<a href="exec: gt ''pirsingsalon'', ''piercing_nipples''">Nipple - 10,000 <b>₽</b></a>'
+		$temp_table +=		'<a href="exec: salon_temp_state = 0 & gt ''pirsingsalon'', ''piercing_nipples''">Nipple - 10,000 <b>₽</b></a>'
 	else
-		$temp_table +=		'<a href="exec: gt ''pirsingsalon'', ''piercing_nipples''">Nipple - 6,000 <b>₽</b></a>'
+		$temp_table +=		'<a href="exec: salon_temp_state = 1 & gt ''pirsingsalon'', ''piercing_nipples''">Nipple - 6,000 <b>₽</b></a>'
 	end
 	$temp_table +=		'</td>'
 	$temp_table +=	'</tr>'
@@ -186,9 +186,9 @@ if $ARGS[0] = 'shop_menu':
 	$temp_table +=		'</td>'
 	$temp_table +=		'<td>'
 	if pcs_piercings['pussy'] = 0:
-		$temp_table +=		'<a href="exec: gt ''pirsingsalon'', ''piercing_pussy''">Pussy - 25,000 <b>₽</b></a>'
+		$temp_table +=		'<a href="exec: salon_temp_state = 0 & gt ''pirsingsalon'', ''piercing_pussy''">Pussy - 25,000 <b>₽</b></a>'
 	else
-		$temp_table +=		'<a href="exec: gt ''pirsingsalon'', ''piercing_pussy''">Pussy - 10,000 <b>₽</b></a>'
+		$temp_table +=		'<a href="exec: salon_temp_state = 1 & gt ''pirsingsalon'', ''piercing_pussy''">Pussy - 10,000 <b>₽</b></a>'
 	end
 	$temp_table +=		'</td>'
 	$temp_table +=	'</tr>'
@@ -222,749 +222,148 @@ end
 	!!----- Ears --------------------------------------------------
 
 if $ARGS[0] = 'piercing_ears':
+	gs 'shortgs', 'setloc', 'pirsingsalon', 'piercing_ears'
 	menu_off = 1
 	gs 'stat'
 
-	ps_total = func('piercing_management', 'totals', 'ears')
-	
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-		step = intro_custom_step
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-		step = 1
-	end
-	
-	ps_i = 1
-	:loopears_pir
-		*p '<a href="exec:gt ''pirsingsalon'', ''piercing_ears2'', <<ps_i>>"><img height="250" src="<<func(''piercing_management'', ''ears_image'', ps_i)>>"></a>'
-		ps_i += step
-	if ps_i <= ps_total: jump 'loopears_pir'
-end
-
-if $ARGS[0] = 'piercing_ears2':
-	'<center><img src="<<func(''piercing_management'', ''ears_image'', ARGS[1])>>"></center>'
-
-	if pcs_piercings['ears_<<ARGS[1]>>_owned'] = 1:
-		'You already own this piercing.'
-		act 'Return': gt 'pirsingsalon', 'piercing_ears'
-
-	elseif pcs_piercings['ears'] = 0:
-		if max(money, karta) < 3000:
-			'You cannot afford to get your ears pierced with this piercing.'
-		else
-			if money >= 3000:
-				dynamic "
-					act 'Get your ears pierced with these earrings for 3,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'piercing_ears3', <<ARGS[1]>>, 'money'
-				"
-			end
-			if karta >= 3000:
-				dynamic "
-					act 'Get your ears pierced with these earrings for 3,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'piercing_ears3', <<ARGS[1]>>, 'karta'
-				"
-			end
-		end
-
-	else
-		if max(money, karta) < 1000:
-			'You don''t have enough money for this piercing.'
-		else
-			if money >= 1000:
-				dynamic "
-					act 'Buy this piercing for 1,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'piercing_ears3', <<ARGS[1]>>, 'money'
-				"
-			end
-			if karta >= 1000:
-				dynamic "
-					act 'Buy this piercing for 1,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'piercing_ears3', <<ARGS[1]>>, 'karta'
-				"
-			end
-		end
-	end
-
-	act 'Return': gt 'pirsingsalon', 'piercing_ears'
-end
-
-if $ARGS[0] = 'piercing_ears3':
-	if pcs_piercings['ears'] = 0:
-		*clr
+	if salon_temp_state = 0 and pcs_piercings['ears'] ! 0:
 		minut += 30
-		if $ARGS[2] = 'money': money -= 2000 else karta -= 2000
-
-		'<center><img src="<<func(''piercing_management'', ''ears_image'', ARGS[1])>>"></center>'
-		'The tattooist disinfects the area, pierces your ears and inserts your chosen earrings.'
-
+		salon_temp_state = 1
 		gs 'pain', 1, 'ears', 'pierce'
-
-	else
-		'You buy the piercing.'
 	end
 
-	if $ARGS[2] = 'money': money -= 1000 else karta -= 1000
-	gs 'piercing_management', 'add', 'ears', ARGS[1]
-	gs 'stat'
+	gs 'shop_utils', 'display_func_managed', 'piercing_management', 'ears', 1, 'ears_image', 'shop'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-	end
+	act 'Return': killvar 'salon_temp_state' & gt 'pirsingsalon', 'start'
 end
 
-
 	!!----- Nose --------------------------------------------------
 
 if $ARGS[0] = 'piercing_nose':
+	gs 'shortgs', 'setloc', 'pirsingsalon', 'piercing_nose'
 	menu_off = 1
 	gs 'stat'
 
-	ps_total = func('piercing_management', 'totals', 'nose')
-	
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-		step = intro_custom_step
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-		step = 1
-	end
-	
-	ps_i = 1
-	:loopnose_pir
-		*p '<a href="exec: gt ''pirsingsalon'', ''piercing_nose2'', <<ps_i>>"><img height="250" src="<<func(''piercing_management'', ''nose_image'', ps_i)>>"></a>'
-		ps_i += step
-	if ps_i <= ps_total: jump 'loopnose_pir'
-end
-
-if $ARGS[0] = 'piercing_nose2':
-	'<center><img src="<<func(''piercing_management'', ''nose_image'', ARGS[1])>>"></center>'
-
-	if pcs_piercings['nose_<<ARGS[1]>>_owned'] = 1:
-		'You already own this piercing.'
-		act 'Return': gt 'pirsingsalon', 'piercing_nose'
-
-	elseif pcs_piercings['nose'] = 0:
-		if max(money, karta) < 5000:
-			'You cannot afford to get your nose pierced with this piercing.'
-		else
-			if money >= 5000:
-				dynamic "
-					act 'Get your nose pierced with these earrings for 5,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'piercing_nose3', <<ARGS[1]>>, 'money'
-				"
-			end
-			if karta >= 5000:
-				dynamic "
-					act 'Get your nose pierced with these earrings for 5,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'piercing_nose3', <<ARGS[1]>>, 'karta'
-				"
-			end
-		end
-
-	else
-		if max(money, karta) < 2000:
-			'You don''t have enough money for this piercing.'
-		else
-			if money >= 2000:
-				dynamic "
-					act 'Buy this piercing for 2,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'piercing_nose3', <<ARGS[1]>>, 'money'
-				"
-			end
-			if karta >= 2000:
-				dynamic "
-					act 'Buy this piercing for 2,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'piercing_nose3', <<ARGS[1]>>, 'karta'
-				"
-			end
-		end
-	end
-
-	act 'Return': gt 'pirsingsalon', 'piercing_nose'
-end
-
-if $ARGS[0] = 'piercing_nose3':
-	if pcs_piercings['nose'] = 0:
-		*clr
+	if salon_temp_state = 0 and pcs_piercings['nose'] ! 0:
 		minut += 30
-		if $ARGS[2] = 'money': money -= 3000 else karta -= 3000
-
-		'<center><img src="<<func(''piercing_management'', ''nose_image'', ARGS[1])>>"></center>'
-		'The tattooist disinfects the area, pierces your nose and inserts your chosen piercing.'
-
-		gs 'pain', 2, 'nose', 'pierce'
-
-	else
-		'You buy the piercing.'
+		salon_temp_state = 1
+		gs 'pain', 1, 'nose', 'pierce'
 	end
 
-	if $ARGS[2] = 'money': money -= 2000 else karta -= 2000
-	gs 'piercing_management', 'add', 'nose', ARGS[1]
-	gs 'stat'
+	gs 'shop_utils', 'display_func_managed', 'piercing_management', 'nose', 1, 'nose_image', 'shop'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-	end
+	act 'Return': killvar 'salon_temp_state' & gt 'pirsingsalon', 'start'
 end
 
-
 	!!----- Brow --------------------------------------------------
 
 if $ARGS[0] = 'piercing_brow':
+	gs 'shortgs', 'setloc', 'pirsingsalon', 'piercing_brow'
 	menu_off = 1
 	gs 'stat'
 
-	ps_total = func('piercing_management', 'totals', 'brow')
-	
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-		step = intro_custom_step
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-		step = 1
-	end
-	
-	ps_i = 1
-	:loopbrow_pir
-		*p '<a href="exec: gt ''pirsingsalon'', ''piercing_brow2'', <<ps_i>>"><img height="250" src="<<func(''piercing_management'', ''brow_image'', ps_i)>>"></a>'
-		ps_i += step
-	if ps_i <= ps_total: jump 'loopbrow_pir'
-end
-
-if $ARGS[0] = 'piercing_brow2':
-	'<center><img src="<<func(''piercing_management'', ''brow_image'', ARGS[1])>>"></center>'
-
-	if pcs_piercings['brow_<<ARGS[1]>>_owned'] = 1:
-		'You already own this piercing.'
-		act 'Return': gt 'pirsingsalon', 'piercing_brow'
-
-	elseif pcs_piercings['brow'] = 0:
-		if max(money, karta) < 5000:
-			'You cannot afford to get your brow pierced with this piercing.'
-		else
-			if money >= 5000:
-				dynamic "
-					act 'Get your brow pierced with these earrings for 5,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'piercing_brow3', <<ARGS[1]>>, 'money'
-				"
-			end
-			if karta >= 5000:
-				dynamic "
-					act 'Get your brow pierced with these earrings for 5,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'piercing_brow3', <<ARGS[1]>>, 'karta'
-				"
-			end
-		end
-
-	else
-		if max(money, karta) < 2000:
-			'You don''t have enough money for this piercing.'
-		else
-			if money >= 2000:
-				dynamic "
-					act 'Buy this piercing for 2,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'piercing_brow3', <<ARGS[1]>>, 'money'
-				"
-			end
-			if karta >= 2000:
-				dynamic "
-					act 'Buy this piercing for 2,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'piercing_brow3', <<ARGS[1]>>, 'karta'
-				"
-			end
-		end
-	end
-
-	act 'Return':gt 'pirsingsalon', 'piercing_brow'
-end
-
-if $ARGS[0] = 'piercing_brow3':
-	if pcs_piercings['brow'] = 0:
-		*clr
+	if salon_temp_state = 0 and pcs_piercings['brow'] ! 0:
 		minut += 30
-		if $ARGS[2] = 'money': money -= 3000 else karta -= 3000
-
-		'<center><img src="<<func(''piercing_management'', ''brow_image'', ARGS[1])>>"></center>'
-		'The tattooist disinfects the area, pierces your brow and inserts your chosen piercing.'
-
-		gs 'pain', 3, 'eyebrows', 'pierce'
-
-	else
-		'You buy the piercing.'
+		salon_temp_state = 1
+		gs 'pain', 1, 'eyebrows', 'pierce'
 	end
 
-	if $ARGS[2] = 'money': money -= 2000 else karta -= 2000
-	gs 'piercing_management', 'add', 'brow', ARGS[1]
-	gs 'stat'
+	gs 'shop_utils', 'display_func_managed', 'piercing_management', 'brow', 1, 'brow_image', 'shop'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-	end
+	act 'Return': killvar 'salon_temp_state' & gt 'pirsingsalon', 'start'
 end
 
-
 	!!----- Lip --------------------------------------------------
 
 if $ARGS[0] = 'piercing_lip':
+	gs 'shortgs', 'setloc', 'pirsingsalon', 'piercing_lip'
 	menu_off = 1
 	gs 'stat'
 
-	ps_total = func('piercing_management', 'totals', 'lip')
-	
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-		step = intro_custom_step
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-		step = 1
-	end
-
-	ps_i = 1
-	:looplip_pir
-		*p '<a href="exec: gt ''pirsingsalon'', ''piercing_lip2'', <<ps_i>>"><img height="250" src="<<func(''piercing_management'', ''lip_image'', ps_i)>>"></a>'
-		ps_i += step
-	if ps_i <= ps_total: jump 'looplip_pir'
-end
-
-if $ARGS[0] = 'piercing_lip2':
-	'<center><img src="<<func(''piercing_management'', ''lip_image'', ARGS[1])>>"></center>'
-
-	if pcs_piercings['lip_<<ARGS[1]>>_owned'] = 1:
-		'You already own this piercing.'
-		act 'Return': gt 'pirsingsalon', 'piercing_lip'
-
-	elseif pcs_piercings['lip'] = 0:
-		if max(money, karta) < 6000:
-			'You cannot afford to get your lip pierced with this piercing.'
-		else
-			if money >= 6000:
-				dynamic "
-					act 'Get your lip pierced with this piercing for 6,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'piercing_lip3', <<ARGS[1]>>, 'money'
-				"
-			end
-			if karta >= 6000:
-				dynamic "
-					act 'Get your lip pierced with this piercing for 6,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'piercing_lip3', <<ARGS[1]>>, 'karta'
-				"
-			end
-		end
-
-	else
-		if max(money, karta) < 3000:
-			'You don''t have enough money for this piercing.'
-		else
-			if money >= 3000:
-				dynamic "
-					act 'Buy this piercing for 3,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'piercing_lip3', <<ARGS[1]>>, 'money'
-				"
-			end
-			if karta >= 3000:
-				dynamic "
-					act 'Buy this piercing for 3,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'piercing_lip3', <<ARGS[1]>>, 'karta'
-				"
-			end
-		end
-	end
-
-	act 'Return': gt 'pirsingsalon', 'piercing_lip'
-end
-
-if $ARGS[0] = 'piercing_lip3':
-	if pcs_piercings['lip'] = 0:
-		*clr
+	if salon_temp_state = 0 and pcs_piercings['lip'] ! 0:
 		minut += 30
-		if $ARGS[2] = 'money': money -= 3000 else karta -= 3000
-
-		'<center><img src="images/locations/city/industrial/salon/pirsing2.jpg"></center>'
-		'The tattooist disinfects the area, pierces your lip and inserts your chosen piercing.'
-
-		gs 'pain', 2, 'lips', 'pierce'
-
-	else
-		'You buy the piercing.'
+		salon_temp_state = 1
+		gs 'pain', 1, 'lips', 'pierce'
 	end
 
-	if $ARGS[2] = 'money': money -= 3000 else karta -= 3000
-	gs 'piercing_management', 'add', 'lip', ARGS[1]
-	gs 'stat'
+	gs 'shop_utils', 'display_func_managed', 'piercing_management', 'lip', 1, 'lip_image', 'shop'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-	end
+	act 'Return': killvar 'salon_temp_state' & gt 'pirsingsalon', 'start'
 end
 
-
 	!!----- Tongue --------------------------------------------------
 
 if $ARGS[0] = 'piercing_tongue':
+	gs 'shortgs', 'setloc', 'pirsingsalon', 'piercing_tongue'
 	menu_off = 1
 	gs 'stat'
 
-	ps_total = func('piercing_management', 'totals', 'tongue')
-	
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-		step = intro_custom_step
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-		step = 1
-	end
-	
-	ps_i = 1
-	:looptongue_pir
-		*pl '<a href="exec: gt ''pirsingsalon'', ''piercing_tongue2'', <<ps_i>>"><img height="250" src="<<func(''piercing_management'', ''tongue_image'', ps_i)>>"></a>'
-		ps_i += step
-	if ps_i <= ps_total: jump 'looptongue_pir'
-end
-
-if $ARGS[0] = 'piercing_tongue2':
-	menu_off = 1
-	gs 'stat'
-
-	'<center><img src="<<func(''piercing_management'', ''tongue_image'', ARGS[1])>>"></center>'
-
-	if pcs_piercings['tongue_<<ARGS[1]>>_owned'] = 1:
-		'You already own this piercing.'
-		act 'Return': gt 'pirsingsalon', 'piercing_tongue'
-
-	elseif pcs_piercings['tongue'] = 0:
-		if max(money, karta) < 7000:
-			'You cannot afford to get your tongue pierced with this piercing.'
-		else
-			if money >= 7000:
-				dynamic "
-					act 'Get your tongue pierced with this piercing for 7,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'piercing_tongue3', <<ARGS[1]>>, 'money'
-				"
-			end
-			if karta >= 7000:
-				dynamic "
-					act 'Get your tongue pierced with this piercing for 7,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'piercing_tongue3', <<ARGS[1]>>, 'karta'
-				"
-			end
-		end
-
-	else
-		if max(money, karta) < 4000:
-			'You don''t have enough money for this piercing.'
-		else
-			if money >= 4000:
-				dynamic "
-					act 'Buy this piercing for 4,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'piercing_tongue3', <<ARGS[1]>>, 'money'
-				"
-			end
-			if karta >= 4000:
-				dynamic "
-					act 'Buy this piercing for 4,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'piercing_tongue3', <<ARGS[1]>>, 'karta'
-				"
-			end
-		end
-	end
-
-	act 'Return': gt 'pirsingsalon', 'piercing_tongue'
-end
-
-if $ARGS[0] = 'piercing_tongue3':
-	if pcs_piercings['tongue'] = 0:
-		*clr
+	if salon_temp_state = 0 and pcs_piercings['tongue'] ! 0:
 		minut += 30
-		if $ARGS[2] = 'money': money -= 3000 else karta -= 3000
-
-		'<center><img src="images/locations/city/industrial/salon/pirsing.jpg"></center>'
-		'The tattooist disinfects the area, pierces your tongue and inserts your chosen piercing.'
-
-		gs 'pain', 5, 'tongue', 'pierce'
-
-	else
-		'You buy the piercing.'
+		salon_temp_state = 1
+		gs 'pain', 1, 'tongue', 'pierce'
 	end
 
-	if $ARGS[2] = 'money': money -= 4000 else karta -= 4000
-	gs 'piercing_management', 'add', 'tongue', ARGS[1]
-	gs 'stat'
+	gs 'shop_utils', 'display_func_managed', 'piercing_management', 'tongue', 1, 'tongue_image', 'shop'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-	end
+	act 'Return': killvar 'salon_temp_state' & gt 'pirsingsalon', 'start'
 end
 
-
 	!!----- Navel --------------------------------------------------
 
 if $ARGS[0] = 'piercing_navel':
+	gs 'shortgs', 'setloc', 'pirsingsalon', 'piercing_navel'
 	menu_off = 1
 	gs 'stat'
 
-	ps_total = func('piercing_management', 'totals', 'navel')
-	
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-		step = intro_custom_step
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-		step = 1
-	end
-	
-	ps_i = 1
-	:loopbelly_pir
-		*p '<a href="exec: gt ''pirsingsalon'', ''piercing_navel2'', <<ps_i>>"><img height="250" src="<<func(''piercing_management'', ''navel_image'', ps_i)>>"></a>'
-		ps_i += step
-	if ps_i <= ps_total: jump 'loopbelly_pir'
-end
-
-if $ARGS[0] = 'piercing_navel2':
-	'<center><img src="<<func(''piercing_management'', ''navel_image'', ARGS[1])>>"></center>'
-
-	if pcs_piercings['navel_<<ARGS[1]>>_owned'] = 1:
-		'You already own this piercing.'
-		act 'Return': gt 'pirsingsalon', 'piercing_navel'
-
-	elseif pcs_piercings['navel'] = 0:
-		if max(money, karta) < 8000:
-			'You cannot afford to get your belly button pierced with this piercing.'
-		else
-			if money >= 8000:
-				dynamic "
-					act 'Get your belly button pierced with these earrings for 8,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'piercing_navel3', <<ARGS[1]>>, 'money'
-				"
-			end
-			if karta >= 8000:
-				dynamic "
-					act 'Get your belly button pierced with these earrings for 8,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'piercing_navel3', <<ARGS[1]>>, 'karta'
-				"
-			end
-		end
-
-	else
-		if max(money, karta) < 5000:
-			'You don''t have enough money for this piercing.'
-		else
-			if money >= 5000:
-				dynamic "
-					act 'Buy this piercing for 5,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'piercing_navel3', <<ARGS[1]>>, 'money'
-				"
-			end
-			if karta >= 5000:
-				dynamic "
-					act 'Buy this piercing for 5,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'piercing_navel3', <<ARGS[1]>>, 'karta'
-				"
-			end
-		end
-	end
-
-	act 'Return': gt 'pirsingsalon', 'piercing_navel'
-end
-
-if $ARGS[0] = 'piercing_navel3':
-	if pcs_piercings['navel'] = 0:
-		*clr
+	if salon_temp_state = 0 and pcs_piercings['navel'] ! 0:
 		minut += 30
-		if $ARGS[2] = 'money': money -= 3000 else karta -= 3000
-
-		'<center><img src="<<func(''piercing_management'', ''navel_image'', ARGS[1])>>"></center>'
-		'The tattooist disinfects the area, pierces your belly button and inserts your chosen piercing.'
+		salon_temp_state = 1
 		gs 'pain', 1, 'tummy', 'pierce'
-
-	else
-		'You buy the piercing.'
 	end
 
-	if $ARGS[2] = 'money': money -= 5000 else karta -= 5000
-	gs 'piercing_management', 'add', 'navel', ARGS[1]
-	gs 'stat'
+	gs 'shop_utils', 'display_func_managed', 'piercing_management', 'navel', 1, 'navel_image', 'shop'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-	end
+	act 'Return': killvar 'salon_temp_state' & gt 'pirsingsalon', 'start'
 end
 
-
 	!!----- Nipples --------------------------------------------------
 
 if $ARGS[0] = 'piercing_nipples':
+	gs 'shortgs', 'setloc', 'pirsingsalon', 'piercing_nipples'
 	menu_off = 1
 	gs 'stat'
 
-	ps_total = func('piercing_management', 'totals', 'nipples')
-	
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-		step = intro_custom_step
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-		step = 1
-	end
-	
-	ps_i = 1
-	:loopnip_pir
-		*p '<a href="exec: gt ''pirsingsalon'', ''piercing_nipples2'', <<ps_i>>"><img height="250" src="<<func(''piercing_management'', ''nipples_image'', ps_i)>>"></a>'
-		ps_i += step
-	if ps_i <= ps_total: jump 'loopnip_pir'
-end
-
-if $ARGS[0] = 'piercing_nipples2':
-	'<center><img src="<<func(''piercing_management'', ''nipples_image'', ARGS[1])>>"></center>'
-
-	if pcs_piercings['nipples_<<ARGS[1]>>_owned'] = 1:
-		'You already own this piercing.'
-		act 'Return': gt 'pirsingsalon', 'piercing_brow'
-
-	elseif pcs_piercings['nipples'] = 0:
-		if max(money, karta) < 10000:
-			'You cannot afford to get your nipples pierced with this piercing.'
-		else
-			if money >= 10000:
-				dynamic "
-					act 'Get your nipples pierced with these earrings for 10,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'piercing_nipples3', <<ARGS[1]>>, 'money'
-				"
-			end
-			if karta >= 10000:
-				dynamic "
-					act 'Get your nipples pierced with these earrings for 10,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'piercing_nipples3', <<ARGS[1]>>, 'karta'
-				"
-			end
-		end
-
-	else
-		if max(money, karta) < 6000:
-			'You don''t have enough money for this piercing.'
-		else
-			if money >= 6000:
-				dynamic "
-					act 'Buy this piercing for 6,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'piercing_nipples3', <<ARGS[1]>>, 'money'
-				"
-			end
-			if karta >= 6000:
-				dynamic "
-					act 'Buy this piercing for 6,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'piercing_nipples3', <<ARGS[1]>>, 'karta'
-				"
-			end
-		end
-	end
-
-	act 'Return': gt 'pirsingsalon', 'piercing_nipples'
-end
-
-if $ARGS[0] = 'piercing_nipples3':
-	if pcs_piercings['nipples'] = 0:
-		*clr
+	if salon_temp_state = 0 and pcs_piercings['nipples'] ! 0:
 		minut += 30
-		if $ARGS[2] = 'money': money -= 4000 else karta -= 4000
-
-		'<center><img src="<<func(''piercing_management'', ''nipples_image'', ARGS[1])>>"></center>'
-		'The tattooist disinfects the area, pierces your nipples and inserts your chosen piercings.'
-		gs 'pain', 7, 'nipples', 'pierce'
-
-	else
-		'You buy the piercing.'
+		salon_temp_state = 1
+		gs 'pain', 1, 'nipples', 'pierce'
 	end
 
-	if $ARGS[2] = 'money': money -= 6000 else karta -= 6000
-	gs 'piercing_management', 'add', 'nipples', ARGS[1]
-	gs 'stat'
+	gs 'shop_utils', 'display_func_managed', 'piercing_management', 'nipples', 1, 'nipples_image', 'shop'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-	end
+	act 'Return': killvar 'salon_temp_state' & gt 'pirsingsalon', 'start'
 end
 
-
 	!!----- Pussy --------------------------------------------------
 
 if $ARGS[0] = 'piercing_pussy':
+	gs 'shortgs', 'setloc', 'pirsingsalon', 'piercing_pussy'
 	menu_off = 1
 	gs 'stat'
 
-	ps_total = func('piercing_management', 'totals', 'pussy')
-	
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-		step = intro_custom_step
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-		step = 1
-	end
-	
-	ps_i = 1
-	:looppubic_pir
-		*p '<a href="exec: gt ''pirsingsalon'', ''piercing_pussy2'', <<ps_i>>"><img height="250" src="<<func(''piercing_management'', ''pussy_image'', ps_i)>>"></a>'
-		ps_i += step
-	if ps_i <= ps_total: jump 'looppubic_pir'
-end
-
-if $ARGS[0] = 'piercing_pussy2':
-	'<center><img src="<<func(''piercing_management'', ''pussy_image'', ARGS[1])>>"></center>'
-
-	if pcs_piercings['pussy_<<ARGS[1]>>_owned'] = 1:
-		'You already own this piercing.'
-		act 'Return': gt 'pirsingsalon', 'piercing_brow'
-
-	elseif pcs_piercings['pussy'] = 0:
-		if max(money, karta) < 25000:
-			'You cannot afford to get your pussy pierced with this piercing.'
-		else
-			if money >= 25000:
-				dynamic "
-					act 'Get your pussy pierced with these earrings for 25,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'piercing_pussy3', <<ARGS[1]>>, 'money'
-				"
-			end
-			if karta >= 25000:
-				dynamic "
-					act 'Get your pussy pierced with these earrings for 25,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'piercing_pussy3', <<ARGS[1]>>, 'karta'
-				"
-			end
-		end
-
-	else
-		if max(money, karta) < 10000:
-			'You don''t have enough money for this piercing.'
-		else
-			if money >= 10000:
-				dynamic "
-					act 'Buy this piercing for 10,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'piercing_pussy3', <<ARGS[1]>>, 'money'
-				"
-			end
-			if karta >= 10000:
-				dynamic "
-					act 'Buy this piercing for 10,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'piercing_pussy3', <<ARGS[1]>>, 'karta'
-				"
-			end
-		end
-	end
-
-	act 'Return': gt 'pirsingsalon', 'piercing_pussy'
-end
-
-if $ARGS[0] = 'piercing_pussy3':
-	if pcs_piercings['pussy'] = 0:
-		*clr
+	if salon_temp_state = 0 and pcs_piercings['pussy'] ! 0:
 		minut += 30
-		if $ARGS[2] = 'money': money -= 15000 else karta -= 15000
-
-		'<center><img src="<<func(''piercing_management'', ''pussy_image'', ARGS[1])>>"></center>'
-		'The tattooist disinfects the area, pierces your pussy and inserts your chosen piercing.'
-		gs 'pain', 9, 'pubic', 'pierce'
-
-	else
-		'You buy the piercing.'
+		salon_temp_state = 1
+		gs 'pain', 1, 'pubic', 'pierce'
 	end
 
-	if $ARGS[2] = 'money': money -= 10000 else karta -= 10000
-	gs 'piercing_management', 'add', 'pussy', ARGS[1]
-	gs 'stat'
+	gs 'shop_utils', 'display_func_managed', 'piercing_management', 'pussy', 1, 'pussy_image', 'shop'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-	end
+	act 'Return': killvar 'salon_temp_state' & gt 'pirsingsalon', 'start'
 end
 
 
-
-
 	!!========================================================================!!
 	!!                                                                        !!
 	!!                                TATTOOS                                 !!
@@ -975,1149 +374,217 @@ end
 	!!----- Ankle --------------------------------------------------
 
 if $ARGS[0] = 'tattoo_ankle':
+	gs 'shortgs', 'setloc', 'pirsingsalon', 'tattoo_ankle'
 	menu_off = 1
 	gs 'stat'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-		step = intro_custom_step
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-		step = 1
-	end
-
-	if pcs_tattoos['ankle'] <= 0:
-		ps_total = func('tattoo_management', 'totals', 'ankle')
-		ps_i = 1
-		:looptatfoot
-			*p '<a href="exec: gt ''pirsingsalon'', ''tattoo_ankle2'', <<ps_i>>"><img height="250" src="<<func(''tattoo_management'', ''ankle_image'', ps_i)>>"></a>'
-			ps_i += step
-		if ps_i <= ps_total: jump 'looptatfoot'
-		*nl
+	gs 'shop_utils', 'display_func_managed', 'tattoo_management', 'ankle', 1, 'ankle_image', 'shop'
 
-	else
-		'<center><img src="<<func(''tattoo_management'', ''ankle_image'')>>"></center>'
-		'You already have this tattoo here.'
-	end
-end
-
-if $ARGS[0] = 'tattoo_ankle2':
-	'<center><img src="<<func(''tattoo_management'', ''ankle_image'', ARGS[1])>>"></center>'
-
-	if max(money, karta) < 8000:
-		'You cannot afford this tattoo.'
-	else
-		if money >= 8000:
-			dynamic "
-				act 'Get this tattoo 8,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'tattoo_ankle3', <<ARGS[1]>>, 'money'
-			"
-		end
-		if karta >= 8000:
-			dynamic "
-				act 'Get this tattoo 8,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'tattoo_ankle3', <<ARGS[1]>>, 'karta'
-			"
-		end
-	end
-
-	act 'Return': gt 'pirsingsalon', 'tattoo_ankle'
+	act 'Return': gt 'pirsingsalon', 'start'
 end
 
-if $ARGS[0] = 'tattoo_ankle3':
-	minut += 60
-	if $ARGS[2] = 'money': money -= 8000 else karta -= 8000
-	gs 'tattoo_management', 'add', 'ankle', ARGS[1]
-	gs 'stat'
-
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-	end
-end
-
-
 	!!----- Arm --------------------------------------------------
 
 if $ARGS[0] = 'tattoo_arm':
+	gs 'shortgs', 'setloc', 'pirsingsalon', 'tattoo_arm'
 	menu_off = 1
 	gs 'stat'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-		step = intro_custom_step
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-		step = 1
-	end
-
-	if pcs_tattoos['arm'] <= 0:
-		ps_total = func('tattoo_management', 'totals', 'arm')
-		ps_i = 1
-		:looptatarm
-			*p '<a href="exec: gt ''pirsingsalon'', ''tattoo_arm2'', <<ps_i>>"><img height="250" src="<<func(''tattoo_management'', ''arm_image'', ps_i)>>"></a>'
-			ps_i += step
-		if ps_i <= ps_total: jump 'looptatarm'
-
-	else
-		'<center><img src="<<func(''tattoo_management'', ''arm_image'')>>"></center>'
-		'You already have this tattoo here.'
-	end
-end
-
-if $ARGS[0] = 'tattoo_arm2':
-	'<center><img src="<<func(''tattoo_management'', ''arm_image'', ARGS[1])>>"></center>'
-
-	if max(money, karta) < 8000:
-		'You cannot afford this tattoo.'
-	else
-		if money >= 8000:
-			dynamic "
-				act 'Get this tattoo 8,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'tattoo_arm3', <<ARGS[1]>>, 'money'
-			"
-		end
-		if karta >= 8000:
-			dynamic "
-				act 'Get this tattoo 8,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'tattoo_arm3', <<ARGS[1]>>, 'karta'
-			"
-		end
-	end
-
-	act 'Return': gt 'pirsingsalon', 'tattoo_arm'
-end
+	gs 'shop_utils', 'display_func_managed', 'tattoo_management', 'arm', 1, 'arm_image', 'shop'
 
-if $ARGS[0] = 'tattoo_arm3':
-	minut += 60
-	if $ARGS[2] = 'money': money -= 8000 else karta -= 8000
-	gs 'tattoo_management', 'add', 'arm', ARGS[1]
-	gs 'stat'
-
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-	end
+	act 'Return': gt 'pirsingsalon', 'start'
 end
 
-
 	!!----- Ass --------------------------------------------------
 
 if $ARGS[0] = 'tattoo_ass':
+	gs 'shortgs', 'setloc', 'pirsingsalon', 'tattoo_ass'
 	menu_off = 1
 	gs 'stat'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-		step = intro_custom_step
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-		step = 1
-	end
-
-	if pcs_tattoos['ass'] <= 0:
-		ps_total = func('tattoo_management', 'totals', 'ass')
-		ps_i = 1
-		:looptatass
-			*p '<a href="exec: gt ''pirsingsalon'', ''tattoo_ass2'', <<ps_i>>"><img height="250" src="<<func(''tattoo_management'', ''ass_image'', ps_i)>>"></a>'
-			ps_i += step
-		if ps_i <= ps_total: jump 'looptatass'
-
-	else
-		'<center><img src="<<func(''tattoo_management'', ''ass_image'')>>"></center>'
-		'You already have this tattoo here.'
-	end
-end
-
-if $ARGS[0] = 'tattoo_ass2':
-	'<center><img src="<<func(''tattoo_management'', ''ass_image'', ARGS[1])>>"></center>'
-
-	if max(money, karta) < 10000:
-		'You cannot afford this tattoo.'
-	else
-		if money >= 10000:
-			dynamic "
-				act 'Get this tattoo 10,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'tattoo_ass3', <<ARGS[1]>>, 'money'
-			"
-		end
-		if karta >= 10000:
-			dynamic "
-				act 'Get this tattoo 10,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'tattoo_ass3', <<ARGS[1]>>, 'karta'
-			"
-		end
-	end
+	gs 'shop_utils', 'display_func_managed', 'tattoo_management', 'ass', 1, 'ass_image', 'shop'
 
-	act 'Return': gt 'pirsingsalon', 'tattoo_ass'
+	act 'Return': gt 'pirsingsalon', 'start'
 end
 
-if $ARGS[0] = 'tattoo_ass3':
-	minut += 60
-	if $ARGS[2] = 'money': money -= 10000 else karta -= 10000
-	gs 'tattoo_management', 'add', 'ass', ARGS[1]
-	gs 'stat'
-
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-	end
-end
-
-
 	!!----- Back --------------------------------------------------
 
 if $ARGS[0] = 'tattoo_back':
+	gs 'shortgs', 'setloc', 'pirsingsalon', 'tattoo_back'
 	menu_off = 1
 	gs 'stat'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-		step = intro_custom_step
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-		step = 1
-	end
-
-	if pcs_tattoos['back'] <= 0:
-		ps_total = func('tattoo_management', 'totals', 'back')
-		ps_i = 1
-		:looptatback
-			*p '<a href="exec: gt ''pirsingsalon'', ''tattoo_back2'', <<ps_i>>"><img height="250" src="<<func(''tattoo_management'', ''back_image'', ps_i)>>"></a>'
-			ps_i += step
-		if ps_i <= ps_total: jump 'looptatback'
-
-	else
-		'<center><img src="<<func(''tattoo_management'', ''back_image'')>>"></center>'
-		'You already have this tattoo here.'
-	end
-end
-
-if $ARGS[0] = 'tattoo_back2':
-	'<center><img src="<<func(''tattoo_management'', ''back_image'', ARGS[1])>>"></center>'
-
-	if max(money, karta) < 10000:
-		'You cannot afford this tattoo.'
-	else
-		if money >= 10000:
-			dynamic "
-				act 'Get this tattoo 10,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'tattoo_back3', <<ARGS[1]>>, 'money'
-			"
-		end
-		if karta >= 10000:
-			dynamic "
-				act 'Get this tattoo 10,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'tattoo_back3', <<ARGS[1]>>, 'karta'
-			"
-		end
-	end
+	gs 'shop_utils', 'display_func_managed', 'tattoo_management', 'back', 1, 'back_image', 'shop'
 
-	act 'Return': gt 'pirsingsalon', 'tattoo_back'
+	act 'Return': gt 'pirsingsalon', 'start'
 end
 
-if $ARGS[0] = 'tattoo_back3':
-	minut += 60
-	if $ARGS[2] = 'money': money -= 10000 else karta -= 10000
-	gs 'tattoo_management', 'add', 'back', ARGS[1]
-	gs 'stat'
-
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-	end
-end
-
-
 	!!----- Belly --------------------------------------------------
 
 if $ARGS[0] = 'tattoo_belly':
+	gs 'shortgs', 'setloc', 'pirsingsalon', 'tattoo_belly'
 	menu_off = 1
 	gs 'stat'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-		step = intro_custom_step
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-		step = 1
-	end
-
-	if pcs_tattoos['belly'] <= 0:
-		ps_total = func('tattoo_management', 'totals', 'belly')
-		ps_i = 1
-		:looptatbelly
-			*p '<a href="exec: gt ''pirsingsalon'', ''tattoo_belly2'', <<ps_i>>"><img height="250" src="<<func(''tattoo_management'', ''belly_image'', ps_i)>>"></a>'
-			ps_i += step
-		if ps_i <= ps_total: jump 'looptatbelly'
-		*nl
-
-	else
-		'<center><img src="<<func(''tattoo_management'', ''belly_image'')>>"></center>'
-		'You already have this tattoo here.'
-	end
-end
-
-if $ARGS[0] = 'tattoo_belly2':
-	'<center><img src="<<func(''tattoo_management'', ''belly_image'', ARGS[1])>>"></center>'
-
-	if max(money, karta) < 10000:
-		'You cannot afford this tattoo.'
-	else
-		if money >= 10000:
-			dynamic "
-				act 'Get this tattoo 10,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'tattoo_belly3', <<ARGS[1]>>, 'money'
-			"
-		end
-		if karta >= 10000:
-			dynamic "
-				act 'Get this tattoo 10,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'tattoo_belly3', <<ARGS[1]>>, 'karta'
-			"
-		end
-	end
-
-	act 'Return': gt 'pirsingsalon', 'tattoo_belly'
-end
+	gs 'shop_utils', 'display_func_managed', 'tattoo_management', 'belly', 1, 'belly_image', 'shop'
 
-if $ARGS[0] = 'tattoo_belly3':
-	minut += 60
-	if $ARGS[2] = 'money': money -= 10000 else karta -= 10000
-	gs 'tattoo_management', 'add', 'belly', ARGS[1]
-	gs 'stat'
-
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-	end
+	act 'Return': gt 'pirsingsalon', 'start'
 end
 
-
 	!!----- Breast --------------------------------------------------
 
 if $ARGS[0] = 'tattoo_breast':
+	gs 'shortgs', 'setloc', 'pirsingsalon', 'tattoo_breast'
 	menu_off = 1
 	gs 'stat'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-		step = intro_custom_step
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-		step = 1
-	end
-
-	if pcs_tattoos['breast'] <= 0:
-		ps_total = func('tattoo_management', 'totals', 'breast')
-		ps_i = 1
-		:looptatbreast
-			*p '<a href="exec: gt ''pirsingsalon'', ''tattoo_breast2'', <<ps_i>>"><img height="250" src="<<func(''tattoo_management'', ''breast_image'', ps_i)>>"></a>'
-			ps_i += step
-		if ps_i <= ps_total: jump 'looptatbreast'
-		*nl
-
-	else
-		'<center><img src="<<func(''tattoo_management'', ''breast_image'')>>"></center>'
-		'You already have this tattoo here.'
-	end
-end
-
-if $ARGS[0] = 'tattoo_breast2':
-	'<center><img src="<<func(''tattoo_management'', ''breast_image'', ARGS[1])>>"></center>'
-
-	if max(money, karta) < 15000:
-		'You cannot afford this tattoo.'
-	else
-		if money >= 15000:
-			dynamic "
-				act 'Get this tattoo 15,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'tattoo_breast3', <<ARGS[1]>>, 'money'
-			"
-		end
-		if karta >= 15000:
-			dynamic "
-				act 'Get this tattoo 15,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'tattoo_breast3', <<ARGS[1]>>, 'karta'
-			"
-		end
-	end
-
-	act 'Return': gt 'pirsingsalon', 'tattoo_breast'
-end
-
-if $ARGS[0] = 'tattoo_breast3':
-	minut += 60
-	if $ARGS[2] = 'money': money -= 15000 else karta -= 15000
-	gs 'tattoo_management', 'add', 'breast', ARGS[1]
-	gs 'stat'
+	gs 'shop_utils', 'display_func_managed', 'tattoo_management', 'breast', 1, 'breast_image', 'shop'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-	end
+	act 'Return': gt 'pirsingsalon', 'start'
 end
 
-
 	!!----- Chest --------------------------------------------------
 
 if $ARGS[0] = 'tattoo_chest':
+	gs 'shortgs', 'setloc', 'pirsingsalon', 'tattoo_chest'
 	menu_off = 1
 	gs 'stat'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-		step = intro_custom_step
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-		step = 1
-	end
+	gs 'shop_utils', 'display_func_managed', 'tattoo_management', 'chest', 1, 'chest_image', 'shop'
 
-	if pcs_tattoos['chest'] <= 0:
-		ps_total = func('tattoo_management', 'totals', 'chest')
-		ps_i = 1
-		:looptatchest
-			*p '<a href="exec: gt ''pirsingsalon'', ''tattoo_chest2'', <<ps_i>>"><img height="250" src="<<func(''tattoo_management'', ''chest_image'', ps_i)>>"></a>'
-			ps_i += step
-		if ps_i <= ps_total: jump 'looptatchest'
-
-	else
-		'<center><img src="<<func(''tattoo_management'', ''chest_image'')>>"></center>'
-		'You already have this tattoo here.'
-	end
-end
-
-if $ARGS[0] = 'tattoo_chest2':
-	'<center><img src="<<func(''tattoo_management'', ''chest_image'', ARGS[1])>>"></center>'
-
-	if max(money, karta) < 12000:
-		'You cannot afford this tattoo.'
-	else
-		if money >= 12000:
-			dynamic "
-				act 'Get this tattoo 12,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'tattoo_chest3', <<ARGS[1]>>, 'money'
-			"
-		end
-		if karta >= 12000:
-			dynamic "
-				act 'Get this tattoo 12,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'tattoo_chest3', <<ARGS[1]>>, 'karta'
-			"
-		end
-	end
-
-	act 'Return': gt 'pirsingsalon', 'tattoo_chest'
-end
-
-if $ARGS[0] = 'tattoo_chest3':
-	minut += 60
-	if $ARGS[2] = 'money': money -= 12000 else karta -= 12000
-	gs 'tattoo_management', 'add', 'chest', ARGS[1]
-	gs 'stat'
-
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-	end
+	act 'Return': gt 'pirsingsalon', 'start'
 end
 
-
 	!!----- Face --------------------------------------------------
 
 if $ARGS[0] = 'tattoo_face':
+	gs 'shortgs', 'setloc', 'pirsingsalon', 'tattoo_face'
 	menu_off = 1
 	gs 'stat'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-		step = intro_custom_step
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-		step = 1
-	end
+	gs 'shop_utils', 'display_func_managed', 'tattoo_management', 'face', 1, 'face_image', 'shop'
 
-	if pcs_tattoos['face'] <= 0:
-		ps_total = func('tattoo_management', 'totals', 'face')
-		ps_i = 1
-		:looptatface
-			*p '<a href="exec: gt ''pirsingsalon'', ''tattoo_face2'', <<ps_i>>"><img height="250" src="<<func(''tattoo_management'', ''face_image'', ps_i)>>"></a>'
-			ps_i += step
-		if ps_i <= ps_total: jump 'looptatface'
-		*nl
-
-	else
-		'<center><img src="<<func(''tattoo_management'', ''face_image'')>>"></center>'
-		'You already have this tattoo here.'
-	end
-end
-
-if $ARGS[0] = 'tattoo_face2':
-	'<center><img src="<<func(''tattoo_management'', ''face_image'', ARGS[1])>>"></center>'
-
-	if max(money, karta) < 10000:
-		'You cannot afford this tattoo.'
-	else
-		if money >= 10000:
-			dynamic "
-				act 'Get this tattoo 10,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'tattoo_face3', <<ARGS[1]>>, 'money'
-			"
-		end
-		if karta >= 10000:
-			dynamic "
-				act 'Get this tattoo 10,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'tattoo_face3', <<ARGS[1]>>, 'karta'
-			"
-		end
-	end
-
-	act 'Return': gt 'pirsingsalon', 'tattoo_face'
-end
-
-if $ARGS[0] = 'tattoo_face3':
-	minut += 60
-	if $ARGS[2] = 'money': money -= 10000 else karta -= 10000
-	gs 'tattoo_management', 'add', 'face', ARGS[1]
-	gs 'stat'
-
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-	end
+	act 'Return': gt 'pirsingsalon', 'start'
 end
 
-
 	!!----- Hand --------------------------------------------------
 
 if $ARGS[0] = 'tattoo_hand':
+	gs 'shortgs', 'setloc', 'pirsingsalon', 'tattoo_hand'
 	menu_off = 1
 	gs 'stat'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-		step = intro_custom_step
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-		step = 1
-	end
-
-	if pcs_tattoos['hand'] <= 0:
-		ps_total = func('tattoo_management', 'totals', 'hand')
-		ps_i = 1
-		:looptathand
-			*p '<a href="exec: gt ''pirsingsalon'', ''tattoo_hand2'', <<ps_i>>"><img height="250" src="<<func(''tattoo_management'', ''hand_image'', ps_i)>>"></a>'
-			ps_i += step
-		if ps_i <= ps_total: jump 'looptathand'
-
-	else
-		'<center><img src="<<func(''tattoo_management'', ''hand_image'')>>"></center>'
-		'You already have this tattoo here.'
-	end
-end
-
-if $ARGS[0] = 'tattoo_hand2':
-	'<center><img src="<<func(''tattoo_management'', ''hand_image'', ARGS[1])>>"></center>'
-
-	if max(money, karta) < 7000:
-		'You cannot afford this tattoo.'
-	else
-		if money >= 7000:
-			dynamic "
-				act 'Get this tattoo 7,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'tattoo_hand3', <<ARGS[1]>>, 'money'
-			"
-		end
-		if karta >= 7000:
-			dynamic "
-				act 'Get this tattoo 7,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'tattoo_hand3', <<ARGS[1]>>, 'karta'
-			"
-		end
-	end
-
-	act 'Return': gt 'pirsingsalon', 'tattoo_hand'
-end
-
-if $ARGS[0] = 'tattoo_hand3':
-	minut += 60
-	if $ARGS[2] = 'money': money -= 7000 else karta -= 7000
-	gs 'tattoo_management', 'add', 'hand', ARGS[1]
-	gs 'stat'
+	gs 'shop_utils', 'display_func_managed', 'tattoo_management', 'hand', 1, 'hand_image', 'shop'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-	end
+	act 'Return': gt 'pirsingsalon', 'start'
 end
 
-
 	!!----- Leg --------------------------------------------------
 
 if $ARGS[0] = 'tattoo_leg':
+	gs 'shortgs', 'setloc', 'pirsingsalon', 'tattoo_leg'
 	menu_off = 1
 	gs 'stat'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-		step = intro_custom_step
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-		step = 1
-	end
-
-	if pcs_tattoos['leg'] <= 0:
-		ps_total = func('tattoo_management', 'totals', 'leg')
-		ps_i = 1
-		:looptatleg
-			*p '<a href="exec: gt ''pirsingsalon'', ''tattoo_leg2'', <<ps_i>>"><img height="250" src="<<func(''tattoo_management'', ''leg_image'', ps_i)>>"></a>'
-			ps_i += step
-		if ps_i <= ps_total: jump 'looptatleg'
-		*nl
-
-	else
-		'<center><img src="<<func(''tattoo_management'', ''leg_image'')>>"></center>'
-		'You already have this tattoo here.'
-	end
-end
-
-if $ARGS[0] = 'tattoo_leg2':
-	'<center><img src="<<func(''tattoo_management'', ''leg_image'', ARGS[1])>>"></center>'
-
-	if max(money, karta) < 10000:
-		'You cannot afford this tattoo.'
-	else
-		if money >= 10000:
-			dynamic "
-				act 'Get this tattoo 10,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'tattoo_leg3', <<ARGS[1]>>, 'money'
-			"
-		end
-		if karta >= 10000:
-			dynamic "
-				act 'Get this tattoo 10,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'tattoo_leg3', <<ARGS[1]>>, 'karta'
-			"
-		end
-	end
+	gs 'shop_utils', 'display_func_managed', 'tattoo_management', 'leg', 1, 'leg_image', 'shop'
 
-	act 'Return': gt 'pirsingsalon', 'tattoo_leg'
+	act 'Return': gt 'pirsingsalon', 'start'
 end
 
-if $ARGS[0] = 'tattoo_leg3':
-	minut += 60
-	if $ARGS[2] = 'money': money -= 10000 else karta -= 10000
-	gs 'tattoo_management', 'add', 'leg', ARGS[1]
-	gs 'stat'
-
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-	end
-end
-
-
 	!!----- Lip --------------------------------------------------
 
 if $ARGS[0] = 'tattoo_lip':
+	gs 'shortgs', 'setloc', 'pirsingsalon', 'tattoo_lip'
 	menu_off = 1
 	gs 'stat'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-		step = intro_custom_step
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-		step = 1
-	end
-
-	if pcs_tattoos['lip'] <= 0:
-		ps_total = func('tattoo_management', 'totals', 'lip')
-		ps_i = 1
-		:looptatlip
-			*p '<a href="exec: gt ''pirsingsalon'', ''tattoo_lip2'', <<ps_i>>"><img height="250" src="<<func(''tattoo_management'', ''lip_image'', ps_i)>>"></a>'
-			ps_i += step
-		if ps_i <= ps_total: jump 'looptatlip'
+	gs 'shop_utils', 'display_func_managed', 'tattoo_management', 'lip', 1, 'lip_image', 'shop'
 
-	else
-		'<center><img src="<<func(''tattoo_management'', ''lip_image'')>>"></center>'
-		'You already have this tattoo here.'
-	end
+	act 'Return': gt 'pirsingsalon', 'start'
 end
 
-if $ARGS[0] = 'tattoo_lip2':
-	'<center><img src="<<func(''tattoo_management'', ''lip_image'', ARGS[1])>>"></center>'
-
-	if max(money, karta) < 5000:
-		'You cannot afford this tattoo.'
-	else
-		if money >= 5000:
-			dynamic "
-				act 'Get this tattoo 5,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'tattoo_lip3', <<ARGS[1]>>, 'money'
-			"
-		end
-		if karta >= 5000:
-			dynamic "
-				act 'Get this tattoo 5,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'tattoo_lip3', <<ARGS[1]>>, 'karta'
-			"
-		end
-	end
-
-	act 'Return': gt 'pirsingsalon', 'tattoo_lip'
-end
-
-if $ARGS[0] = 'tattoo_lip3':
-	minut += 60
-	if $ARGS[2] = 'money': money -= 5000 else karta -= 5000
-	gs 'tattoo_management', 'add', 'lip', ARGS[1]
-	gs 'stat'
-
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-	end
-end
-
-
 	!!----- Neck --------------------------------------------------
 
 if $ARGS[0] = 'tattoo_neck':
+	gs 'shortgs', 'setloc', 'pirsingsalon', 'tattoo_neck'
 	menu_off = 1
 	gs 'stat'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-		step = intro_custom_step
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-		step = 1
-	end
-
-	if pcs_tattoos['neck'] <= 0:
-		ps_total = func('tattoo_management', 'totals', 'neck')
-		ps_i = 1
-		:looptatneck
-			*p '<a href="exec: gt ''pirsingsalon'', ''tattoo_neck2'', <<ps_i>>"><img height="250" src="<<func(''tattoo_management'', ''neck_image'', ps_i)>>"></a>'
-			ps_i += step
-		if ps_i <= ps_total: jump 'looptatneck'
-
-	else
-		'<center><img src="<<func(''tattoo_management'', ''neck_image'')>>"></center>'
-		'You already have this tattoo here.'
-	end
-end
-
-if $ARGS[0] = 'tattoo_neck2':
-	'<center><img src="<<func(''tattoo_management'', ''neck_image'', ARGS[1])>>"></center>'
-
-	if max(money, karta) < 8000:
-		'You cannot afford this tattoo.'
-	else
-		if money >= 8000:
-			dynamic "
-				act 'Get this tattoo 8,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'tattoo_neck3', <<ARGS[1]>>, 'money'
-			"
-		end
-		if karta >= 8000:
-			dynamic "
-				act 'Get this tattoo 8,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'tattoo_neck3', <<ARGS[1]>>, 'karta'
-			"
-		end
-	end
-
-	act 'Return': gt 'pirsingsalon', 'tattoo_neck'
-end
-
-if $ARGS[0] = 'tattoo_neck3':
-	minut += 60
-	if $ARGS[2] = 'money': money -= 8000 else karta -= 8000
-	gs 'tattoo_management', 'add', 'neck', ARGS[1]
-	gs 'stat'
+	gs 'shop_utils', 'display_func_managed', 'tattoo_management', 'neck', 1, 'neck_image', 'shop'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-	end
+	act 'Return': gt 'pirsingsalon', 'start'
 end
 
-
 	!!----- Pussy --------------------------------------------------
 
 if $ARGS[0] = 'tattoo_pussy':
+	gs 'shortgs', 'setloc', 'pirsingsalon', 'tattoo_pussy'
 	menu_off = 1
 	gs 'stat'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-		step = intro_custom_step
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-		step = 1
-	end
-
-	if pcs_tattoos['pussy'] <= 0:
-		ps_total = func('tattoo_management', 'totals', 'pussy')
-		ps_i = 1
-		:looptatvag
-			*p '<a href="exec: gt ''pirsingsalon'', ''tattoo_pussy2'', <<ps_i>>"><img height="250" src="<<func(''tattoo_management'', ''pussy_image'', ps_i)>>"></a>'
-			ps_i += step
-		if ps_i <= ps_total: jump 'looptatvag'
-
-	else
-		'<center><img src="<<func(''tattoo_management'', ''pussy_image'')>>"></center>'
-		'You already have this tattoo here.'
-	end
-end
-
-if $ARGS[0] = 'tattoo_pussy2':
-	'<center><img src="<<func(''tattoo_management'', ''pussy_image'', ARGS[1])>>"></center>'
-
-	if max(money, karta) < 20000:
-		'You cannot afford this tattoo.'
-	else
-		if money >= 20000:
-			dynamic "
-				act 'Get this tattoo 20,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'tattoo_pussy3', <<ARGS[1]>>, 'money'
-			"
-		end
-		if karta >= 20000:
-			dynamic "
-				act 'Get this tattoo 20,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'tattoo_pussy3', <<ARGS[1]>>, 'karta'
-			"
-		end
-	end
-
-	act 'Return': gt 'pirsingsalon', 'tattoo_pussy'
-end
-
-if $ARGS[0] = 'tattoo_pussy3':
-	minut += 60
-	if $ARGS[2] = 'money': money -= 20000 else karta -= 20000
-	gs 'tattoo_management', 'add', 'pussy', ARGS[1]
-	gs 'stat'
+	gs 'shop_utils', 'display_func_managed', 'tattoo_management', 'pussy', 1, 'pussy_image', 'shop'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-	end
+	act 'Return': gt 'pirsingsalon', 'start'
 end
 
-
 	!!----- shoulder --------------------------------------------------
 
 if $ARGS[0] = 'tattoo_shoulder':
+	gs 'shortgs', 'setloc', 'pirsingsalon', 'tattoo_shoulder'
 	menu_off = 1
 	gs 'stat'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-		step = intro_custom_step
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-		step = 1
-	end
+	gs 'shop_utils', 'display_func_managed', 'tattoo_management', 'shoulder', 1, 'shoulder_image', 'shop'
 
-	if pcs_tattoos['shoulder'] <= 0:
-		ps_total = func('tattoo_management', 'totals', 'shoulder')
-		ps_i = 1
-		:looptatlech
-			*p '<a href="exec: gt ''pirsingsalon'', ''tattoo_shoulder2'', <<ps_i>>"><img height="250" src="<<func(''tattoo_management'', ''shoulder_image'', ps_i)>>"></a>'
-			ps_i += step
-		if ps_i <= ps_total: jump 'looptatlech'
-
-	else
-		'<center><img src="<<func(''tattoo_management'', ''shoulder_image'')>>"></center>'
-		'You already have this tattoo here.'
-	end
-end
-
-if $ARGS[0] = 'tattoo_shoulder2':
-	'<center><img src="<<func(''tattoo_management'', ''shoulder_image'', ARGS[1])>>"></center>'
-
-	if max(money, karta) < 8000:
-		'You cannot afford this tattoo.'
-	else
-		if money >= 8000:
-			dynamic "
-				act 'Get this tattoo 8,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'tattoo_shoulder3', <<ARGS[1]>>, 'money'
-			"
-		end
-		if karta >= 8000:
-			dynamic "
-				act 'Get this tattoo 8,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'tattoo_shoulder3', <<ARGS[1]>>, 'karta'
-			"
-		end
-	end
-
-	act 'Return': gt 'pirsingsalon', 'tattoo_shoulder'
-end
-
-if $ARGS[0] = 'tattoo_shoulder3':
-	minut += 60
-	if $ARGS[2] = 'money': money -= 8000 else karta -= 8000
-	gs 'tattoo_management', 'add', 'shoulder', ARGS[1]
-	gs 'stat'
-
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-	end
+	act 'Return': gt 'pirsingsalon', 'start'
 end
 
-
 	!!----- Side --------------------------------------------------
 
 if $ARGS[0] = 'tattoo_side':
+	gs 'shortgs', 'setloc', 'pirsingsalon', 'tattoo_side'
 	menu_off = 1
 	gs 'stat'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-		step = intro_custom_step
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-		step = 1
-	end
-
-	if pcs_tattoos['side'] <= 0:
-		ps_total = func('tattoo_management', 'totals', 'side')
-		ps_i = 1
-		:looptatside
-			*p '<a href="exec: gt ''pirsingsalon'', ''tattoo_side2'', <<ps_i>>"><img height="250" src="<<func(''tattoo_management'', ''side_image'', ps_i)>>"></a>'
-			ps_i += step
-		if ps_i <= ps_total: jump 'looptatside'
-
-	else
-		'<center><img src="<<func(''tattoo_management'', ''side_image'')>>"></center>'
-		'You already have this tattoo here.'
-	end
-end
-
-if $ARGS[0] = 'tattoo_side2':
-	'<center><img src="<<func(''tattoo_management'', ''side_image'', ARGS[1])>>"></center>'
-
-	if max(money, karta) < 12000:
-		'You cannot afford this tattoo.'
-	else
-		if money >= 12000:
-			dynamic "
-				act 'Get this tattoo 12,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'tattoo_side3', <<ARGS[1]>>, 'money'
-			"
-		end
-		if karta >= 12000:
-			dynamic "
-				act 'Get this tattoo 12,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'tattoo_side3', <<ARGS[1]>>, 'karta'
-			"
-		end
-	end
-
-	act 'Return': gt 'pirsingsalon', 'tattoo_side'
-end
-
-if $ARGS[0] = 'tattoo_side3':
-	minut += 60
-	if $ARGS[2] = 'money': money -= 12000 else karta -= 12000
-	gs 'tattoo_management', 'add', 'side', ARGS[1]
-	gs 'stat'
+	gs 'shop_utils', 'display_func_managed', 'tattoo_management', 'side', 1, 'side_image', 'shop'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-	end
+	act 'Return': gt 'pirsingsalon', 'start'
 end
 
-
 	!!----- Tramp --------------------------------------------------
 
 if $ARGS[0] = 'tattoo_tramp':
+	gs 'shortgs', 'setloc', 'pirsingsalon', 'tattoo_tramp'
 	menu_off = 1
 	gs 'stat'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-		step = intro_custom_step
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-		step = 1
-	end
-
-	if pcs_tattoos['tramp'] <= 0:
-		ps_total = func('tattoo_management', 'totals', 'tramp')
-		ps_i = 1
-		:looptatupb
-			*p '<a href="exec: gt ''pirsingsalon'', ''tattoo_tramp2'', <<ps_i>>"><img height="250" src="<<func(''tattoo_management'', ''tramp_image'', ps_i)>>"></a>'
-			ps_i += step
-		if ps_i <= ps_total: jump 'looptatupb'
-		*nl
-
-	else
-		'<center><img src="<<func(''tattoo_management'', ''tramp_image'')>>"></center>'
-		'You already have this tattoo here.'
-	end
-end
-
-if $ARGS[0] = 'tattoo_tramp2':
-	'<center><img src="<<func(''tattoo_management'', ''tramp_image'', ARGS[1])>>"></center>'
-
-	if max(money, karta) < 12000:
-		'You cannot afford this tattoo.'
-	else
-		if money >= 12000:
-			dynamic "
-				act 'Get this tattoo 12,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'tattoo_tramp3', <<ARGS[1]>>, 'money'
-			"
-		end
-		if karta >= 12000:
-			dynamic "
-				act 'Get this tattoo 12,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'tattoo_tramp3', <<ARGS[1]>>, 'karta'
-			"
-		end
-	end
-
-	act 'Return': gt 'pirsingsalon', 'tattoo_tramp'
-end
-
-if $ARGS[0] = 'tattoo_tramp3':
-	minut += 60
-	if $ARGS[2] = 'money': money -= 12000 else karta -= 12000
-	gs 'tattoo_management', 'add', 'tramp', ARGS[1]
-	gs 'stat'
+	gs 'shop_utils', 'display_func_managed', 'tattoo_management', 'tramp', 1, 'tramp_image', 'shop'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-	end
+	act 'Return': gt 'pirsingsalon', 'start'
 end
 
-
 	!!----- Under --------------------------------------------------
 
 if $ARGS[0] = 'tattoo_under':
+	gs 'shortgs', 'setloc', 'pirsingsalon', 'tattoo_under'
 	menu_off = 1
 	gs 'stat'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-		step = intro_custom_step
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-		step = 1
-	end
-
-	if pcs_tattoos['under'] <= 0:
-		ps_total = func('tattoo_management', 'totals', 'under')
-		ps_i = 1
-		:looptatunder
-			*p '<a href="exec: gt ''pirsingsalon'', ''tattoo_under2'', <<ps_i>>"><img height="250" src="<<func(''tattoo_management'', ''under_image'', ps_i)>>"></a>'
-			ps_i += step
-		if ps_i <= ps_total: jump 'looptatunder'
-		*nl
+	gs 'shop_utils', 'display_func_managed', 'tattoo_management', 'under', 1, 'under_image', 'shop'
 
-	else
-		'<center><img src="<<func(''tattoo_management'', ''under_image'')>>"></center>'
-		'You already have this tattoo here.'
-	end
+	act 'Return': gt 'pirsingsalon', 'start'
 end
 
-if $ARGS[0] = 'tattoo_under2':
-	'<center><img src="<<func(''tattoo_management'', ''under_image'', ARGS[1])>>"></center>'
-
-	if max(money, karta) < 12000:
-		'You cannot afford this tattoo.'
-	else
-		if money >= 12000:
-			dynamic "
-				act 'Get this tattoo 12,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'tattoo_under3', <<ARGS[1]>>, 'money'
-			"
-		end
-		if karta >= 12000:
-			dynamic "
-				act 'Get this tattoo 12,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'tattoo_under3', <<ARGS[1]>>, 'karta'
-			"
-		end
-	end
-
-	act 'Return': gt 'pirsingsalon', 'tattoo_under'
-end
-
-if $ARGS[0] = 'tattoo_under3':
-	minut += 60
-	if $ARGS[2] = 'money': money -= 12000 else karta -= 12000
-	gs 'tattoo_management', 'add', 'under', ARGS[1]
-	gs 'stat'
-
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-	end
-end
-
-
 	!!----- Wrist --------------------------------------------------
 
 if $ARGS[0] = 'tattoo_wrist':
+	gs 'shortgs', 'setloc', 'pirsingsalon', 'tattoo_wrist'
 	menu_off = 1
 	gs 'stat'
 
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-		step = intro_custom_step
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-		step = 1
-	end
-
-	if pcs_tattoos['wrist'] <= 0:
-		ps_total = func('tattoo_management', 'totals', 'wrist')
-		ps_i = 1
-		:looptatwrist
-			*p '<a href="exec: gt ''pirsingsalon'', ''tattoo_wrist2'', <<ps_i>>"><img height="250" src="<<func(''tattoo_management'', ''wrist_image'', ps_i)>>"></a>'
-			ps_i += step
-		if ps_i <= ps_total: jump 'looptatwrist'
+	gs 'shop_utils', 'display_func_managed', 'tattoo_management', 'wrist', 1, 'wrist_image', 'shop'
 
-	else
-		'<center><img src="<<func(''tattoo_management'', ''wrist_image'')>>"></center>'
-		'You already have this tattoo here.'
-	end
+	act 'Return': gt 'pirsingsalon', 'start'
 end
 
-if $ARGS[0] = 'tattoo_wrist2':
-	'<center><img src="<<func(''tattoo_management'', ''wrist_image'', ARGS[1])>>"></center>'
-
-	if max(money, karta) < 7000:
-		'You cannot afford this tattoo.'
-	else
-		if money >= 7000:
-			dynamic "
-				act 'Get this tattoo 7,000 <b>₽</b> (cash)': xgt 'pirsingsalon', 'tattoo_wrist3', <<ARGS[1]>>, 'money'
-			"
-		end
-		if karta >= 7000:
-			dynamic "
-				act 'Get this tattoo 7,000 <b>₽</b> (card)': xgt 'pirsingsalon', 'tattoo_wrist3', <<ARGS[1]>>, 'karta'
-			"
-		end
-	end
-
-	act 'Return': gt 'pirsingsalon', 'tattoo_wrist'
-end
-
-if $ARGS[0] = 'tattoo_wrist3':
-	minut += 60
-	if $ARGS[2] = 'money': money -= 12000 else karta -= 12000
-	gs 'tattoo_management', 'add', 'wrist', ARGS[1]
-	gs 'stat'
-
-	if intro_custom_shop_return = 1:
-		act 'Return': gt 'intro_customization', 'modclo'
-	else
-		act 'Return': gt 'pirsingsalon', 'start'
-	end
-end
-
-
-
-! Cleanup
-
-killvar 'ps_i'
-killvar 'ps_total'
-
-
 --- pirsingsalon ---------------------------------

+ 44 - 1
locations/shop_utils.qsrc

@@ -10,7 +10,7 @@ if $ARGS[0] = 'shop':
 
 			if (clothingfilter['quality'] = 0 and CloQuality = shop_display['clo_i']) or (clothingfilter['inhibition'] = 0 and CloInhibit = shop_display['clo_i']) or clothingfilter['number'] = 0:
 				if clothingfilter['inc'] = 1 and clothingfilter['only'] = 1:
-					$result = '<a href="exec: gt ''clothing'', ''view_clothing_item'', ''<<$shop_display[''variable'']>>'', <<shop_display[''i'']>>, ''shop''"><img height="250" src="<<$shop_display[''item_img_path'']>>/<<shop_display[''i'']>>.jpg"></a>'
+					$result = '<a href="exec: gt ''clothing'', ''view_clothing_item'', ''shop'', ''<<$shop_display[''variable'']>>'', <<shop_display[''i'']>>"><img height="250" src="<<$shop_display[''item_img_path'']>>/<<shop_display[''i'']>>.jpg"></a>'
 				end
 			end
 		end
@@ -63,6 +63,10 @@ if $ARGS[0] = 'shop':
 		if dyneval('result = <<$shop_display[''variable'']>>_purses[shop_display[''i'']]') = 0:
 			$result = '<a href="exec: gt ''purses'', ''view_purse_item'', ''shop'', ''<<$shop_display[''variable'']>>'', <<shop_display[''i'']>>"><img height="250" src="<<$shop_display[''item_img_path'']>>/<<shop_display[''i'']>>.jpg"></a>'
 		end
+
+	elseif $ARGS[1] = 'func_managed':
+		$result = '<a href="exec: gt ''<<$shop_display[''main_func_name'']>>'', ''view_item'', ''shop'', ''<<$shop_display[''item_type'']>>'', <<shop_display[''i'']>>"><img height="250" src="<<func($shop_display[''main_func_name''], $shop_display[''img_func_name''], shop_display[''i''])>>"></a>'
+	
 	end
 
 	exit
@@ -360,5 +364,44 @@ if $ARGS[0] = 'display_purses':
 	killvar 'shop_display'
 end
 
+! The file managing your item MUST implement the following funcitons
+!	- 'totals' which returns the max number of items of the specified type
+! 	- 'view_item' which takes 3 arguments and handles displaying, buying and any other related fuctionalities 
+!		- 'action_type' (shop, wardrobe, etc)
+! 		- 'type' 
+!		- 'index'
+! 	- individual functons for each type that return an image of the item based on its index
+! 
+! Arguments for this function are:
+! [1] - name of file that manages the item
+! [2] - item type
+! [3] - loop step
+! [4] - image function name
+! [5] - link type
+! [6] - loop index start offset {OPTIONAL}
+! Populate the 'shop_display_exceptions[]' array with the index of the outfits you want excluded from the display.
+if $ARGS[0] = 'display_func_managed':
+	$shop_display['main_func_name'] = $ARGS[1]
+	$shop_display['item_type'] = $ARGS[2]
+	$shop_display['img_func_name'] = $ARGS[4]
+
+
+	total = func($shop_display['main_func_name'], 'totals', $ARGS[2])
+
+	if total <= 0:
+		killvar 'shop_display'
+		exit
+	end
+
+	shop_display['i'] = 1 + ARGS[6]
+	:func_managed_main_loop
+	if shop_display['i'] <= total:
+		if arrpos('shop_display_exception', shop_display['i']) < 0:
+			*p func('shop_utils', $ARGS[5], 'func_managed')
+		end
+		shop_display['i'] += ARGS[3]
+		jump 'func_managed_main_loop'
+	end
+end
 
 --- shop_utils ---------------------------------

+ 7 - 0
locations/tattoo_attributes.qsrc

@@ -0,0 +1,7 @@
+# tattoo_attributes
+
+TatPrice = 0
+
+gs '$attributes_tattoo_<<$ARGS[0]>>', ARGS[1]
+
+--- tattoo_attributes ---------------------------------

+ 41 - 0
locations/tattoo_management.qsrc

@@ -88,6 +88,47 @@ if $ARGS[0] = 'count':
 end
 
 
+! [1] - payment method
+! [2] - slot
+! [3] - index
+if $ARGS[0] = 'buy':
+	if $ARGS[1] = 'money': 
+		money -= price 
+	else 
+		karta -= price
+	end
+
+	gs 'tattoo_management', 'add', $ARGS[2], ARGS[3]
+	gs 'tattoo_management', 'count'
+	gs 'stat'
+
+	gt $loc, $loc_arg
+end
+
+! [1] - action_type
+! [2] - slot
+! [3] - index
+if $ARGS[0] = 'view_item':
+	gs 'tattoo_attributes', $ARGS[2], ARGS[3]
+
+	'<center><img src="<<func(''tattoo_management'', ''<<$ARGS[2]>>_image'', ARGS[3])>>"></center>'
+
+	price = TatPrice
+
+	if max(money, karta) < price:
+		'You cannot afford this tattoo.'
+		act 'Return': gt $loc, $loc_arg
+	else
+		if money >= price:
+			act 'Get this tattoo <<price>> <b>₽</b> (cash)': gt 'tattoo_management', 'buy', 'money', $ARGS[2], ARGS[3]
+		end
+		if karta >= price:
+			act 'Get this tattoo <<price>> <b>₽</b> (card)': gt 'tattoo_management', 'buy', 'karta', $ARGS[2], ARGS[3]
+		end
+		act 'Return': gt $loc, $loc_arg
+	end
+end
+
 if $ARGS[0] = 'ankle_image':
 	if ARGS[1] = 0: ARGS[1] = pcs_tattoos['ankle']
 	if ARGS[1] < 0: ARGS[1] = -ARGS[1]

+ 2 - 1
locations/vasilyhome.qsrc

@@ -31,11 +31,13 @@ if $ARGS[0] = 'home':
 			'You knock on the door, but no one comes to answer. It seems like nobody is home.'
 			if npc_rel['A112'] >= 70: 'You could still enter with the key that Sergey gave you.' & act 'Unlock the door and enter':gt 'vasilyhome', 'hallway'
 		elseif hour >= 16 and hour <= 19:
+			*clr & cla
 			'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big112.jpg"></center>'
 			'When you knock on the door, <<$serg_obr>> Sergey answers it.'
 			'"Oh, hello <<$pcs_nickname>>," he shrugs. "If you''re looking for Vasily, he''s not here, and I don''t know when he''ll be back."'
 			if npc_rel['A112'] >= 50: '"You can come in and wait for him if you want," he offers.' & act 'Enter':gt 'vasilyhome', 'hallway'
 		elseif (week = 5 or week = 6) and hour >= 20:
+			*clr & cla
 			'<center><img <<$set_imgh>> src="images/characters/shared/headshots_main/big112.jpg"></center>'
 			'When you knock on the door, <<$serg_obr>> Sergey answers it.'
 			'"Oh, hello <<$pcs_nickname>>," he shrugs. "If you''re looking for Vasily, he''s not here. He''s probably at the disco with everyone else."'
@@ -1371,4 +1373,3 @@ if $ARGS[0] = 'vasily_asleep2':
 end
 
 --- vasilyhome ---------------------------------
-