1 package org
.sevenchan
.dongs
.screens
4 import org
.sevenchan
.AdventureController
;
5 import org
.sevenchan
.dongs
.ActionNode
;
6 import org
.sevenchan
.dongs
.bodyparts
.Arm
;
7 import org
.sevenchan
.dongs
.bodyparts
.Breast
;
8 import org
.sevenchan
.dongs
.bodyparts
.Hair
;
9 import org
.sevenchan
.dongs
.bodyparts
.IBodyPart
;
10 import org
.sevenchan
.dongs
.bodyparts
.Penis
;
11 import org
.sevenchan
.dongs
.Creature
;
12 import org
.sevenchan
.dongs
.enchantment
.Corruption
;
13 import org
.sevenchan
.dongs
.enchantment
.Hunger
;
14 import org
.sevenchan
.dongs
.enchantment
.Paralyze
;
15 import org
.sevenchan
.dongs
.enchantment
.WindBlessing
;
16 import org
.sevenchan
.dongs
.INode
;
17 import org
.sevenchan
.dongs
.Item
;
18 import org
.sevenchan
.dongs
.items
.GoldPotion
;
19 import org
.sevenchan
.dongs
.items
.PinkPotion
;
20 import org
.sevenchan
.dongs
.items
.Potion
;
21 import org
.sevenchan
.dongs
.items
.SpiderEgg
;
22 import org
.sevenchan
.dongs
.MenuNode
;
23 import org
.sevenchan
.dongs
.Screen;
29 public class SuperStoreScreen
extends Encounter
31 private var title
:String = "";
32 private var priceoffset
:Number = 0;
33 private var dickincrement
:Number = 0;
34 private var type
:int = 0;
35 private var inventory
:Array = [];
37 public static function push
():void
39 AdventureController
.screenQueue
.write
(new SuperStoreScreen
());
42 public function SuperStoreScreen
()
45 setup
(0, 6, "WelMart");
47 for each (var item
:Item
in Item
.Registry
)
49 var i
:Item
= item
.copy
();
54 currentItem
.clearChildren
();
63 var BuyMenu
:MenuNode
= currentItem
.pushMenu
("Buy", "Buy anything. Literally.");
64 var BuyBodyParts
:MenuNode
= BuyMenu
.pushMenu
("BodyParts", "Buy any kind of body part under the sun.");
66 var ArmsMenu
:MenuNode
= BuyBodyParts
.pushMenu
("Arms", "");
67 var AssholesMenu
:MenuNode
= BuyBodyParts
.pushMenu
("Assholes", "");
68 var BreastsMenu
:MenuNode
= BuyBodyParts
.pushMenu
("Breasts", "");
69 var EyesMenu
:MenuNode
= BuyBodyParts
.pushMenu
("Eyes", "");
70 var HairMenu
:MenuNode
= BuyBodyParts
.pushMenu
("Hair", "");
71 var LegsMenu
:MenuNode
= BuyBodyParts
.pushMenu
("Legs", "");
72 var PenisMenu
:MenuNode
= BuyBodyParts
.pushMenu
("Penis", "");
73 var SkinMenu
:MenuNode
= BuyBodyParts
.pushMenu
("Skin", "");
74 var TesticleMenu
:MenuNode
= BuyBodyParts
.pushMenu
("Testicle", "");
75 var VaginaMenu
:MenuNode
= BuyBodyParts
.pushMenu
("Vagina", "");
76 var WingMenu
:MenuNode
= BuyBodyParts
.pushMenu
("Wing", "");
78 for each (var name
:XML in describeType
(BodyPartRegistry
)..accessor
.@name
)
80 var partname
:String = name
.toString
();
81 var bpo
:* = BodyPartRegistry
[partname
];
84 var bp
:IBodyPart
= (bpo
as IBodyPart
);
85 trace
(bp
, bp
.category
);
89 ArmsMenu
.pushAction
(bp
.name
, 250, bp
.getShortDescr
(), function(ply
:Creature
, node
:ActionNode
, o
:*):Boolean
91 ply
.arms
.push
(o
as IBodyPart
);
96 AssholesMenu
.pushAction
(bp
.name
, 100, bp
.getShortDescr
(), function(ply
:Creature
, node
:ActionNode
, o
:*):Boolean
98 ply
.assholes
.push
(o
as IBodyPart
);
103 BreastsMenu
.pushAction
(bp
.name
, 250, bp
.getShortDescr
(), function(ply
:Creature
, node
:ActionNode
, o
:*):Boolean
105 ply
.breasts
.push
(o
as IBodyPart
);
110 HairMenu
.pushAction
(bp
.name
, 250, bp
.getShortDescr
(), function(ply
:Creature
, node
:ActionNode
, o
:*):Boolean
112 ply
.hair
= bp
as Hair
;
117 LegsMenu
.pushAction
(bp
.name
, 250, bp
.getShortDescr
(), function(ply
:Creature
, node
:ActionNode
, o
:*):Boolean
119 ply
.legs
.push
(o
as IBodyPart
);
124 PenisMenu
.pushAction
(bp
.name
, 100, bp
.getShortDescr
(), function(ply
:Creature
, node
:ActionNode
, o
:*):Boolean
126 ply
.dicks
.push
(o
as IBodyPart
);
131 TesticleMenu
.pushAction
(bp
.name
, 100, bp
.getShortDescr
(), function(ply
:Creature
, node
:ActionNode
, o
:*):Boolean
133 ply
.balls
.push
(o
as IBodyPart
);
138 VaginaMenu
.pushAction
(bp
.name
, 250, bp
.getShortDescr
(), function(ply
:Creature
, node
:ActionNode
, o
:*):Boolean
140 ply
.vaginas
.push
(o
as IBodyPart
);
145 WingMenu
.pushAction
(bp
.name
, 250, bp
.getShortDescr
(), function(ply
:Creature
, node
:ActionNode
, o
:*):Boolean
147 ply
.wings
.push
(o
as IBodyPart
);
155 var BuyEnchantments
:MenuNode
= BuyMenu
.pushMenu
("Enchant", "Buy any enchantment or curse possible.");
158 BuyEnchantments
.pushAction
("Corruption", 0, "Add +10 Corruption", function(ply
:Creature
, node
:ActionNode
, o
:*):Boolean
160 ply
.addEnchantment
(new Corruption
(10));
163 BuyEnchantments
.pushAction
("Hunger(Egg)", 0, "Add hunger for Harpy Eggs.", function(ply
:Creature
, node
:ActionNode
, o
:*):Boolean
165 ply
.addEnchantment
(new Hunger
(ItemRegistry
.DARK_HARPY_EGG
.id
, 1));
169 BuyEnchantments
.pushAction
("Hunger(Gonad)", 0, "Add hunger for gonad.", function(ply
:Creature
, node
:ActionNode
, o
:*):Boolean
171 ply
.addEnchantment
(new Hunger
(ItemRegistry
.SPIDER_GONAD
.id
, 2));
175 BuyEnchantments
.pushAction
("Paralyze", 0, "Duh, 5 turns", function(ply
:Creature
, node
:ActionNode
, o
:*):Boolean
177 ply
.addEnchantment
(new Paralyze
());
181 BuyEnchantments
.pushAction
("WindBless", 1500, "Add wind blessing", function(ply
:Creature
, node
:ActionNode
, o
:*):Boolean
183 ply
.addEnchantment
(new WindBlessing
());
187 var BuyItems
:MenuNode
= BuyMenu
.pushMenu
("Items", "Any materialistic item you could dream of.");
188 for each (var item
:Item
in Item
.Registry
)
190 BuyItems
.pushAction
(item
.name
, item
.value
, item
.descr
, function(ply
:Creature
, node
:ActionNode
, o
:*):Boolean
192 ply
.addToInventory
(o
as Item
);
196 var BuyTransformations
:MenuNode
= BuyMenu
.pushMenu
("Preg", "Order up any kind of pregnancy.", needsOriface
);
200 public function needsOriface
(ply
:Creature
, node
:MenuNode
):Boolean
202 return ply
.assholes
.length
> 0 || ply
.vaginas
.length
> 0;
205 private function setup
(po
:Number, i
:Number, t
:String):void
208 this.priceoffset
= po
;
209 this.dickincrement
= i
;
212 override public function processButtonPress
(id
:int):Boolean
228 if (currentItem
.parent
== null)
235 currentItem
= currentItem
.parent
;
236 text
= currentItem
.content
;
243 var nci
:INode
= currentItem
.children
[id
- 1];
244 var ret
:Boolean = false;
245 if (nci
is ActionNode
)
247 ret
= (ActionNode
(nci
)).invoke
(this, this.main
.player
, (nci
as ActionNode
).arg
);
251 if ((MenuNode
(nci
)).canSwitchTo
(main
.player
, subject
, this))
268 override public function getScreenText
():String