public static jtbvMonster GetMonster(char symbol, string desc) { jtbvMonster retVal = null; Match m = CommonMonsters.Match(desc); if (!m.Success) m = RareMonsters.Match(desc); if ((m.Success) && (monsterSymbols.Contains(symbol.ToString()))) { retVal = new jtbvMonster(); switch (m.Groups[1].Value) { case "tame": retVal.Temperment = jtbvTemperment.TAME; break; case "peaceful": retVal.Temperment = jtbvTemperment.PEACEFUL; break; case "": default: retVal.Temperment = jtbvTemperment.HOSTILE; break; } retVal.Species = m.Groups[2].Value; retVal.Symbol = symbol; //Console.WriteLine("Recognized monster " + retVal.Species); } else if (symbol == 'I') { retVal = new jtbvMonster(); retVal.Symbol = symbol; } return retVal; }
public void UseQueryResult(char Symbol, string Description) { jtbvLog.WriteFile("Inquiries.log", "Query result for " + this.Loc.ToString() + " is (" + Symbol.ToString() + ") '" + Description + "'"); HasItem = false; Monster = null; // Always reset the monster, because they might have moved. switch (Description) { case "doorway": Tile = jtbvTile.OPEN_DOOR; break; case "closed door": Tile = jtbvTile.CLOSED_DOOR; break; case "dark part of a room": Tile = jtbvTile.UNEXPLORED; break; case "floor of a room": jtbvLog.WriteFile("MovementErrs.log", "Location2"); jtbvLog.WriteFile("MovementErrs.log", "Former tile was " + Tile.ToString()); Tile = jtbvTile.FLOOR; jtbvLog.WriteFile("MovementErrs.log", "Tile is now " + Tile.ToString()); break; case "lit corridor": case "corridor": jtbvLog.WriteFile("MovementErrs.log", "Location4"); jtbvLog.WriteFile("MovementErrs.log", "Former tile was " + Tile.ToString()); Tile = jtbvTile.CORRIDOR; jtbvLog.WriteFile("MovementErrs.log", "Tile is now " + Tile.ToString()); break; case "wall": Tile = jtbvTile.WALL; break; case "broken door": Tile = jtbvTile.BROKEN_DOOR; break; case "open door": Tile = jtbvTile.OPEN_DOOR; break; case "staircase up": Tile = jtbvTile.STAIRCASE_UP; break; case "staircase down": Tile = jtbvTile.STAIRCASE_DOWN; break; case "lawful altar": Tile = jtbvTile.LAWFUL_ALTAR; break; case "neutral altar": Tile = jtbvTile.NEUTRAL_ALTAR; break; case "chaotic altar": Tile = jtbvTile.CHAOTIC_ALTAR; break; default: // In this case, we don't think it's a dungeon feature, so it must be a monster or an item. if (Tile == jtbvTile.UNEXPLORED) { Tile = jtbvTile.UNKNOWN; } Monster = jtbvMonster.GetMonster(Symbol, Description); if (Monster == null) { this.HasItem = true; //Console.WriteLine("Found an item at loc " + this.Loc.ToString()); //jtbvItem item = jtbvItem.GetItem(sym, desc); } else { jtbvLog.WriteFile("FoundMonsters.log", Monster.Species); //Console.WriteLine("Found monster " + Monster.Species + " at loc " + this.Loc.ToString()); } break; } }
public jtbvMapSpace(jtbvGameLevel level, int x, int y) { parent = level; Loc = new Point(x, y); Items = new List<jtbvItem>(); SearchStatus = 0; Tile = jtbvTile.UNEXPLORED; Monster = null; }
public void UseAppearanceData(char Appearance) { HasItem = false; Monster = null; // Always reset the monster, because they might have moved. switch (Appearance) { case '.': jtbvLog.WriteFile("MovementErrs.log", "Location1"); jtbvLog.WriteFile("MovementErrs.log", "Old tile was " + Tile.ToString() + ", being set to floor"); Tile = jtbvTile.FLOOR; break; case '{': if ((Tile == jtbvTile.UNKNOWN) || (Tile == jtbvTile.UNEXPLORED)) { RequestMoreInfo(); } break; case '-': case '|': RequestMoreInfo(); break; case '#': if ((Tile == jtbvTile.UNKNOWN) || (Tile == jtbvTile.UNEXPLORED)) Tile = jtbvTile.WALL; break; case '_': RequestMoreInfo(); break; case '^': if (!this.IsTrap()) RequestMoreInfo(); break; case '+': RequestMoreInfo(); break; case '>': if (Tile != jtbvTile.STAIRCASE_DOWN) RequestMoreInfo(); // this[cursor] = jtbvMapSquare.STAIRCASE_DOWN; break; case '<': if (Tile != jtbvTile.STAIRCASE_UP) RequestMoreInfo(); // this[cursor] = jtbvMapSquare.STAIRCASE_UP; break; case ' ': if (Tile == jtbvTile.UNKNOWN) Tile = jtbvTile.UNEXPLORED; break; default: RequestMoreInfo(); break; } }