diff options
author | Starla Insigna <hatkirby@fourisland.com> | 2012-06-04 16:58:18 -0400 |
---|---|---|
committer | Starla Insigna <hatkirby@fourisland.com> | 2012-06-04 16:58:18 -0400 |
commit | ccf37b30ce63acfd96d5e4eb47cfe5b67bde0383 (patch) | |
tree | 5dc2a142729d1bfa1389d1664cb23c8d3d62f256 /src | |
parent | 15b9afcc7b8a31f6f19ccfb7821090a8716cb186 (diff) | |
download | frigidearth-ccf37b30ce63acfd96d5e4eb47cfe5b67bde0383.tar.gz frigidearth-ccf37b30ce63acfd96d5e4eb47cfe5b67bde0383.tar.bz2 frigidearth-ccf37b30ce63acfd96d5e4eb47cfe5b67bde0383.zip |
Allowed for multiple floors
Also made the spider a bit weaker
Diffstat (limited to 'src')
-rw-r--r-- | src/com/fourisland/frigidearth/Game.java | 18 | ||||
-rw-r--r-- | src/com/fourisland/frigidearth/Main.java | 1 | ||||
-rw-r--r-- | src/com/fourisland/frigidearth/MapViewGameState.java | 138 | ||||
-rw-r--r-- | src/com/fourisland/frigidearth/mobs/Spider.java | 2 |
4 files changed, 96 insertions, 63 deletions
diff --git a/src/com/fourisland/frigidearth/Game.java b/src/com/fourisland/frigidearth/Game.java new file mode 100644 index 0000000..5d669de --- /dev/null +++ b/src/com/fourisland/frigidearth/Game.java | |||
@@ -0,0 +1,18 @@ | |||
1 | /* | ||
2 | * To change this template, choose Tools | Templates | ||
3 | * and open the template in the editor. | ||
4 | */ | ||
5 | package com.fourisland.frigidearth; | ||
6 | |||
7 | /** | ||
8 | * | ||
9 | * @author hatkirby | ||
10 | */ | ||
11 | public class Game | ||
12 | { | ||
13 | public int health = 15; | ||
14 | public int maxHealth = 15; | ||
15 | public int defense = 0; | ||
16 | public int level = 1; | ||
17 | public int experience = 0; | ||
18 | } | ||
diff --git a/src/com/fourisland/frigidearth/Main.java b/src/com/fourisland/frigidearth/Main.java index ff81aad..09aa273 100644 --- a/src/com/fourisland/frigidearth/Main.java +++ b/src/com/fourisland/frigidearth/Main.java | |||
@@ -30,6 +30,7 @@ public class Main extends Canvas | |||
30 | { | 30 | { |
31 | public static final int CANVAS_WIDTH = 624; | 31 | public static final int CANVAS_WIDTH = 624; |
32 | public static final int CANVAS_HEIGHT = 480; | 32 | public static final int CANVAS_HEIGHT = 480; |
33 | public static Game currentGame = new Game(); | ||
33 | 34 | ||
34 | private static JFrame mainWindow; | 35 | private static JFrame mainWindow; |
35 | private static Color[][] grid; | 36 | private static Color[][] grid; |
diff --git a/src/com/fourisland/frigidearth/MapViewGameState.java b/src/com/fourisland/frigidearth/MapViewGameState.java index 62fc632..8419244 100644 --- a/src/com/fourisland/frigidearth/MapViewGameState.java +++ b/src/com/fourisland/frigidearth/MapViewGameState.java | |||
@@ -24,8 +24,6 @@ public class MapViewGameState implements GameState | |||
24 | { | 24 | { |
25 | private final int TILE_WIDTH = 12; | 25 | private final int TILE_WIDTH = 12; |
26 | private final int TILE_HEIGHT = 12; | 26 | private final int TILE_HEIGHT = 12; |
27 | private final int MAP_WIDTH = 100; | ||
28 | private final int MAP_HEIGHT = 100; | ||
29 | private final int MESSAGE_HEIGHT = 6; | 27 | private final int MESSAGE_HEIGHT = 6; |
30 | private final int VIEWPORT_WIDTH = Main.CANVAS_WIDTH / TILE_WIDTH; | 28 | private final int VIEWPORT_WIDTH = Main.CANVAS_WIDTH / TILE_WIDTH; |
31 | private final int VIEWPORT_HEIGHT = Main.CANVAS_HEIGHT / TILE_HEIGHT - MESSAGE_HEIGHT; | 29 | private final int VIEWPORT_HEIGHT = Main.CANVAS_HEIGHT / TILE_HEIGHT - MESSAGE_HEIGHT; |
@@ -36,6 +34,8 @@ public class MapViewGameState implements GameState | |||
36 | private final int MAX_CORRIDOR_LENGTH = 6; | 34 | private final int MAX_CORRIDOR_LENGTH = 6; |
37 | private final int MIN_CORRIDOR_LENGTH = 2; | 35 | private final int MIN_CORRIDOR_LENGTH = 2; |
38 | private final int[][] OCTET_MULTIPLIERS = new int[][] {new int[] {1,0,0,-1,-1,0,0,1}, new int[] {0,1,-1,0,0,-1,1,0}, new int[] {0,1,1,0,0,-1,-1,0}, new int[] {1,0,0,1,-1,0,0,-1}}; | 36 | private final int[][] OCTET_MULTIPLIERS = new int[][] {new int[] {1,0,0,-1,-1,0,0,1}, new int[] {0,1,-1,0,0,-1,1,0}, new int[] {0,1,1,0,0,-1,-1,0}, new int[] {1,0,0,1,-1,0,0,-1}}; |
37 | private int mapWidth = 60; | ||
38 | private int mapHeight = 60; | ||
39 | private Tile[][] grid; | 39 | private Tile[][] grid; |
40 | private boolean[][] gridLighting; | 40 | private boolean[][] gridLighting; |
41 | private String[] messages = new String[MESSAGE_HEIGHT]; | 41 | private String[] messages = new String[MESSAGE_HEIGHT]; |
@@ -45,9 +45,6 @@ public class MapViewGameState implements GameState | |||
45 | private int playery = 4; | 45 | private int playery = 4; |
46 | private int viewportx = 0; | 46 | private int viewportx = 0; |
47 | private int viewporty = 0; | 47 | private int viewporty = 0; |
48 | private int health = 15; | ||
49 | private int maxHealth = 15; | ||
50 | private int defense = 0; | ||
51 | private int keyx; | 48 | private int keyx; |
52 | private int keyy; | 49 | private int keyy; |
53 | private boolean haveKey = false; | 50 | private boolean haveKey = false; |
@@ -55,21 +52,22 @@ public class MapViewGameState implements GameState | |||
55 | private int heartbeat = 0; | 52 | private int heartbeat = 0; |
56 | private int floor; | 53 | private int floor; |
57 | private int spawnTimer = 0; | 54 | private int spawnTimer = 0; |
58 | private int level = 1; | ||
59 | private int experience = 0; | ||
60 | 55 | ||
61 | public MapViewGameState(int floor) | 56 | public MapViewGameState(int floor) |
62 | { | 57 | { |
63 | this.floor = floor; | 58 | this.floor = floor; |
64 | 59 | ||
65 | grid = new Tile[MAP_WIDTH][MAP_HEIGHT]; | 60 | mapWidth += (50 * floor); |
66 | gridLighting = new boolean[MAP_WIDTH][MAP_HEIGHT]; | 61 | mapHeight += (50 * floor); |
67 | 62 | ||
68 | for (int x=0; x<MAP_WIDTH; x++) | 63 | grid = new Tile[mapWidth][mapHeight]; |
64 | gridLighting = new boolean[mapWidth][mapHeight]; | ||
65 | |||
66 | for (int x=0; x<mapWidth; x++) | ||
69 | { | 67 | { |
70 | for (int y=0; y<MAP_HEIGHT; y++) | 68 | for (int y=0; y<mapHeight; y++) |
71 | { | 69 | { |
72 | if ((x == 0) || (x == MAP_WIDTH-1) || (y == 0) || (y == MAP_HEIGHT-1)) | 70 | if ((x == 0) || (x == mapWidth-1) || (y == 0) || (y == mapHeight-1)) |
73 | { | 71 | { |
74 | grid[x][y] = Tile.StoneWall; | 72 | grid[x][y] = Tile.StoneWall; |
75 | } else { | 73 | } else { |
@@ -83,23 +81,23 @@ public class MapViewGameState implements GameState | |||
83 | switch (keyRoomDirection) | 81 | switch (keyRoomDirection) |
84 | { | 82 | { |
85 | case North: | 83 | case North: |
86 | legalBounds = new Rectangle(0, 14, MAP_WIDTH, MAP_HEIGHT-14); | 84 | legalBounds = new Rectangle(0, 14, mapWidth, mapHeight-14); |
87 | break; | 85 | break; |
88 | 86 | ||
89 | case East: | 87 | case East: |
90 | legalBounds = new Rectangle(0, 0, MAP_WIDTH-14, MAP_HEIGHT); | 88 | legalBounds = new Rectangle(0, 0, mapWidth-14, mapHeight); |
91 | break; | 89 | break; |
92 | 90 | ||
93 | case South: | 91 | case South: |
94 | legalBounds = new Rectangle(0, 0, MAP_WIDTH, MAP_HEIGHT-14); | 92 | legalBounds = new Rectangle(0, 0, mapWidth, mapHeight-14); |
95 | break; | 93 | break; |
96 | 94 | ||
97 | case West: | 95 | case West: |
98 | legalBounds = new Rectangle(14, 0, MAP_WIDTH-14, MAP_HEIGHT); | 96 | legalBounds = new Rectangle(14, 0, mapWidth-14, mapHeight); |
99 | break; | 97 | break; |
100 | } | 98 | } |
101 | 99 | ||
102 | makeRoom(MAP_WIDTH/2, MAP_HEIGHT/2, Direction.getRandomDirection(), legalBounds); | 100 | makeRoom(mapWidth/2, mapHeight/2, Direction.getRandomDirection(), legalBounds); |
103 | 101 | ||
104 | int currentFeatures = 1; | 102 | int currentFeatures = 1; |
105 | int objects = 300; | 103 | int objects = 300; |
@@ -118,8 +116,8 @@ public class MapViewGameState implements GameState | |||
118 | Direction validTile = null; | 116 | Direction validTile = null; |
119 | for (int testing = 0; testing < 1000; testing++) | 117 | for (int testing = 0; testing < 1000; testing++) |
120 | { | 118 | { |
121 | newx = Functions.random(1, MAP_WIDTH-1); | 119 | newx = Functions.random(1, mapWidth-1); |
122 | newy = Functions.random(1, MAP_HEIGHT-1); | 120 | newy = Functions.random(1, mapHeight-1); |
123 | validTile = null; | 121 | validTile = null; |
124 | 122 | ||
125 | if ((grid[newx][newy] == Tile.DirtWall) || (grid[newx][newy] == Tile.Corridor)) | 123 | if ((grid[newx][newy] == Tile.DirtWall) || (grid[newx][newy] == Tile.Corridor)) |
@@ -198,8 +196,8 @@ public class MapViewGameState implements GameState | |||
198 | { | 196 | { |
199 | for (int testing = 0; testing < 1000; testing++) | 197 | for (int testing = 0; testing < 1000; testing++) |
200 | { | 198 | { |
201 | newx = Functions.random(1, MAP_WIDTH-1); | 199 | newx = Functions.random(1, mapWidth-1); |
202 | newy = Functions.random(1, MAP_HEIGHT-2); | 200 | newy = Functions.random(1, mapHeight-2); |
203 | ways = 4; | 201 | ways = 4; |
204 | 202 | ||
205 | for (Direction dir : Direction.values()) | 203 | for (Direction dir : Direction.values()) |
@@ -364,7 +362,7 @@ public class MapViewGameState implements GameState | |||
364 | 362 | ||
365 | if (legalBounds == null) | 363 | if (legalBounds == null) |
366 | { | 364 | { |
367 | bounds = new Rectangle(0, 0, MAP_WIDTH, MAP_HEIGHT); | 365 | bounds = new Rectangle(0, 0, mapWidth, mapHeight); |
368 | } else { | 366 | } else { |
369 | bounds = legalBounds; | 367 | bounds = legalBounds; |
370 | } | 368 | } |
@@ -463,7 +461,7 @@ public class MapViewGameState implements GameState | |||
463 | switch (direction) | 461 | switch (direction) |
464 | { | 462 | { |
465 | case North: | 463 | case North: |
466 | if ((x < 0) || (x > MAP_WIDTH)) | 464 | if ((x < 0) || (x > mapWidth)) |
467 | { | 465 | { |
468 | return false; | 466 | return false; |
469 | } else { | 467 | } else { |
@@ -472,7 +470,7 @@ public class MapViewGameState implements GameState | |||
472 | 470 | ||
473 | for (ytemp = y; ytemp > (y-length); ytemp--) | 471 | for (ytemp = y; ytemp > (y-length); ytemp--) |
474 | { | 472 | { |
475 | if ((ytemp < 0) || (ytemp > MAP_HEIGHT)) | 473 | if ((ytemp < 0) || (ytemp > mapHeight)) |
476 | { | 474 | { |
477 | return false; | 475 | return false; |
478 | } | 476 | } |
@@ -491,7 +489,7 @@ public class MapViewGameState implements GameState | |||
491 | break; | 489 | break; |
492 | 490 | ||
493 | case East: | 491 | case East: |
494 | if ((y < 0) || (y > MAP_HEIGHT)) | 492 | if ((y < 0) || (y > mapHeight)) |
495 | { | 493 | { |
496 | return false; | 494 | return false; |
497 | } else { | 495 | } else { |
@@ -500,7 +498,7 @@ public class MapViewGameState implements GameState | |||
500 | 498 | ||
501 | for (xtemp = x; xtemp < (x+length); xtemp++) | 499 | for (xtemp = x; xtemp < (x+length); xtemp++) |
502 | { | 500 | { |
503 | if ((xtemp < 0) || (xtemp > MAP_WIDTH)) | 501 | if ((xtemp < 0) || (xtemp > mapWidth)) |
504 | { | 502 | { |
505 | return false; | 503 | return false; |
506 | } | 504 | } |
@@ -519,7 +517,7 @@ public class MapViewGameState implements GameState | |||
519 | break; | 517 | break; |
520 | 518 | ||
521 | case South: | 519 | case South: |
522 | if ((x < 0) || (x > MAP_WIDTH)) | 520 | if ((x < 0) || (x > mapWidth)) |
523 | { | 521 | { |
524 | return false; | 522 | return false; |
525 | } else { | 523 | } else { |
@@ -528,7 +526,7 @@ public class MapViewGameState implements GameState | |||
528 | 526 | ||
529 | for (ytemp = y; ytemp < (y+length); ytemp++) | 527 | for (ytemp = y; ytemp < (y+length); ytemp++) |
530 | { | 528 | { |
531 | if ((ytemp < 0) || (ytemp > MAP_HEIGHT)) | 529 | if ((ytemp < 0) || (ytemp > mapHeight)) |
532 | { | 530 | { |
533 | return false; | 531 | return false; |
534 | } | 532 | } |
@@ -547,7 +545,7 @@ public class MapViewGameState implements GameState | |||
547 | break; | 545 | break; |
548 | 546 | ||
549 | case West: | 547 | case West: |
550 | if ((y < 0) || (y > MAP_HEIGHT)) | 548 | if ((y < 0) || (y > mapHeight)) |
551 | { | 549 | { |
552 | return false; | 550 | return false; |
553 | } else { | 551 | } else { |
@@ -556,7 +554,7 @@ public class MapViewGameState implements GameState | |||
556 | 554 | ||
557 | for (xtemp = x; xtemp > (x-length); xtemp--) | 555 | for (xtemp = x; xtemp > (x-length); xtemp--) |
558 | { | 556 | { |
559 | if ((xtemp < 0) || (xtemp > MAP_WIDTH)) | 557 | if ((xtemp < 0) || (xtemp > mapWidth)) |
560 | { | 558 | { |
561 | return false; | 559 | return false; |
562 | } | 560 | } |
@@ -580,9 +578,9 @@ public class MapViewGameState implements GameState | |||
580 | 578 | ||
581 | private void calculateFieldOfView() | 579 | private void calculateFieldOfView() |
582 | { | 580 | { |
583 | for (int x=0; x<MAP_WIDTH; x++) | 581 | for (int x=0; x<mapWidth; x++) |
584 | { | 582 | { |
585 | for (int y=0; y<MAP_HEIGHT; y++) | 583 | for (int y=0; y<mapHeight; y++) |
586 | { | 584 | { |
587 | gridLighting[x][y] = false; | 585 | gridLighting[x][y] = false; |
588 | } | 586 | } |
@@ -719,8 +717,8 @@ public class MapViewGameState implements GameState | |||
719 | 717 | ||
720 | // Render status bar | 718 | // Render status bar |
721 | g.drawImage(SystemFont.getCharacter((char) 3, Color.RED), TILE_WIDTH, 0, TILE_WIDTH, TILE_HEIGHT, null); | 719 | g.drawImage(SystemFont.getCharacter((char) 3, Color.RED), TILE_WIDTH, 0, TILE_WIDTH, TILE_HEIGHT, null); |
722 | String healthText = Integer.toString(health); | 720 | String healthText = Integer.toString(Main.currentGame.health); |
723 | double healthPercentage = ((double) health) / ((double) maxHealth); | 721 | double healthPercentage = ((double) Main.currentGame.health) / ((double) Main.currentGame.maxHealth); |
724 | Color healthColor = Color.WHITE; | 722 | Color healthColor = Color.WHITE; |
725 | if (healthPercentage < 0.2) | 723 | if (healthPercentage < 0.2) |
726 | { | 724 | { |
@@ -740,7 +738,7 @@ public class MapViewGameState implements GameState | |||
740 | 738 | ||
741 | g.drawImage(SystemFont.getCharacter((char) 5, Color.GRAY), (healthText.length()+3)*TILE_WIDTH, 0, TILE_WIDTH, TILE_HEIGHT, null); | 739 | g.drawImage(SystemFont.getCharacter((char) 5, Color.GRAY), (healthText.length()+3)*TILE_WIDTH, 0, TILE_WIDTH, TILE_HEIGHT, null); |
742 | int b = healthText.length()+4; | 740 | int b = healthText.length()+4; |
743 | String defenseText = Integer.toString(defense); | 741 | String defenseText = Integer.toString(Main.currentGame.defense); |
744 | for (int i=0; i<defenseText.length(); i++) | 742 | for (int i=0; i<defenseText.length(); i++) |
745 | { | 743 | { |
746 | g.drawImage(SystemFont.getCharacter(defenseText.charAt(i), Color.WHITE), (i+b)*TILE_WIDTH, 0, TILE_WIDTH, TILE_HEIGHT, null); | 744 | g.drawImage(SystemFont.getCharacter(defenseText.charAt(i), Color.WHITE), (i+b)*TILE_WIDTH, 0, TILE_WIDTH, TILE_HEIGHT, null); |
@@ -751,7 +749,7 @@ public class MapViewGameState implements GameState | |||
751 | g.drawImage(SystemFont.getCharacter('X', Color.WHITE), (b+1)*TILE_WIDTH, 0, TILE_WIDTH, TILE_HEIGHT, null); | 749 | g.drawImage(SystemFont.getCharacter('X', Color.WHITE), (b+1)*TILE_WIDTH, 0, TILE_WIDTH, TILE_HEIGHT, null); |
752 | g.drawImage(SystemFont.getCharacter('P', Color.WHITE), (b+2)*TILE_WIDTH, 0, TILE_WIDTH, TILE_HEIGHT, null); | 750 | g.drawImage(SystemFont.getCharacter('P', Color.WHITE), (b+2)*TILE_WIDTH, 0, TILE_WIDTH, TILE_HEIGHT, null); |
753 | b+=3; | 751 | b+=3; |
754 | String expText = Functions.padLeft(Integer.toString(experience), 3, '0'); | 752 | String expText = Functions.padLeft(Integer.toString(Main.currentGame.experience), 3, '0'); |
755 | for (int i=0; i<expText.length(); i++) | 753 | for (int i=0; i<expText.length(); i++) |
756 | { | 754 | { |
757 | g.drawImage(SystemFont.getCharacter(expText.charAt(i), Color.WHITE), (i+b)*TILE_WIDTH, 0, TILE_WIDTH, TILE_HEIGHT, null); | 755 | g.drawImage(SystemFont.getCharacter(expText.charAt(i), Color.WHITE), (i+b)*TILE_WIDTH, 0, TILE_WIDTH, TILE_HEIGHT, null); |
@@ -759,7 +757,7 @@ public class MapViewGameState implements GameState | |||
759 | b+=expText.length(); | 757 | b+=expText.length(); |
760 | g.drawImage(SystemFont.getCharacter(':', Color.WHITE), (b)*TILE_WIDTH, 0, TILE_WIDTH, TILE_HEIGHT, null); | 758 | g.drawImage(SystemFont.getCharacter(':', Color.WHITE), (b)*TILE_WIDTH, 0, TILE_WIDTH, TILE_HEIGHT, null); |
761 | b++; | 759 | b++; |
762 | String levelText = Integer.toString(level); | 760 | String levelText = Integer.toString(Main.currentGame.level); |
763 | for (int i=0; i<levelText.length(); i++) | 761 | for (int i=0; i<levelText.length(); i++) |
764 | { | 762 | { |
765 | g.drawImage(SystemFont.getCharacter(levelText.charAt(i), Color.WHITE), (i+b)*TILE_WIDTH, 0, TILE_WIDTH, TILE_HEIGHT, null); | 763 | g.drawImage(SystemFont.getCharacter(levelText.charAt(i), Color.WHITE), (i+b)*TILE_WIDTH, 0, TILE_WIDTH, TILE_HEIGHT, null); |
@@ -787,24 +785,24 @@ public class MapViewGameState implements GameState | |||
787 | if (mob.getPosition().equals(to)) | 785 | if (mob.getPosition().equals(to)) |
788 | { | 786 | { |
789 | printMessage("You hit the " + mob.getName().toLowerCase()); | 787 | printMessage("You hit the " + mob.getName().toLowerCase()); |
790 | mob.health -= (int) (Math.floor(Math.sqrt(level))); | 788 | mob.health -= (int) (Math.floor(Math.sqrt(Main.currentGame.level))); |
791 | 789 | ||
792 | if (mob.health <= 0) | 790 | if (mob.health <= 0) |
793 | { | 791 | { |
794 | printMessage("You killed the " + mob.getName().toLowerCase() + "!"); | 792 | printMessage("You killed the " + mob.getName().toLowerCase() + "!"); |
795 | experience += (mob.getBaseExperience()/(level*level)); | 793 | Main.currentGame.experience += (mob.getBaseExperience()/(Main.currentGame.level*Main.currentGame.level)); |
796 | mobs.remove(mob); | 794 | mobs.remove(mob); |
797 | 795 | ||
798 | if (experience >= 1000) | 796 | if (Main.currentGame.experience >= 1000) |
799 | { | 797 | { |
800 | level++; | 798 | Main.currentGame.level++; |
801 | experience -= 1000; | 799 | Main.currentGame.experience -= 1000; |
802 | 800 | ||
803 | int hpGain = Functions.rollDice(6, 2) + 3; | 801 | int hpGain = Functions.rollDice(6, 2) + 3; |
804 | health += hpGain; | 802 | Main.currentGame.health += hpGain; |
805 | maxHealth += hpGain; | 803 | Main.currentGame.maxHealth += hpGain; |
806 | 804 | ||
807 | printMessage("You grow to level " + level + "!"); | 805 | printMessage("You grow to level " + Main.currentGame.level + "!"); |
808 | } | 806 | } |
809 | } | 807 | } |
810 | 808 | ||
@@ -833,9 +831,9 @@ public class MapViewGameState implements GameState | |||
833 | printMessage("You get the key"); | 831 | printMessage("You get the key"); |
834 | printMessage("All the windows in the room shatter!"); | 832 | printMessage("All the windows in the room shatter!"); |
835 | 833 | ||
836 | for (int x=0; x<MAP_WIDTH; x++) | 834 | for (int x=0; x<mapWidth; x++) |
837 | { | 835 | { |
838 | for (int y=0; y<MAP_HEIGHT; y++) | 836 | for (int y=0; y<mapHeight; y++) |
839 | { | 837 | { |
840 | if (grid[x][y] == Tile.Window) | 838 | if (grid[x][y] == Tile.Window) |
841 | { | 839 | { |
@@ -851,6 +849,22 @@ public class MapViewGameState implements GameState | |||
851 | // Wait a turn | 849 | // Wait a turn |
852 | break; | 850 | break; |
853 | 851 | ||
852 | case KeyEvent.VK_PERIOD: | ||
853 | if (e.isShiftDown()) | ||
854 | { | ||
855 | if (grid[playerx][playery] == Tile.UpStairs) | ||
856 | { | ||
857 | if (haveKey) | ||
858 | { | ||
859 | Main.setGameState(new MapViewGameState(floor+1)); | ||
860 | } else { | ||
861 | printMessage("The stairs are locked! You need a key."); | ||
862 | } | ||
863 | } | ||
864 | |||
865 | break; | ||
866 | } | ||
867 | |||
854 | default: | 868 | default: |
855 | return; | 869 | return; |
856 | } | 870 | } |
@@ -865,7 +879,7 @@ public class MapViewGameState implements GameState | |||
865 | if (arePointsAdjacent(playerx, playery, mob.x, mob.y, false)) | 879 | if (arePointsAdjacent(playerx, playery, mob.x, mob.y, false)) |
866 | { | 880 | { |
867 | // Attack! | 881 | // Attack! |
868 | health -= (mob.getAttackPower() - defense); | 882 | Main.currentGame.health -= Math.max(mob.getAttackPower() - Main.currentGame.defense, 0); |
869 | printMessage(mob.getBattleMessage()); | 883 | printMessage(mob.getBattleMessage()); |
870 | } else { | 884 | } else { |
871 | List<Direction> path = findPath(mob.getPosition(), new Point(playerx, playery)); | 885 | List<Direction> path = findPath(mob.getPosition(), new Point(playerx, playery)); |
@@ -922,9 +936,9 @@ public class MapViewGameState implements GameState | |||
922 | // Move snow | 936 | // Move snow |
923 | if (snowGrow) | 937 | if (snowGrow) |
924 | { | 938 | { |
925 | for (int x=0; x<MAP_WIDTH; x++) | 939 | for (int x=0; x<mapWidth; x++) |
926 | { | 940 | { |
927 | for (int y=0; y<MAP_HEIGHT; y++) | 941 | for (int y=0; y<mapHeight; y++) |
928 | { | 942 | { |
929 | if (grid[x][y] == Tile.Snow) | 943 | if (grid[x][y] == Tile.Snow) |
930 | { | 944 | { |
@@ -940,9 +954,9 @@ public class MapViewGameState implements GameState | |||
940 | } | 954 | } |
941 | } | 955 | } |
942 | 956 | ||
943 | for (int x=0; x<MAP_WIDTH; x++) | 957 | for (int x=0; x<mapWidth; x++) |
944 | { | 958 | { |
945 | for (int y=0; y<MAP_HEIGHT; y++) | 959 | for (int y=0; y<mapHeight; y++) |
946 | { | 960 | { |
947 | if (grid[x][y] == Tile.ShatteredWindow) | 961 | if (grid[x][y] == Tile.ShatteredWindow) |
948 | { | 962 | { |
@@ -969,15 +983,15 @@ public class MapViewGameState implements GameState | |||
969 | { | 983 | { |
970 | if (grid[playerx][playery] == Tile.Snow) | 984 | if (grid[playerx][playery] == Tile.Snow) |
971 | { | 985 | { |
972 | health--; | 986 | Main.currentGame.health--; |
973 | } | 987 | } |
974 | } | 988 | } |
975 | 989 | ||
976 | if ((grid[playerx][playery] != Tile.Snow) && ((heartbeat == Functions.random(0, 7)) || (heartbeat == 8))) | 990 | if ((grid[playerx][playery] != Tile.Snow) && ((heartbeat == Functions.random(0, 7)) || (heartbeat == 8))) |
977 | { | 991 | { |
978 | if (health < maxHealth) | 992 | if (Main.currentGame.health < Main.currentGame.maxHealth) |
979 | { | 993 | { |
980 | health++; | 994 | Main.currentGame.health++; |
981 | } | 995 | } |
982 | } | 996 | } |
983 | 997 | ||
@@ -1010,7 +1024,7 @@ public class MapViewGameState implements GameState | |||
1010 | calculateFieldOfView(); | 1024 | calculateFieldOfView(); |
1011 | 1025 | ||
1012 | // Handle death | 1026 | // Handle death |
1013 | if (health <= 0) | 1027 | if (Main.currentGame.health <= 0) |
1014 | { | 1028 | { |
1015 | printMessage("You have died! Press [ENTER] to quit."); | 1029 | printMessage("You have died! Press [ENTER] to quit."); |
1016 | 1030 | ||
@@ -1031,11 +1045,11 @@ public class MapViewGameState implements GameState | |||
1031 | { | 1045 | { |
1032 | if (playerx > (VIEWPORT_WIDTH/2)) | 1046 | if (playerx > (VIEWPORT_WIDTH/2)) |
1033 | { | 1047 | { |
1034 | if (playerx < (MAP_WIDTH - (VIEWPORT_WIDTH/2-1))) | 1048 | if (playerx < (mapWidth - (VIEWPORT_WIDTH/2-1))) |
1035 | { | 1049 | { |
1036 | viewportx = playerx - (VIEWPORT_WIDTH/2); | 1050 | viewportx = playerx - (VIEWPORT_WIDTH/2); |
1037 | } else { | 1051 | } else { |
1038 | viewportx = MAP_WIDTH - VIEWPORT_WIDTH; | 1052 | viewportx = mapWidth - VIEWPORT_WIDTH; |
1039 | } | 1053 | } |
1040 | } else { | 1054 | } else { |
1041 | viewportx = 0; | 1055 | viewportx = 0; |
@@ -1043,11 +1057,11 @@ public class MapViewGameState implements GameState | |||
1043 | 1057 | ||
1044 | if (playery > (VIEWPORT_HEIGHT/2)) | 1058 | if (playery > (VIEWPORT_HEIGHT/2)) |
1045 | { | 1059 | { |
1046 | if (playery < (MAP_HEIGHT - (VIEWPORT_HEIGHT/2-1))) | 1060 | if (playery < (mapHeight - (VIEWPORT_HEIGHT/2-1))) |
1047 | { | 1061 | { |
1048 | viewporty = playery - (VIEWPORT_HEIGHT/2); | 1062 | viewporty = playery - (VIEWPORT_HEIGHT/2); |
1049 | } else { | 1063 | } else { |
1050 | viewporty = MAP_HEIGHT - VIEWPORT_HEIGHT; | 1064 | viewporty = mapHeight - VIEWPORT_HEIGHT; |
1051 | } | 1065 | } |
1052 | } else { | 1066 | } else { |
1053 | viewporty = 0; | 1067 | viewporty = 0; |
@@ -1057,9 +1071,9 @@ public class MapViewGameState implements GameState | |||
1057 | private boolean isValidPosition(int x, int y) | 1071 | private boolean isValidPosition(int x, int y) |
1058 | { | 1072 | { |
1059 | if (x < 0) return false; | 1073 | if (x < 0) return false; |
1060 | if (x > MAP_WIDTH) return false; | 1074 | if (x > mapWidth) return false; |
1061 | if (y < 0) return false; | 1075 | if (y < 0) return false; |
1062 | if (y > MAP_HEIGHT) return false; | 1076 | if (y > mapHeight) return false; |
1063 | 1077 | ||
1064 | return true; | 1078 | return true; |
1065 | } | 1079 | } |
diff --git a/src/com/fourisland/frigidearth/mobs/Spider.java b/src/com/fourisland/frigidearth/mobs/Spider.java index 58a554b..7d3330e 100644 --- a/src/com/fourisland/frigidearth/mobs/Spider.java +++ b/src/com/fourisland/frigidearth/mobs/Spider.java | |||
@@ -44,7 +44,7 @@ public class Spider extends Mob | |||
44 | 44 | ||
45 | public int getAttackPower() | 45 | public int getAttackPower() |
46 | { | 46 | { |
47 | return 2; | 47 | return 1; |
48 | } | 48 | } |
49 | 49 | ||
50 | public int getBaseExperience() | 50 | public int getBaseExperience() |