Next Run - التعديلات
دليل تعديلات Next Run
وصف تفصيلي لعمل التعديلات وهيكل الملفات ومكونات لعبة Next Run. احفظوا هذا الرابط للإجابة السريعة على أسئلتكم عند إنشاء ونشر تعديلاتكم الخاصة.
1. عام
يصف هذا المستند نظام التعديلات في لعبة Next Run: كيفية تثبيتها وإنشاء تعديلات خاصة ومشاركتها مع لاعبين آخرين.
- اقرأوا القسم 2 مرة واحدة على الأقل لفهم كيفية إنشاء التعديلات وعملها.
- استخدموا القسمين 3 و4 كمراجع.
- استخدموا أمثلة من اللعبة لرؤية كيف يعمل ذلك عملياً، في Steam Workshop: https://steamcommunity.com/app/1295870/workshop/.
- يمكن العثور على ملفات اللعبة للإصدار 1.1.0 هنا: https://clarusvictoria.com/files/next_run_files_examples_1.1.0.zip.
2. نظام التعديلات
بعد تشغيل اللعبة والضغط على زري "لعب" و"إنشاء لعبة" يتم مسح مجلد Mods داخل دليل اللعبة. كل مجلد فرعي يحتوي على ملف modinfo.json يُعتبر تعديلاً.
2.1. Steam Workshop وتثبيت ونشر التعديلات
إذا كنتم تشغلون اللعبة من عميل Steam، ستجدون في قائمة "لعب" لوحة "التعديلات" تحتوي الأزرار التالية:
- Steam Workshop
- مجلد التعديلات
- نشر
- الدليل
2.1.1. Steam Workshop
يفتح Steam Workshop داخل عميل Steam. لتحميل تعديل يجب الاشتراك فيه. بعد ذلك يبدأ التحميل تلقائياً. إذا كان حجم التعديل كبيراً فقد يستغرق التحميل بعض الوقت. تظهر حالة التحميل في عميل Steam.
2.1.2. مجلد التعديلات
يفتح مجلد تعديلات اللعبة.
2.1.3. نشر
تمسح اللعبة تلقائياً مجلد Mods وتنشر جميع التعديلات التي أنتم مؤلفوها في Steam Workshop.
- إذا كان التعديل جديداً يُولّد له steam_id تلقائياً.
- إذا كان التعديل موجوداً بالفعل فسيتم تحديثه.
- يتغير مظهر زر النشر أثناء الرفع.
- يُنشر التعديل فقط عند وجود تغييرات.
- تغيير ملف modinfo.json لا يُعتبر تغييراً في المحتوى.
- تصبح التعديلات المنشورة متاحة للاعبين الآخرين حول العالم. Steam Workshop ليس الطريقة الوحيدة لتوزيع التعديلات - يمكن أيضاً نقلها مباشرة بوضع مجلد التعديل في دليل Mods.
2.1.4. الدليل
رابط لهذا الدليل.
2.2. ملفات JSON
جميع البيانات والنصوص في اللعبة تستخدم صيغة JSON. الفرق الرئيسي عن الصيغة النصية العادية هو أن البيانات يجب أن تكون محاطة بأقواس معقوصة {}.
وصف صياغة JSON:
- https://en.wikipedia.org/wiki/JSON
- https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON
يُوصى بالاعتماد على أمثلة ملفات اللعبة.
2.3. هيكل الملفات
لكل تعديل هيكل ملفات مماثل لهيكل اللعبة. تضيف هذه الملفات محتوى جديداً أو تعدّل المحتوى الموجود. ملفات JSON تضيف أو تعدّل عناصر فردية في اللعبة. الملفات بصيغ أخرى (png وogg) تُستبدل بالكامل.
مثال: إذا أنشأتم ملف data/game.json وعدّلتم فيه الكيان 'Warrior' (فئة اللعب)، ستُعدّل هذه الفئة فقط بينما تبقى الكيانات الأخرى في game.json دون تغيير. إذا أضفتم ملف portrait_warrior_front.png فسيستبدل الصورة المقابلة في اللعبة بالكامل لتطابق الاسم.
داخل التعديل توجد ملفات ومجلدات إلزامية واختيارية. الهيكل القياسي كالتالي:
- اسم مجلد التعديل (يمكن أن يكون أي اسم، وليس اسم التعديل)
- modinfo.json
- preview.png
- data/
- icons/
- sounds/
- texts/
- tiles/
لفهم أفضل يُوصى بدراسة أمثلة اللعبة والتعديلات الموجودة. فيما يلي وصف مفصّل لكل مجلد وملف.
2.3.1. modinfo.json
ملف البيانات الوصفية للتعديل. يُستخدم جزء من هذه البيانات بواسطة Steam Workshop عند النشر.
- title - اسم التعديل، يظهر في Steam.
- version - إصدار التعديل.
- description - وصف التعديل.
- tags - وسوم للتنقل في Steam Workshop.
- order - ترتيب تحميل التعديلات. إذا عدّلت عدة تعديلات نفس البيانات، يستبدل التعديل ذو الترتيب الأعلى التعديل ذو الترتيب الأدنى.
- steam_id - لا يلزم إدخاله يدوياً، يتشكل تلقائياً عند النشر.
- created_time - وقت الإنشاء.
- changed_time - وقت التعديل.
- يُسمح بإضافة حقول أخرى، لكنها ستُستخدم فقط داخل الملف. يتحدد مؤلف التعديل تلقائياً عبر Steam Workshop.
2.3.2. preview.png
صورة (أيقونة) التعديل لـ Steam Workshop. الدقة الموصى بها 256x256 أو 512x512. النسبة مربعة. يُقبل PNG شفاف أو JPG.
2.3.3. data
مجلد ملفات بيانات JSON. يحتوي ملفات تعدّل كيانات اللعبة الموجودة أو تضيف جديدة. يمكنكم إنشاء الملفات والحقول التي تحتاجون تعديلها أو إضافتها فقط. وصف مفصل للبيانات القابلة للتعديل في القسم 3.
2.3.4. icons
مجلد أيقونات اللعبة. يحتوي معظم الصور ما عدا واجهة المستخدم والبلاطات. تُستخدم عدة أحجام وطبقات قياسية لحالات لعب مختلفة. تُستخدم في اللعبة ملفات PNG بخلفية شفافة.
2.3.5. sounds
مجلد الأصوات والموسيقى. يمكن إضافة ملفات جديدة أو استبدال الموجودة. الصيغة المستخدمة OGG.
2.3.6. texts
مجلد النصوص المترجمة في اللعبة. كل ملف يقابل لغة واحدة ويستخدم معيار IETF BCP-47 / ISO. حالياً يُدعم 13 لغة: ruRU.json وtrTR.json وjaJP.json وkoKR.json وzhTW.json وzhCN.json وplPL.json وptBR.json وitIT.json وesES.json وfrFR.json وdeDE.json وenUS.json.
2.3.7. tiles
مجلد صور البلاطات. تُستخدم ملفات PNG بخلفية شفافة. حجم البلاطة القياسي 256x384. تتكون البلاطات من عدة طبقات مثل الأرض والكائنات والغابات والجبال والطرق.
2.4. مزامنة التعديلات
بعد الحصول على تعديل تتم مزامنته تلقائياً مع آخر إصدار منشور في Steam Workshop عند كل تشغيل للعبة.
إذا كنتم مؤلف التعديل فلا تتم المزامنة ولا تُكتب فوق ملفات التعديل. هذا لضمان عدم فقدان تعديلاتكم بعد إعادة تشغيل اللعبة.
إذا أردتم إنشاء تعديل بناءً على تعديل شخص آخر، قبل إعادة تشغيل اللعبة يجب تنفيذ الخطوات التالية:
- تغيير اسم مجلد التعديل إلى أي اسم آخر مختلف عن المعرّف الخاص به.
- في ملف modinfo.json حذف الحقول: 'author' و'created_time' و'steam_id' و'changed_time'.
2.5. دمج البيانات
ملفات بيانات JSON للتعديلات واللعبة لا تُستبدل بل تُدمج.
ترتيب الدمج:
- تُؤخذ الكيانات الأصلية من ملفات JSON الخاصة باللعبة كأساس.
- تُضاف فوقها بيانات التعديلات. تُطبق التعديلات وفق الأولويات المحددة بحقل order في ملف modinfo.json.
عند الدمج تُعالج جميع حقول جميع المكونات بشكل منفصل. مثلاً إذا كان لكيان 'hideIfZero':true وتريدون أن تصبح القيمة false، لا يكفي حذف هذا الحقل بل يجب تحديد 'hideIfZero':false صراحة.
القوائم في ملف list.json تُدمج بنفس المبدأ. لا يلزم تكرار كل قائمة بجميع حقولها إذا كنتم تريدون إضافة عنصر واحد فقط. لكن القوائم التي تحتوي بيانات بسيطة فقط تُستبدل بالكامل، مثل RndGoodEvents وRndEvents.
3. المكونات
لعبة Next Run مبنية على بنية ECS. تتكون اللعبة بأكملها من كيانات. الكيان حاوية للمكونات. يحتوي الكيان فقط حقل id. جميع البيانات الأخرى تُوصف بالمكونات. جميع البيانات تُحدد في ملفات JSON.
مثال على عنصر في ملف JSON:
3.1. Button
يصف مظهر وسلوك الزر في اللعبة.
- panel = string، لوحة الزر الافتراضية. جميع الأزرار في اللعبة موجودة داخل لوحات وقوائم. استخدموا الأمثلة لاختيار اللوحة التي تريدون وضع الزر فيها.
- icon = string، اسم أيقونة الزر. يُؤخذ اسم الأيقونة من مجلد icons، ملف PNG.
- iconType = string، نوع الزر يؤثر على الحجم والعناصر على الزر. الخيارات: 'btn' - زر بسيط، 'btnBig' - زر بقيمة في الأسفل.
- color = string، لون خلفية الأيقونة مثل green وyellow. قائمة الألوان التي تفهمها اللعبة: green وsuperGreen وlightGreen وdarkGreen وred وsuperRed وdarkRed وgray وlightGray وdarkGray وlightBlue وblue وdarkBlue وdarkDarkBlue وgrayYellow وyellow وpink وcyan وdarkCyan وalmostBlack وblack وorange وdarkOrange وlightViolet وpurple وchartreuse وnum وgameBack وblank وhalfTrans وwhite وbase.
- numText1 = double، قيمة الأيقونة.
- numTextAdd = string، إضافة لقيمة الأيقونة مثل رمز '%'.
- numText1Type = string، نوع قيمة الأيقونة مثل level وtotal وduration.
- numCustom = string، قيمة فريدة للأيقونة مثل '∞'.
- numIcon = string، أيقونة بجانب القيمة مثل star للمستويات وcoin للبضائع.
- hotkey = string، مفتاح اختصار على لوحة المفاتيح.
- hide = bool، هل الزر مخفي.
- hideIfZero = bool، يخفي الزر إذا كان مكون Total.now يساوي 0.
- disabled = bool، هل الزر معطل أم مفعّل مثلاً بعض القوائم معطلة عند بداية اللعبة.
- interactable = bool، هل الزر تفاعلي افتراضياً نعم. مثال الأزرار غير التفاعلية - خانات المخزون.
- cantBeDeselect = bool، منع إلغاء تحديد هذا الزر.
- cantBeSelect = bool، منع تحديد الزر عند الضغط عليه.
- draggable = bool، هل يمكن نقل الزر بالسحب والإفلات.
- x = double، موضع الزر في الواجهة على المحور X، يُستخدم للأزرار بدون لوحات مثل خانات المخزون.
- y = double، مماثل لـ X لكن على المحور Y.
- upMiniPred = string، اسم الفعل الذي يُفحص لهذا الكيان. إذا كان الفعل متاحاً تظهر أيقونة تلميح صغيرة من نوع الترقية.
- craftMiniPred = string، تلميح مماثل لفعل الصناعة.
- raiseMiniPred = string، تلميح مماثل لفعل الإحياء.
3.2. Tooltip
يصف محتوى تلميح الزر.
- text = string، اسم الكيان المتاح في اللعبة.
- dontShowDuration = bool، منع عرض قيمة مدة الكيان.
- hideSources = bool، منع عرض الكيانات المصدرية المؤثرة على قيمة هذا الكيان.
- hideAsSubjTT = bool، منع عرض هذا الكائن كمصدر للكيانات المرتبطة.
- desc = string، نص الوصف يظهر في بداية التلميح.
- desc2 = string، نص الوصف يظهر في نهاية التلميح.
- redDesc = string، نص الوصف مميز باللون الأحمر يظهر في النهاية.
- totalTextAs = string، نص بدلاً من 'المجموع'.
- ttPos = string، موضع التلميح بالنسبة للزر الخيارات 'top' و'left'.
3.3. GameClass
يصف آليات فئة اللعب.
- text = string، اسم الفئة في اللعبة.
- portrait_back = string، صورة الخلفية عند اختيار الفئة 391x598.
- portrait_front = string، صورة الفئة عند الاختيار 411x620 شفافة.
- figurine = string، صورة الشخصية على الخريطة 149x243.
- doll = string، صورة بالأبيض والأسود للفئة في المخزون 460x784.
- bonusSkill1 = string، اسم المهارة 1 التي تحصل على مكافأة.
- bonusSkillVal1 = double، حجم مكافأة المهارة 1.
- bonusSkill2 = string، اسم المهارة 2 التي تحصل على مكافأة.
- bonusSkillVal2 = double، حجم المكافأة 2.
- debuffSkill1 = string، اسم المهارة 1 التي تحصل على عقوبة.
- debuffSkillVal1 = double، حجم العقوبة 1.
- debuffSkill2 = string، اسم المهارة 2 التي تحصل على عقوبة.
- debuffSkillVal2 = double، حجم العقوبة 2.
- gold = double، كمية الذهب لدى الفئة عند البداية.
- remains = double، عدد البقايا عند البداية.
- equip = List(string)، قائمة العناصر للتجهيز عند البداية.
- units = string، اسم المخلوق الذي سيكون عند البداية.
- itemName = string، اسم العنصر في المخزون عند البداية.
- itemNum = double، عدد العنصر في المخزون عند البداية.
- learnList = string، قائمة التعاويذ أو المخططات للتعلم، القائمة في ملف list.json.
- learnNum = double، عدد التعاويذ أو المخططات التي ستُتعلم من القائمة.
- lessTime = double، كم أقل من الوقت بين هجمات الجحيم.
- manaBonus = double، مكافأة المانا الحد الأقصى والإجمالي.
- upgradeDexterityBonusMod = double، مكافأة العناصر القابلة للترقية من مهارة البراعة.
- skillPointsPerLevel = double، عدد نقاط المهارة الممنوحة عند رفع المستوى.
- upgradeManaCostMod = double، مكافأة فعالية ترقية التعاويذ.
- freeRegion = bool، منطقة مجانية.
- necroBonus = bool، طريقة لعب ومكافآت ناكرومانسر.
- druidBonus = bool، طريقة لعب ومكافآت الدرويد.
- stances = bool، وجود وضعيات/أشكال/أوامر.
- defStance = string، الوضعية الافتراضية.
- notDemo = bool، الفئة غير متاحة في النسخة التجريبية.
- notTutorial = bool، هل الفئة متاحة في وضع التدريب.
3.4. GameMode
يصف آليات وضع اللعب.
- text = string، اسم الوضع في اللعبة.
- back = string، صورة الخلفية عند اختيار الوضع 391x598.
- moreTime = double، كم أكثر من الوقت بين هجمات الجحيم.
- lessTime = double، كم أقل من الوقت بين هجمات الجحيم.
- woundChance = double، احتمال الإصابة بجرح.
- notDemo = bool، الوضع غير متاح في النسخة التجريبية.
- scenario = string، اسم خريطة منفصلة لهذا الوضع.
- noHellAttacks = bool، لا هجمات جحيم في هذا الوضع (كما في الصندوق الرملي).
- savesOnExitOnly = bool، في هذا الوضع الحفظ فقط عند الخروج من اللعبة.
3.5. Biome
يحدد آليات البيئات الحيوية.
- frequency = double، تكرار ظهور البيئة عند توليد الخريطة كلما زاد الرقم زاد التكرار. عند 0 لا تُولّد. بيئة Lava تُولّد دائماً كمنطقة نهائية.
- hexBase = string، البلاطة الأساسية لهذه البيئة تُولّد كخلفية تحت المستوطنات.
- music = string، اسم ملف المسار الموسيقي للبيئة.
- hexPatterns = List(string)، قائمة أنماط الكائنات في البيئة. تعمل بمبدأ رزمة أوراق: تُخلط الأنماط عشوائياً ثم تُسحب عشوائياً وعند الوصول إلى 0 تُعاد إنشاء الرزمة. صيغة النمط: اسم_الكائن#اسم_الكائن، الرمز # فاصل بين الكائنات.
- mobLevel1 .. mobLevel8 = string، اسم المخلوقات المولّدة في البيئة حسب مستوى المنطقة.
3.6. TileAsset
يحدد مظهر الكائن على خريطة اللعبة.
- tileMap = string، اسم الطبقة LandTilemap - سطح الأرض وObjectTilemap - كائن عادي وRoadTilemap - طريق وما إلى ذلك، الفرق فقط في ترتيب تراكب الطبقات.
- rawSprite = string، صورة 256x384 لإضافة صورة على الخريطة.
- icon = string، أيقونة لإضافتها فوق جميع TileMap.
- buttonIcon = bool، هل يجب أخذ الأيقونة من Button.
- delLevel = double، مستوى الحذف أي مدى صعوبة إزالة الكائن بفعل ما.
3.7. Shop
يصف آليات المتجر.
- slots = int، عدد خانات المتجر.
- type = string، اسم تشكيلة المتجر الموجودة في list.json.
3.8. Item
يصف آليات العنصر.
- slot = string، اسم خانة التجهيز.
- stackable = bool، هل يمكن أن يكون العنصر أكثر من 1 في كومة واحدة.
- upgradable = bool، هل يمكن ترقية العنصر مدة الترقية تعتمد على المستوى.
- upProgress = double، مدة الترقية.
- order = double، ترتيب العنصر في المتجر كلما قل كان أعلى.
3.9. Mob
يصف آليات المخلوق.
- hell = bool، المخلوق جهنمي. عقوبة عند الرشوة. يشارك في هجمات الجحيم. مكافأة بقايا.
- undead = bool، المخلوق أوندد. لا يمكن رشوته. آلية ترقية خاصة.
- type = string، نوع المخلوق - 'Warriors' و'Defenders' و'Mages' و'Gatherers' و'Crafters'. يحدد لون الخلفية واحتمال إصابة اللاعب ونوع الضرر ونوع الغنائم.
- upMob = string، إلى ماذا يتطور المخلوق.
- upCostName = string، العنصر المطلوب للترقية.
- upCostNum = double، عدد الموارد المطلوبة للترقية افتراضياً 1.
3.10. Dungeon
يصف آليات الزنزانة.
- magic = bool، الزنزانة سحرية. يؤثر على نوع الضرر والغنائم والإضافات.
- boss = bool، الزنزانة النهائية.
3.11. Ruins
يصف آليات الأطلال - أماكن البحث عن العناصر.
3.12. Addon
آليات الإضافات. الإضافات كائنات موضوعة في خلية مع زنزانة أو أطلال تغيّر معاملاتها وتعطي مكافآت منفصلة.
- skill = string، اسم المهارة التي سيحصل عليها اللاعب عند تطهير الزنزانة أو فحص الأطلال. يمكن تحديد: 'Random' و'Strength' وغيرها.
- unit = string، اسم المخلوق الإضافي بعد إتمام الفعل. يمكن تحديد 'Random'.
- item = string، اسم العنصر الإضافي بعد إتمام الفعل. يمكن تحديد 'Random'.
- phyChanceMulti = double، معدّل احتمال الضرر الفيزيائي عند التطهير. مثلاً بنسبة 50(%).
- magChanceMulti = double، معدّل احتمال الضرر السحري عند التطهير. مثلاً بنسبة 50(%).
- progressMulti = double، كم أطول لتنفيذ فعل التطهير أو الفحص. مثلاً بنسبة 100(%).
- dmgMulti = double، معدّل حجم الضرر عند التطهير. مثلاً بنسبة 50(%).
3.13. Build
يحدد أن هذا الكائن مبنى.
3.14. Center
تحديد أن هذا الكائن مستوطنة.
- captureProgress = double، الجهد المطلوب للاستيلاء على المستوطنة.
- upProgress = double، الجهد المطلوب لترقية المستوطنة.
- upCostName1 = string، اسم العنصر 1 المطلوب للترقية.
- upCostNum1 = double، عدد العنصر 1 المطلوب للترقية.
- upCostName2 = string، مماثل للعنصر 2.
- upCostNum2 = double، مماثل للعنصر 2.
- upCostName3 = string، مماثل للعنصر 3.
- upCostNum3 = double، مماثل للعنصر 3.
- upProp = string، إلى أي مستوطنة تتطور.
3.15. Gatherable
تحديد أن هذا الكائن يمكن جمعه والحصول على موارد.
- gather = string، اسم المورد الذي سيُجمع.
- deposit = bool، هل هذا المورد مستودع إذا نعم يمكن بناء منجم هنا.
3.16. AlliedForest
تحديد آليات وقيم "الغابة الحليفة" عند اللعب بالدرويد.
- allyBonus = double، حجم مكافأة "الغابة الحليفة".
3.17. Graveyard
تحديد آلية أن هذا الكائن مقبرة وهو مهم عند اللعب بالناكرومانسر. هنا القيمة تُولّد عشوائياً لعدد البقايا القابلة للجمع.
- now = double، القيمة الحالية للبقايا.
- rndMin = double، الحد الأدنى لعدد البقايا.
- rndMax = double، الحد الأقصى لعدد البقايا.
- rndCeil = bool، التقريب للأعلى بالقيمة العشوائية.
3.18. Pred
مكون فعل. رغم أن معظم وظائف المكون مخفية في الكود إلا أن جزءاً منها متاح.
- action = string، اسم الفعل الذي سيُنفذ عند تنفيذ الإجراء.
- local = bool، هل يجب التواجد في نفس الخلية مع الكائن للتفاعل.
- attackPred = bool، هذا الفعل هجومي سيُطبق تلقائياً إذا استُخدمت تعويذة قتالية.
- gatherPred = bool، هذا الفعل جمعي سيُطبق تلقائياً إذا استُخدمت تعويذة جمع موارد.
- craftPred = bool، هذا الفعل حِرَفي سيُطبق تلقائياً إذا استُخدمت تعويذة صناعة.
- skill = string، المهارة المستخدمة لتنفيذ الفعل مثلاً للأفعال الهجومية تُستخدم مهارة الهجوم.
- longPred = bool، هذا الفعل ليس فورياً ويحتاج وقتاً.
- repeat = bool، الفعل سيتكرر حتى الإيقاف.
- noOwner = bool، هذا الفعل لا يتطلب تحديد أي كائنات.
- skipLongTooltip = bool، نسخة مبسطة من التلميح للفعل.
- onlyClass = string، هذا الفعل من نوع وضعية أو شكل أو أمر متاح فقط لفئة معينة.
3.19. Total
مكون يحدد القيمة العددية للكيان وعادة ما يكون كمية شيء ما.
- now = double، القيمة الحالية.
- inc = double، الزيادة لكل دور.
- max = double، القيمة القصوى.
- min = double، القيمة الدنيا.
- rndMin = double، الحد الأدنى للرقم العشوائي.
- rndMax = double، الحد الأقصى للرقم العشوائي يستبدل now.
- rndCeil = bool، التقريب للأعلى عند توليد القيمة العشوائية.
- overMax = bool، يسمح بتجاوز الحد الأقصى.
- delIfZero = bool، الحذف إذا كانت القيمة 0.
- numPercent = bool، هل القيمة نسبة مئوية.
3.20. Level
مكون يحدد مستوى الكيان.
- now = double، القيمة الحالية.
- max = double، القيمة القصوى.
- min = double، القيمة الدنيا.
- localLevelPlus = int، مكافأة المستوى المحلي تعمل فقط لكائنات الخريطة حيث يصبح مستواها مساوياً لمستوى المنطقة زائد قيمة localLevelPlus.
3.21. Duration
مكون يحدد مدة الكيان.
- now = double، القيمة الحالية.
- max = double، القيمة القصوى.
- min = double، القيمة الدنيا.
- delIfZero = bool، الحذف إذا كانت القيمة 0.
3.22. Mods
مكون قائمة المعدّلات. عند إنشاء هذا المكون تتشكل مجموعة تغييرات تؤثر على كيانات أخرى. عند حذف الكيان تختفي هذه التغييرات.
- radius = int، نصف القطر الذي يؤثر فيه التعديل يعمل فقط على الخريطة.
- objType = string، نوع الكيانات التي يُطبق عليها التعديل مثل 'Stat' و'Skill' و'Prop' و'Item' و'ModableVal' و'PropMod'.
- objName = string، اسم الكيان مثل 'Speed'.
- objComp = string، المكون الذي يُطبق عليه التعديل مثل 'Total' و'Level'.
- objKey = string، حقل المكون الذي يُطبق عليه التعديل مثل 'now' و'inc' و'max'.
- modType = string، طريقة التأثير على الحقل: 'add' و'mult' و'addPerLevel' و'multPerLevel'.
- now = double، قيمة المعدّل بمقدار التغيير.
- subjTooltipText = string، يُضاف إلى التلميح الديناميكي إشارة إلى الفاعل.
- skipPerTooltip = bool، استبدال PerLevel بـ Plus في التلميح.
- skipSubjTooltip = bool، تخطي التلميح لهذا الفاعل.
3.23. ModableVals
مكون قائمة المتغيرات العامة للعبة. الربط بكيان محدد اعتباري. معظم منطق العمل مع هذه المتغيرات مخفي في كود اللعبة.
- now = double، قيمة المتغير.
3.24. Slot
مكون يحدد الكيان كخانة في المخزون.
- name = string، اسم الخانة. لوضع عنصر في هذه الخانة يجب أن تتطابق قيمة حقل slot في مكون Item.
3.25. Container
يحدد هذا الكيان كحاوية بخلايا.
- cells = int، عدد الخلايا في الحاوية.
- cellsPanel = string، اسم اللوحة.
3.26. Tom
تحديد أن هذا الكيان مجلد تعاويذ يمكن دراسته والحصول على تعويذة أو ترقيتها.
- cast = string، اسم التعويذة.
3.27. Cast
تحديد أن الكيان تعويذة.
- mana = double، تكلفة التعويذة بالمانا.
- predSkill = string، عند تفعيل هذه التعويذة أي نوع من الأفعال يُشغّل مثلاً لنوع Attack تُشغّل تلقائياً الأفعال الهجومية.
- notSkills = string، تلميح بالفعل المطلوب لاستخدام هذه التعويذة.
- attack = double، مدى تسريع فعل نوع الهجوم عند تطبيق هذه التعويذة أي الضرر السحري.
- gather = double، مدى تسريع فعل نوع جمع الموارد.
- craft = double، مدى تسريع فعل نوع الصناعة.
- heal = double، مدى شفاء بطل اللاعب.
- newEvent = string، اسم الحدث الذي تستدعيه التعويذة وعادة أحداث من نوع التعزيزات.
- teleport = bool، الانتقال الآني إلى الموقع المختار.
- explore = double، يستكشف هذه الخلية والمجاورة.
3.28. Blueprint
آليات كيان المخطط.
- item = string، اسم العنصر الذي سيُنشأ.
- build = string، اسم المبنى الذي سيُبنى.
- costName1 = string، اسم العنصر 1 المطلوب للإنشاء.
- costNum1 = double، عدد العنصر 1 المطلوب للإنشاء.
- costName2 = string، مماثل للعنصر 2.
- costNum2 = double، مماثل للعنصر 2.
- costName3 = string، مماثل للعنصر 3.
- costNum3 = double، مماثل للعنصر 3.
3.29. Cost
مكون السعر يحدد أن الكيان يمكن شراؤه وبيعه.
- raw = double، السعر الأساسي بدون معدّلات. يُحسب سعر الشراء والبيع منه.
3.30. Event
مكون للأحداث.
- uniq = bool، الحدث فريد ظهور حدث متكرر بنفس الاسم سيحذف القديم.
- rndEvent = bool، الحدث عشوائي.
- nextEvent1 = string، اسم الحدث الأول الذي سيبدأ عند انتهاء الحالي.
- nextEvent2 = string، اسم الحدث الثاني الذي سيبدأ عند انتهاء الحالي.
- castType = string، نوع التأثير التعزيزي للتعويذة يستبدل النوع المماثل.
3.31. Proc
مكون عمل الاحتمالات مثل احتمال الإصابة بمرض.
- addEvent = string، الحدث الذي سيُشغّل إذا تحقق الاحتمال.
3.32. ProcMod
مكون يمنح الكيان القدرة على التأثير في احتمالات الأحداث.
- proc = string، اسم الاحتمال الذي يؤثر فيه هذا المكون.
- chance = double، قوة التأثير جزء من الوظائف في الكود.
- dependsLevel = bool، الاعتماد على مستوى الكيان.
3.33. Usable
مكونات الاستخدام لمرة واحدة التي تعطي تأثيراً مثل الجرعات. يُفعّل المكون عند استخدام فعل الاستخدام.
- stat = string، اسم الإحصائية التي يؤثر فيها التأثير.
- skill = string، اسم المهارة التي يؤثر فيها التأثير.
- nowBonus = double، مكافأة تؤثر على حقل Total.now للمكون.
- maxBonus = double، مكافأة تؤثر على حقل Total.max للمكون.
- cure = bool، هل يشفي العنصر من تأثير المرض.
3.34. Drankable
مكون يسمح بالشرب من كائن على الخريطة مثل البحيرة والواحات وما شابه.
3.35. Sphinx
مكون مهمة على الخريطة أبو الهول. تتحدد المعاملات تلقائياً بناءً على مستويات المنطقة.
3.36. Living_tree
مكون مهمة على الخريطة الشجرة الحية. تتحدد المعاملات تلقائياً بناءً على مستويات المنطقة.
3.37. Vision
آلية كائن على الخريطة يفتح نصف قطر رؤية أكبر عند دخول بطل اللاعب إلى الموقع مع الكيان.
- explore = int، نصف قطر الاستكشاف. 1 - استكشاف عادي، 2 - موسّع بخلية واحدة.
3.38. Remains
وصف الكيان كمكون بقايا. يسمح بتحويل هذه الكيانات إلى أوندد.
3.39. Audio_comp
مكون يسمح بتشغيل أصوات لكيان محدد حسب نوعه.
- click = string، صوت عند الضغط على الكيان يُستخدم للأفعال والتعاويذ.
- added = string، صوت يُشغّل عند إنشاء الكيان يُستخدم للأحداث.
- ambient1 = string، صوت محيطي مسار 1.
- ambient2 = string، صوت محيطي مسار 2.
- ambient3 = string، صوت محيطي مسار 3.
- process = List(string)، قائمة أسماء الأصوات التي تُشغّل أثناء تنفيذ الفعل.
- waits = List(double)، قائمة فترات التوقف بين تشغيل الأصوات.
- finish = string، صوت انتهاء تنفيذ الفعل.
- rndProcess = bool، تأثيرات عشوائية طفيفة للأصوات أثناء التشغيل.
3.40. Childs
مكون ينشئ كيانات جديدة بشكل تعاودي.
- list = List(Entity)، قائمة الأبناء التي تُنشأ وتُربط تلقائياً لكيان محدد.
3.41. Preds
مكون ينشئ أفعالاً لكيان محدد رغم أن معظم الكيانات تُحدد في كود اللعبة.
- list = List(string).
3.42. Equip
مكون علامة يعني أن هذا العنصر يمكن تجهيزه على البطل.
3.43. Res
مكون مؤشر أن هذا الكيان مورد. مطلوب للتلميحات والرسوم المتحركة وملخص اللعبة.
3.44. TurnAct
المكون يعني أن الكيان يجب فحصه كل نبضة زمنية في اللعبة مثلاً لمكوني Total وDuration.
4. القوائم
في ملف list.json مجموعة أقسام بيانات ليست كيانات أو مكونات. تحدد قوائم مختلفة لتوليد المحتوى في اللعبة.
4.1. RndGoodEvents
قائمة الأحداث العشوائية الجيدة التي تُولّد فوراً عند بداية اللعبة.
4.2. RndEvents
قائمة الأحداث العشوائية الجيدة والسيئة التي ستُولّد أثناء اللعبة.
4.3. Generator_dungeon_addons_physical
قائمة الإضافات التي ستُولّد للزنزانات ذات الضرر الفيزيائي.
4.4. Generator_dungeon_addons_magical
قائمة الإضافات التي ستُولّد للزنزانات ذات الضرر السحري.
4.5. Generator_ruins_addons
قائمة الإضافات التي ستُولّد للأطلال.
4.6. Generator_settlement_levels
قائمة التطابق بين مستويات المناطق وأسماء كيانات المستوطنات مثلاً 'lvl1':'Village' تعني أنه في المنطقة من المستوى الأول ستُولّد مستوطنة من نوع Village.
4.7. Generator_rar_metals
قائمة التطابق بين مستويات المناطق وأسماء المستودعات مثلاً 'lvl2':'Deposit_tin' تعني أنه في المنطقة من المستوى الثاني سيُولّد مستودع قصدير.
4.8. Generator_mages
قائمة التطابق بين مستويات المناطق وأسماء السحرة الذين سيُولّدون ويحرسون أبراج السحرة مثلاً 'lvl3':'Priestesses' تعني أنه في المنطقة من المستوى الثالث ستُولّد كاهنات.
4.9. LevelMobs_
قوائم المخلوقات لمستويات مناطق مختلفة التي يحصل عليها اللاعب بعد تحرير الأسرى عند تطهير زنزانة أو فحص أطلال.
4.10. Crafter_start, Lord_start, Mage_start,
قوائم متنوعة من الأشياء التي تحصل عليها فئات اللعب المختلفة عند البداية في مكون GameClass في حقل learnList. عدد الأشياء يُولّد في حقل learnNum.
- obj = string، اسم الشيء.
- min = double، الحد الأدنى للرقم العشوائي.
- max = double، الحد الأقصى للرقم العشوائي.
- chance = double، احتمال توليد هذا الشيء بالذات.
- يمكن إنشاء قوائم أخرى وربطها لفئات مختلفة إذا كنتم بحاجة لتعلم مخططات أو تعاويذ أخرى.
4.11. Gold_
تحدد هذه القائمة كمية الذهب المولّد حسب مستوى المنطقة. يظهر الذهب باحتمال 50% في جميع أنواع المكافآت على الخريطة. انظروا البند 4.10 للصياغة.
4.12. Loot_-
مجموعة قوائم تحدد توليد المكافآت حسب مستوى المنطقة. تُطبق للمخلوقات والزنزانات والأطلال. للمخلوقات تحدد احتمال سقوط أشياء محددة باحتمال 50% وللـ 50% الأخرى تُستخدم قوائم البند 4.13. انظروا البند 4.10 للصياغة.
4.13. Warriors_, Defenders_, Mages_, Gatherers_, Crafters_,
مجموعة قوائم تحدد توليد المكافآت حسب مستوى المنطقة وفئة المخلوقات. تُطبق فقط للمخلوقات. هذه القوائم امتداد لقوائم نوع Loot_ وتعمل في 50% من الحالات لتوليد مكافآت تعتمد على الفئة مثلاً عندما يُراد أن يسقط من السحرة مجلدات تعاويذ وعصي بشكل أكثر. انظروا البند 4.10 للصياغة.
4.14. Shop_, Books_
قوائم لمستويات مناطق مختلفة مثل Books5 أو Shop6. تُستخدم لتوليد تشكيلة المتاجر. انظروا البند 4.10 للصياغة. تُحدد هذه القوائم في مكون Shop حقل type وللأبراج تُولّد من كود اللعبة.
