diff --git a/world/npcs/tribalranger.json b/world/npcs/tribalranger.json
new file mode 100644
index 0000000000000000000000000000000000000000..cba9a93a89443ff7c460139c6039c813945acf13
--- /dev/null
+++ b/world/npcs/tribalranger.json
@@ -0,0 +1,51 @@
+{
+  "name": "tribal ranger",
+  "colorName": "tribal \u001B[1m\u001B[35mranger\u001B[0m",
+  "dieMessage": "the tribal \u001B[1m\u001B[35mranger\u001B[0m falls to the ground and convulses in death.",
+  "loot": {
+    "lootGoldMin": 1000000000,
+    "lootGoldMax": 1200000000,
+    "lootItems": [109]
+  },
+  "roamAreas": [
+    "north14_zone",
+    "north15_zone"
+  ],
+  "stats": {
+    "agile": 190000,
+    "aim": 188000,
+    "armorRating": 800000,
+    "currentHealth": 42000000,
+    "currentMana": 32000000,
+    "experience": 270000000,
+    "maxHealth": 42000000,
+    "maxMana": 12000000,
+    "meleSkill": 2100000,
+    "numberOfWeaponRolls": 85,
+    "strength": 1850000,
+    "weaponRatingMax": 3200000,
+    "weaponRatingMin": 2300000,
+    "willPower": 1900000
+  },
+  "spawnAreas": {
+    "north14_zone": {
+      "randomChance": 90,
+      "maxPerRoom": 1,
+      "spawnIntervalTicks": 600,
+      "maxInstances": 1
+    }, 
+    "north15_zone": {
+      "randomChance": 90,
+      "maxPerRoom": 1,
+      "spawnIntervalTicks": 600,
+      "maxInstances": 1
+    } 
+  },
+  "validTriggers": [
+    "tribal ranger",
+    "t",
+    "r",
+    "tribal",
+    "ranger"
+  ]
+}