Fix hair, dick around with new game screen.
[18plus-7leafadventure.git] / src / org / sevenchan / dongs / screens / SuperStoreScreen.as
blob36ca77b9f3d2b9601bb2dbc1a0bd9d541ac06da4
1 package org.sevenchan.dongs.screens
3 import flash.utils.*;
4 import org.sevenchan.AdventureController;
5 import org.sevenchan.dongs.ActionNode;
6 import org.sevenchan.dongs.bodyparts.Hair;
7 import org.sevenchan.dongs.bodyparts.IBodyPart;
8 import org.sevenchan.dongs.Creature;
9 import org.sevenchan.dongs.enchantment.Corruption;
10 import org.sevenchan.dongs.enchantment.Hunger;
11 import org.sevenchan.dongs.enchantment.Paralyze;
12 import org.sevenchan.dongs.enchantment.WindBlessing;
13 import org.sevenchan.dongs.INode;
14 import org.sevenchan.dongs.Item;
15 import org.sevenchan.dongs.MenuNode;
17 /**
18 * ...
19 * @author Harbinger
21 public class SuperStoreScreen extends Encounter
23 private var title:String = "";
24 private var priceoffset:Number = 0;
25 private var dickincrement:Number = 0;
26 private var type:int = 0;
27 private var inventory:Array = [];
29 public static function push():void
31 AdventureController.screenQueue.write(new SuperStoreScreen());
34 public function SuperStoreScreen()
36 super(null);
37 setup(0, 6, "WelMart");
38 inventory = [];
39 for each (var item:Item in Item.Registry)
41 var i:Item = item.copy();
42 i.amount = 100;
43 inventory.push(i);
46 currentItem.clearChildren();
47 // Buy:
48 // Body Parts:
49 // Transformations:
50 // Items:
51 // Enchantments:
52 // Pregnancies:
53 // Leave
55 var BuyMenu:MenuNode = currentItem.pushMenu("Buy", "Buy anything. Literally.");
56 var BuyBodyParts:MenuNode = BuyMenu.pushMenu("BodyParts", "Buy any kind of body part under the sun.");
58 var ArmsMenu:MenuNode = BuyBodyParts.pushMenu("Arms", "");
59 var AssholesMenu:MenuNode = BuyBodyParts.pushMenu("Assholes", "");
60 var BreastsMenu:MenuNode = BuyBodyParts.pushMenu("Breasts", "");
61 var EyesMenu:MenuNode = BuyBodyParts.pushMenu("Eyes", "");
62 var HairMenu:MenuNode = BuyBodyParts.pushMenu("Hair", "");
63 var LegsMenu:MenuNode = BuyBodyParts.pushMenu("Legs", "");
64 var PenisMenu:MenuNode = BuyBodyParts.pushMenu("Penis", "");
65 var SkinMenu:MenuNode = BuyBodyParts.pushMenu("Skin", "");
66 var TesticleMenu:MenuNode = BuyBodyParts.pushMenu("Testicle", "");
67 var VaginaMenu:MenuNode = BuyBodyParts.pushMenu("Vagina", "");
68 var WingMenu:MenuNode = BuyBodyParts.pushMenu("Wing", "");
70 for each (var name:XML in describeType(BodyPartRegistry)..accessor.@name)
72 var partname:String = name.toString();
73 var bpo:* = BodyPartRegistry[partname];
74 if (bpo is IBodyPart)
76 var bp:IBodyPart = (bpo as IBodyPart);
77 trace(bp, bp.category);
78 switch (bp.category)
80 case "arms":
81 ArmsMenu.pushAction(bp.name, 250, bp.getShortDescr(), function(ply:Creature, node:ActionNode, o:*):Boolean
83 ply.arms.push(o as IBodyPart);
84 return true;
85 }, bp);
86 break;
87 case "assholes":
88 AssholesMenu.pushAction(bp.name, 100, bp.getShortDescr(), function(ply:Creature, node:ActionNode, o:*):Boolean
90 ply.assholes.push(o as IBodyPart);
91 return true;
92 }, bp);
93 break;
94 case "breasts":
95 BreastsMenu.pushAction(bp.name, 250, bp.getShortDescr(), function(ply:Creature, node:ActionNode, o:*):Boolean
97 ply.breasts.push(o as IBodyPart);
98 return true;
99 }, bp);
100 break;
101 case "hair":
102 HairMenu.pushAction(bp.name, 250, bp.getShortDescr(), function(ply:Creature, node:ActionNode, o:*):Boolean
104 ply.hair = bp as Hair;
105 return true;
106 }, bp);
107 break;
108 case "legs":
109 LegsMenu.pushAction(bp.name, 250, bp.getShortDescr(), function(ply:Creature, node:ActionNode, o:*):Boolean
111 ply.legs.push(o as IBodyPart);
112 return true;
113 }, bp);
114 break;
115 case "dicks":
116 PenisMenu.pushAction(bp.name, 100, bp.getShortDescr(), function(ply:Creature, node:ActionNode, o:*):Boolean
118 ply.dicks.push(o as IBodyPart);
119 return true;
120 }, bp);
121 break;
122 case "balls":
123 TesticleMenu.pushAction(bp.name, 100, bp.getShortDescr(), function(ply:Creature, node:ActionNode, o:*):Boolean
125 ply.balls.push(o as IBodyPart);
126 return true;
127 }, bp);
128 break;
129 case "vaginas":
130 VaginaMenu.pushAction(bp.name, 250, bp.getShortDescr(), function(ply:Creature, node:ActionNode, o:*):Boolean
132 ply.vaginas.push(o as IBodyPart);
133 return true;
134 }, bp);
135 break;
136 case "wings":
137 WingMenu.pushAction(bp.name, 250, bp.getShortDescr(), function(ply:Creature, node:ActionNode, o:*):Boolean
139 ply.wings.push(o as IBodyPart);
140 return true;
141 }, bp);
142 break;
147 var BuyEnchantments:MenuNode = BuyMenu.pushMenu("Enchant", "Buy any enchantment or curse possible.");
150 BuyEnchantments.pushAction("Corruption", 0, "Add +10 Corruption", function(ply:Creature, node:ActionNode, o:*):Boolean
152 ply.addEnchantment(new Corruption(10));
153 return true;
155 BuyEnchantments.pushAction("Hunger(Egg)", 0, "Add hunger for Harpy Eggs.", function(ply:Creature, node:ActionNode, o:*):Boolean
157 ply.addEnchantment(new Hunger(ItemRegistry.DARK_HARPY_EGG.id, 1));
158 return true;
161 BuyEnchantments.pushAction("Hunger(Gonad)", 0, "Add hunger for gonad.", function(ply:Creature, node:ActionNode, o:*):Boolean
163 ply.addEnchantment(new Hunger(ItemRegistry.SPIDER_GONAD.id, 2));
164 return true;
167 BuyEnchantments.pushAction("Paralyze", 0, "Duh, 5 turns", function(ply:Creature, node:ActionNode, o:*):Boolean
169 ply.addEnchantment(new Paralyze());
170 return true;
173 BuyEnchantments.pushAction("WindBless", 1500, "Add wind blessing", function(ply:Creature, node:ActionNode, o:*):Boolean
175 ply.addEnchantment(new WindBlessing());
176 return true;
179 var BuyItems:MenuNode = BuyMenu.pushMenu("Items", "Any materialistic item you could dream of.");
180 for each (var ii:Item in Item.Registry)
182 BuyItems.pushAction(ii.name, ii.value, ii.descr, function(ply:Creature, node:ActionNode, o:*):Boolean
184 ply.addToInventory(o as Item);
185 return true;
186 }, ii);
188 var BuyTransformations:MenuNode = BuyMenu.pushMenu("Preg", "Order up any kind of pregnancy.", needsOriface);
192 public function needsOriface(ply:Creature, node:MenuNode):Boolean
194 return ply.assholes.length > 0 || ply.vaginas.length > 0;
197 private function setup(po:Number, i:Number, t:String):void
199 this.title = t;
200 this.priceoffset = po;
201 this.dickincrement = i;
204 override public function processButtonPress(id:int):Boolean
206 clearButtons();
207 if (abort)
209 return true;
211 switch (id)
213 case-1:
214 onStartupScreen();
215 appendMenu();
216 updateScreen();
217 return false;
218 break;
219 case 0:
220 if (currentItem.parent == null)
222 onLeaving();
223 return true;
225 else
227 currentItem = currentItem.parent;
228 text = currentItem.content;
229 appendMenu();
230 updateScreen();
231 return false;
233 break;
234 default:
235 var nci:INode = currentItem.children[id - 1];
236 var ret:Boolean = false;
237 if (nci is ActionNode)
239 ret = (ActionNode(nci)).invoke(this, this.main.player, (nci as ActionNode).arg);
241 else
243 if ((MenuNode(nci)).canSwitchTo(main.player, subject, this))
245 currentItem = nci;
248 if (!abort)
249 text = nci.content;
250 if (!ret && !abort)
252 appendMenu();
254 updateScreen();
255 return ret;
257 return false;
260 override public function getScreenText():String
262 return text;