diff --git a/data/monsters/monsters.json b/data/monsters/monsters.json index 9262c53..8be0d3a 100644 --- a/data/monsters/monsters.json +++ b/data/monsters/monsters.json @@ -41,6 +41,104 @@ "animation": "slash", "animationDuration": 300.0 } + }, + { + "race": "small_worm", + "radius": 12.0, + "health": 20.0, + "speed": 1.1, + "xp_reward": 25, + "attack": { + "cooldownDuration": 1200.0, + "range": 30.0, + "damage": 3.0, + "animation": "slash", + "animationDuration": 300.0 + } + }, + { + "race": "big_worm", + "radius": 22.0, + "health": 100.0, + "speed": 0.5, + "xp_reward": 120, + "attack": { + "cooldownDuration": 2500.0, + "range": 50.0, + "damage": 12.0, + "animation": "slash", + "animationDuration": 300.0 + } + }, + { + "race": "eyeball", + "radius": 16.0, + "health": 35.0, + "speed": 1.0, + "xp_reward": 55, + "attack": { + "cooldownDuration": 1500.0, + "range": 45.0, + "damage": 7.0, + "animation": "slash", + "animationDuration": 300.0 + } + }, + { + "race": "ghost", + "radius": 14.0, + "health": 25.0, + "speed": 1.4, + "xp_reward": 50, + "attack": { + "cooldownDuration": 1000.0, + "range": 35.0, + "damage": 5.0, + "animation": "slash", + "animationDuration": 300.0 + } + }, + { + "race": "man_eater_flower", + "radius": 20.0, + "health": 70.0, + "speed": 0.2, + "xp_reward": 90, + "attack": { + "cooldownDuration": 1200.0, + "range": 50.0, + "damage": 10.0, + "animation": "slash", + "animationDuration": 300.0 + } + }, + { + "race": "pumpking", + "radius": 24.0, + "health": 300.0, + "speed": 0.7, + "xp_reward": 500, + "attack": { + "cooldownDuration": 1000.0, + "range": 55.0, + "damage": 20.0, + "animation": "slash", + "animationDuration": 300.0 + } + }, + { + "race": "snake", + "radius": 14.0, + "health": 45.0, + "speed": 1.0, + "xp_reward": 65, + "attack": { + "cooldownDuration": 1300.0, + "range": 38.0, + "damage": 8.0, + "animation": "slash", + "animationDuration": 300.0 + } } ] } diff --git a/data/sprites/monsters.sprite b/data/sprites/monsters.sprite index 5d1b90d..65ada59 100644 --- a/data/sprites/monsters.sprite +++ b/data/sprites/monsters.sprite @@ -142,6 +142,342 @@ "frame_time" : 150, "originx" : 16, "originy" : 16 +}, + +"small_worm_N" : { + "texture" : "monsters/small_worm", + "topx" : 0, + "topy" : 0, + "height" : 32, + "width" : 32, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 16, + "originy" : 16 +}, + +"small_worm_W" : { + "texture" : "monsters/small_worm", + "topx" : 0, + "topy" : 32, + "height" : 32, + "width" : 32, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 16, + "originy" : 16 +}, + +"small_worm_S" : { + "texture" : "monsters/small_worm", + "topx" : 0, + "topy" : 64, + "height" : 32, + "width" : 32, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 16, + "originy" : 16 +}, + +"small_worm_E" : { + "texture" : "monsters/small_worm", + "topx" : 0, + "topy" : 96, + "height" : 32, + "width" : 32, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 16, + "originy" : 16 +}, + +"big_worm_N" : { + "texture" : "monsters/big_worm", + "topx" : 0, + "topy" : 0, + "height" : 50, + "width" : 35, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 17, + "originy" : 25 +}, + +"big_worm_W" : { + "texture" : "monsters/big_worm", + "topx" : 0, + "topy" : 50, + "height" : 50, + "width" : 35, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 17, + "originy" : 25 +}, + +"big_worm_S" : { + "texture" : "monsters/big_worm", + "topx" : 0, + "topy" : 100, + "height" : 50, + "width" : 35, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 17, + "originy" : 25 +}, + +"big_worm_E" : { + "texture" : "monsters/big_worm", + "topx" : 0, + "topy" : 150, + "height" : 50, + "width" : 35, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 17, + "originy" : 25 +}, + +"eyeball_N" : { + "texture" : "monsters/eyeball", + "topx" : 0, + "topy" : 0, + "height" : 38, + "width" : 32, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 16, + "originy" : 19 +}, + +"eyeball_W" : { + "texture" : "monsters/eyeball", + "topx" : 0, + "topy" : 38, + "height" : 38, + "width" : 32, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 16, + "originy" : 19 +}, + +"eyeball_S" : { + "texture" : "monsters/eyeball", + "topx" : 0, + "topy" : 76, + "height" : 38, + "width" : 32, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 16, + "originy" : 19 +}, + +"eyeball_E" : { + "texture" : "monsters/eyeball", + "topx" : 0, + "topy" : 114, + "height" : 38, + "width" : 32, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 16, + "originy" : 19 +}, + +"ghost_N" : { + "texture" : "monsters/ghost", + "topx" : 0, + "topy" : 0, + "height" : 46, + "width" : 40, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 20, + "originy" : 23 +}, + +"ghost_W" : { + "texture" : "monsters/ghost", + "topx" : 0, + "topy" : 46, + "height" : 46, + "width" : 40, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 20, + "originy" : 23 +}, + +"ghost_S" : { + "texture" : "monsters/ghost", + "topx" : 0, + "topy" : 92, + "height" : 46, + "width" : 40, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 20, + "originy" : 23 +}, + +"ghost_E" : { + "texture" : "monsters/ghost", + "topx" : 0, + "topy" : 138, + "height" : 46, + "width" : 40, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 20, + "originy" : 23 +}, + +"man_eater_flower_N" : { + "texture" : "monsters/man_eater_flower", + "topx" : 0, + "topy" : 0, + "height" : 76, + "width" : 60, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 30, + "originy" : 38 +}, + +"man_eater_flower_W" : { + "texture" : "monsters/man_eater_flower", + "topx" : 0, + "topy" : 76, + "height" : 76, + "width" : 60, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 30, + "originy" : 38 +}, + +"man_eater_flower_S" : { + "texture" : "monsters/man_eater_flower", + "topx" : 0, + "topy" : 152, + "height" : 76, + "width" : 60, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 30, + "originy" : 38 +}, + +"man_eater_flower_E" : { + "texture" : "monsters/man_eater_flower", + "topx" : 0, + "topy" : 228, + "height" : 76, + "width" : 60, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 30, + "originy" : 38 +}, + +"pumpking_N" : { + "texture" : "monsters/pumpking", + "topx" : 0, + "topy" : 0, + "height" : 46, + "width" : 46, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 23, + "originy" : 23 +}, + +"pumpking_W" : { + "texture" : "monsters/pumpking", + "topx" : 0, + "topy" : 46, + "height" : 46, + "width" : 46, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 23, + "originy" : 23 +}, + +"pumpking_S" : { + "texture" : "monsters/pumpking", + "topx" : 0, + "topy" : 92, + "height" : 46, + "width" : 46, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 23, + "originy" : 23 +}, + +"pumpking_E" : { + "texture" : "monsters/pumpking", + "topx" : 0, + "topy" : 138, + "height" : 46, + "width" : 46, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 23, + "originy" : 23 +}, + +"snake_N" : { + "texture" : "monsters/snake", + "topx" : 0, + "topy" : 0, + "height" : 32, + "width" : 32, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 16, + "originy" : 16 +}, + +"snake_W" : { + "texture" : "monsters/snake", + "topx" : 0, + "topy" : 32, + "height" : 32, + "width" : 32, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 16, + "originy" : 16 +}, + +"snake_S" : { + "texture" : "monsters/snake", + "topx" : 0, + "topy" : 64, + "height" : 32, + "width" : 32, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 16, + "originy" : 16 +}, + +"snake_E" : { + "texture" : "monsters/snake", + "topx" : 0, + "topy" : 96, + "height" : 32, + "width" : 32, + "number_of_frames" : 3, + "frame_time" : 150, + "originx" : 16, + "originy" : 16 } } diff --git a/src/saland/GameRegion.cpp b/src/saland/GameRegion.cpp index d7da382..3629bbe 100644 --- a/src/saland/GameRegion.cpp +++ b/src/saland/GameRegion.cpp @@ -477,6 +477,24 @@ void GameRegion::Init(int x, int y, const std::string& worldName, bool forceRese SpawnMonster(batDef, 1200.0f, 1400.0f); MonsterDef beeDef = GetMonsterDefByRace("bee"); SpawnMonster(beeDef, 220.0f, 220.0f); + MonsterDef smallWormDef = GetMonsterDefByRace("small_worm"); + SpawnMonster(smallWormDef, 400.0f, 300.0f); + SpawnMonster(smallWormDef, 600.0f, 500.0f); + MonsterDef bigWormDef = GetMonsterDefByRace("big_worm"); + SpawnMonster(bigWormDef, 800.0f, 700.0f); + MonsterDef eyeballDef = GetMonsterDefByRace("eyeball"); + SpawnMonster(eyeballDef, 350.0f, 600.0f); + SpawnMonster(eyeballDef, 900.0f, 300.0f); + MonsterDef ghostDef = GetMonsterDefByRace("ghost"); + SpawnMonster(ghostDef, 500.0f, 800.0f); + SpawnMonster(ghostDef, 1100.0f, 600.0f); + MonsterDef manEaterFlowerDef = GetMonsterDefByRace("man_eater_flower"); + SpawnMonster(manEaterFlowerDef, 700.0f, 400.0f); + MonsterDef snakeDef = GetMonsterDefByRace("snake"); + SpawnMonster(snakeDef, 450.0f, 450.0f); + SpawnMonster(snakeDef, 1000.0f, 900.0f); + MonsterDef pumpkingDef = GetMonsterDefByRace("pumpking"); + SpawnMonster(pumpkingDef, 1500.0f, 1500.0f); } void GameRegion::SaveRegion() {