git repos / saland

commit 7fc643d7

Poul Sander · 2026-05-31 22:13
7fc643d7aaeb3835212cb3eb1f1750e2d36e04a1 patch · browse files
parent 1380e6a87c5eb4b641f9713344443005dc293456

Added more monsters

Changed files

M data/monsters/monsters.json before
M data/sprites/monsters.sprite before
M src/saland/GameRegion.cpp before
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() {