Initial commit (r9)
[18plus-7leafadventure.git] / src / org / sevenchan / dongs / Town.as
blob7fc49b2531c8ea3d3ca1f0ddcde659f51b0fe7ca
1 package org.sevenchan.dongs
3 import org.sevenchan.dongs.creature.Player;
4 import org.sevenchan.dongs.screens.InventoryScreen;
5 import org.sevenchan.dongs.towns.TownBanala;
6 import org.sevenchan.dongs.towns.TownBarn;
7 import org.sevenchan.dongs.towns.WildsHaaraWastes;
8 import org.sevenchan.dongs.towns.WildsHorusSpine;
9 /**
10 * ...
11 * @author N3X15
13 public class Town extends Screen
15 public var text:String = "";
17 public static var knownTowns:Object = { };
21 /**
22 * ID of the town
24 public var ID:String = "";
26 /**
27 * Name of the town
29 public var name:String = "";
31 /**
32 * IDs of connected towns to list when exiting.
34 public var connectedTowns:Array = [];
36 /**
37 * Is this town actually a Wilds?
39 public var isWilds:Boolean = false;
41 /**
42 * Does this town have free room and board?
44 public var freeRest:Boolean = false;
46 /**
47 * What kinds of creatures inhabit this town? (Hostile and otherwise)
49 public var inhabitants:Array = [];
51 private var menu:String = "main";
53 public static function setup():void {
54 knownTowns={
55 barn: new TownBarn(),
56 banala: new TownBanala(),
57 haara: new WildsHaaraWastes(),
58 horus: new WildsHorusSpine()
62 public function Town()
64 this.appearanceButton = true;
65 this.debugMenuButton = true;
66 this.exportGameButton = false;
67 this.loadOrSaveButton = true;
68 this.newGameButton = false;
69 this.selectPerkButton = false;
71 this.clearButtons()
74 // Explore, Shop, Rest (10G), Leave, Fap
75 override public function processButtonPress(id:int):Boolean
77 if (id == -1)
79 menu = "main";
80 if (!main.player.getExplored(ID)) {
81 onRevelation();
82 main.player.setExplored(ID);
83 } else {
84 onEnter();
86 clearButtons();
87 setButton(0, "Explore");
88 if(!isWilds) {
89 setButton(1, "Shop");
90 if(freeRest)
91 setButton(2, "Rest");
92 else
93 setButton(2, "Rest (10G)");
95 setButton(3, "Leave");
96 setButton(4, "Masturbate");
97 setButton(5, "Inventory");
98 updateScreen();
99 return false;
100 } else {
101 switch(menu) {
102 case "main":
103 switch(id) {
104 case 0:
105 var cs:Number = MathUtils.rand(0, 3);
106 trace("COMBAT CHANCE SAMPLE " +cs);
107 if(cs==0 && inhabitants.length>0) {
108 var c:Creature = getRandomInhabitant();
109 c._level = Math.max(1, main.player.level + MathUtils.rand( -2, 2));
110 c._strength = Math.max(1, main.player.strength + MathUtils.rand( -2, 2));
111 c.HP = c.maxHP;
112 c.initialGenderSetup();
113 if (c.getHostile(main.player)) {
114 main.startCombat(this, c);
115 return false;
116 } else {
117 var encounter:Boolean=c.onEncounter(main.player)
118 if(!encounter)
119 onExplore(c);
120 return encounter;
123 onExplore(null);
124 break;
125 case 1:
126 text = "Not implemented yet.";
127 //menu = "shop";
128 //displayShop();
129 break;
130 case 2:
131 menu = "rest";
132 if (main.player.gold >= 10 || freeRest) {
133 //trace("success");
134 if(!freeRest)
135 main.player.gold -= 10;
136 onSuccessfulRest();
137 main.player.HP = main.player.maxHP;
138 main.refreshStats();
139 } else {
140 main.refreshStats();
141 onFailedRest();
143 clearButtons();
144 setButton(NEXT_BUTTON, "Next");
145 updateScreen();
146 return false;
147 break;
148 case 3:
149 menu = "leave";
150 clearButtons();
151 setButton(0, "CANCEL");
152 text = "<p>You peer at the roadsigns in the middle of town and try to make out the destinations.</p>";
153 if (connectedTowns.length == 0) {
154 text += "<p>However, you cannot make them out (bug; connectedTowns=[]).</p>";
155 } else {
156 text +="<ul>";
157 for (var i:int = 0; i < connectedTowns.length; i++) {
158 var t:Town = Town.knownTowns[connectedTowns[i]];
159 setButton(i + 1, t.ID);
160 if(t.isWilds)
161 text += "<li><b>" + t.ID + "</b> - " + t.name + " (Wilds)</li>";
162 else
163 text += "<li><b>" + t.ID + "</b> - " + t.name + "</li>";
165 text += "</ul>";
167 updateScreen();
168 return false;
169 break;
170 case 4:
171 setButton(NEXT_BUTTON, "NEXT");
172 if(main.player.dicks.length>0 || main.player.vaginas.length>0) {
173 text = "<h2>Masturbate</h2><p>Blah blah blah, you blast cum everywhere or something.</p>";
174 main.player.lust = 0;
175 } else {
176 text = "<p>You look at your groin, and find nothing there for fap with.</p>";
178 updateScreen();
179 return false;
180 break;
181 case 5:
182 main.showInventory();
183 return false;
184 break;
186 updateScreen();
187 return false;
188 break;
189 case "shop":
190 case "rest":
191 processButtonPress( -1);
192 break;
193 case "leave":
194 if (id == 0) {
195 processButtonPress( -1);
196 return false;
198 main.setTown(knownTowns[connectedTowns[id - 1]]);
199 return true;
200 case "inventory":
202 case "masturbate":
203 break;
206 return false;
209 private function getRandomInhabitant():Creature {
210 return MathUtils.getRandomEntry(inhabitants);
213 override public function getScreenText():String
215 return text;
219 * omg new town what's it like
221 public function onRevelation():void { text = "REVELATION"; }
223 public function onExplore(bumpedInto:Creature):void { text = "EXPLORE"; }
225 public function onEnter():void { text = "ENTER"; }
227 public function onFailedRest():void { text = "FAILEDREST"; }
228 public function onSuccessfulRest():void { text = "SUCCESSFULREST"; }