diff --git a/world/npcs/goblinastronomer.json b/world/npcs/goblinastronomer.json
new file mode 100644
index 0000000000000000000000000000000000000000..b763dee4a612e1ed25bb3933b80c252ff9a0599b
--- /dev/null
+++ b/world/npcs/goblinastronomer.json
@@ -0,0 +1,51 @@
+{
+  "name": "goblin astronomer",
+  "colorName": "goblin \u001B[1m\u001B[35mastronomer\u001B[0m",
+  "dieMessage": "the goblin \u001B[1m\u001B[35mastronomer\u001B[0m falls to the ground and convulses in death.",
+  "loot": {
+    "lootGoldMin": 700000000,
+    "lootGoldMax": 900000000,
+    "lootItems": [112]
+  },
+  "roamAreas": [
+    "bloodridge16_zone",
+    "bloodridge17_zone"
+  ],
+  "stats": {
+    "agile": 140000,
+    "aim": 128000,
+    "armorRating": 600000,
+    "currentHealth": 30000000,
+    "currentMana": 22000000,
+    "experience": 200000000,
+    "maxHealth": 30000000,
+    "maxMana": 12000000,
+    "meleSkill": 1500000,
+    "numberOfWeaponRolls": 75,
+    "strength": 1250000,
+    "weaponRatingMax": 2200000,
+    "weaponRatingMin": 1300000,
+    "willPower": 1100000
+  },
+  "spawnAreas": {
+    "bloodridge16_zone": {
+      "randomChance": 90,
+      "maxPerRoom": 1,
+      "spawnIntervalTicks": 600,
+      "maxInstances": 1
+    }, 
+    "bloodridge17_zone": {
+      "randomChance": 90,
+      "maxPerRoom": 1,
+      "spawnIntervalTicks": 600,
+      "maxInstances": 1
+    } 
+  },
+  "validTriggers": [
+    "goblin astronomer",
+    "g",
+    "a",
+    "goblin",
+    "astronomer"
+  ]
+}