Преглед изворни кода

Added robe for monster avail feature (#7103)

* Added robe to mob avail.
Balfear пре 2 година
родитељ
комит
ec659d576a
3 измењених фајлова са 24 додато и 0 уклоњено
  1. 2 0
      db/import-tmpl/mob_avail.yml
  2. 1 0
      doc/yaml/db/mob_avail.yml
  3. 21 0
      src/map/mob.cpp

+ 2 - 0
db/import-tmpl/mob_avail.yml

@@ -33,6 +33,7 @@
 #   HeadTop                 Item name of headgear (if Sprite is a player). (Default: 0)
 #   HeadMid                 Item name of headgear (if Sprite is a player). (Default: 0)
 #   HeadLow                 Item name of headgear (if Sprite is a player). (Default: 0)
+#   Robe                    Item name of robe (if Sprite is a player). (Default: 0)
 #   PetEquip                Item name of pet equipment (if Mob is a valid pet). (Default: 0)
 #   Options:                Set an option for an object. (Optional)
 #     <Option>: bool
@@ -68,6 +69,7 @@ Header:
 #    HeadTop: Sahkkat
 #    HeadMid: Sunglasses
 #    HeadLow: Cigar
+#    Robe: Archangel_Wing
 #    Options:
 #      Falcon: true
   # Valaris Worshiper

+ 1 - 0
doc/yaml/db/mob_avail.yml

@@ -16,6 +16,7 @@
 #   HeadTop                 Item name of headgear (if Sprite is a player). (Default: 0)
 #   HeadMid                 Item name of headgear (if Sprite is a player). (Default: 0)
 #   HeadLow                 Item name of headgear (if Sprite is a player). (Default: 0)
+#   Robe                    Item name of robe (if Sprite is a player). (Default: 0)
 #   PetEquip                Item name of pet equipment (if Mob is a valid pet). (Default: 0)
 #   Options:                Set an option for an object. (Optional)
 #     <Option>: bool

+ 21 - 0
src/map/mob.cpp

@@ -5496,6 +5496,27 @@ uint64 MobAvailDatabase::parseBodyNode(const ryml::NodeRef& node) {
 		mob->vd.head_bottom = item->look;
 	}
 
+	if (this->nodeExists(node, "Robe")) {
+		if (pcdb_checkid(mob->vd.class_) == 0) {
+			this->invalidWarning(node["Robe"], "Robe is only applicable to Job sprites.\n");
+			return 0;
+		}
+
+		std::string robe;
+
+		if (!this->asString(node, "Robe", robe))
+			return 0;
+
+		std::shared_ptr<item_data> item = item_db.search_aegisname(robe.c_str());
+
+		if (item == nullptr) {
+			this->invalidWarning(node["Robe"], "Robe %s is not a valid item.\n", robe.c_str());
+			return 0;
+		}
+
+		mob->vd.robe = item->look;
+	}
+
 	if (this->nodeExists(node, "PetEquip")) {
 		std::shared_ptr<s_pet_db> pet_db_ptr = pet_db.find(mob->id);