1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-23 22:37:55 +02:00

Added markdownlint to Github CI

- Markdown will now be validated as part of Github CI
- Applied auto-fix to most common issues (mostly whitespace related)
- Fixed manually some of more complex cases

Some valid markdownlint rules are currently disabled, to avoid failing
CI, can be enabled in future
This commit is contained in:
Ivan Savenko
2024-11-30 20:20:15 +00:00
parent d4b2ec5b0b
commit 74a4a10f48
78 changed files with 2192 additions and 1360 deletions

View File

@@ -6,9 +6,9 @@ Artifact bonuses use [Bonus Format](../Bonus_Format.md)
In order to make functional artifact you also need:
- Icon for hero inventory (1 image)
- Icon for popup windows (1 image, optional)
- Animation for adventure map (1 animation)
- Icon for hero inventory (1 image)
- Icon for popup windows (1 image, optional)
- Animation for adventure map (1 animation)
## Format

View File

@@ -24,4 +24,4 @@
// If set to true, obstacle will appear in front of units or other battlefield objects
"foreground" : false
```
```

View File

@@ -22,4 +22,4 @@
// List of battle hexes that will be always blocked on this battlefield (e.g. ship to ship battles)
"impassableHexes" : [ 10, 20, 50 ],
```
```

View File

@@ -38,5 +38,3 @@ Currently algorithm picks randomly:
- One or two sets of **rocks** (small objects)
- One of each remaining types of object (**structure**, **animal**, **other**), until enough number of sets is picked.
- Obstacles marked as **other** are picked last, and are generally rare.

View File

@@ -8,22 +8,22 @@ In order to make functional creature you also need:
### Animation
- Battle animation (1 def file)
- Set of rendered projectiles (1 def files, shooters only)
- Adventure map animation (1 def file)
- Battle animation (1 def file)
- Set of rendered projectiles (1 def files, shooters only)
- Adventure map animation (1 def file)
### Images
- Small portrait for hero exchange window (1 image)
- Large portrait for hero window (1 image)
- Small portrait for hero exchange window (1 image)
- Large portrait for hero window (1 image)
### Sounds
- Set of sounds (up to 8 sounds)
- Set of sounds (up to 8 sounds)
## Format
``` javascript
``` jsonc
// camelCase unique creature identifier
"creatureName" :
{
@@ -217,4 +217,4 @@ In order to make functional creature you also need:
...
]
}
```
```

View File

@@ -5,6 +5,7 @@ This page helps you to create a creature (i.e. a unit that fights in a battle) f
## Utilities
You need to download the two utilities [`DefPreview`](https://sourceforge.net/projects/grayface-misc/files/DefPreview-1.2.1/) and [`H3DefTool`](https://sourceforge.net/projects/grayface-misc/files/H3DefTool-3.4.2/) from the internet:
- `DefPreview` converts a `.def` file to `.bmp` images
- `H3DefTool` converts `.bmp` images to a `.def` file
@@ -21,7 +22,9 @@ The sun is always at zenith, so the shadow is always behind. The reason is that
We don't know the right elevation angle for the view.
### 3D render
You can render your creature using a 3D software like _Blender_. You can start with those free-licenced rigged 3D models:
You can render your creature using a 3D software like *Blender*. You can start with those free-licenced rigged 3D models:
- [Fantasy-bandit](https://www.cgtrader.com/free-3d-models/character/man/fantasy-bandit)
- [Monster-4](https://www.cgtrader.com/free-3d-models/character/fantasy-character/monster-4-f5757b92-dc9c-4f5e-ad0d-593203d14fe2)
- [Crypt-fiend-modular-character](https://www.cgtrader.com/free-3d-models/character/fantasy-character/crypt-fiend-modular-character-demo-scene)
@@ -33,57 +36,60 @@ You can render your creature using a 3D software like _Blender_. You can start w
- [Shani](https://www.cgtrader.com/free-3d-models/character/woman/shani-3d-character)
You can also create your 3D model from a single image:
- _Stable Fast 3D_: https://huggingface.co/spaces/stabilityai/stable-fast-3d
- _Unique3D_: https://huggingface.co/spaces/abreza/Unique3D
To use it in _Blender_, create a `.blend` project and import the file. To render the texture:
1. Add a _Principled BSDF_ material to the object
1. Create a _Color Attribute_ in the _Shader Editor_ view
1. Link the Color output of the _Color Attribute_ to the _Base color_ input of the _Principled BSDF_
- *Stable Fast 3D*: <https://huggingface.co/spaces/stabilityai/stable-fast-3d>
- *Unique3D*: <https://huggingface.co/spaces/abreza/Unique3D>
You can improve details by cropping the source image on a detail and generate a model for this detail. Once both imported in _Blender_, melt them together.
To use it in *Blender*, create a `.blend` project and import the file. To render the texture:
Render the images without background by selecting png RVBA and disabling background (_Film_ -> _Filter_ -> _Transparent_). It avoids the creatures to have an ugly dark border. Then, to correctly separate the creature from the cyan area, in _GIMP_, apply the threeshold on the transparency by clicking on _Layer_ -> _Transparency_ -> _Alpha threeshold_.
1. Add a *Principled BSDF* material to the object
1. Create a *Color Attribute* in the *Shader Editor* view
1. Link the Color output of the *Color Attribute* to the *Base color* input of the *Principled BSDF*
You can improve details by cropping the source image on a detail and generate a model for this detail. Once both imported in *Blender*, melt them together.
Render the images without background by selecting png RVBA and disabling background (*Film* -> *Filter* -> *Transparent*). It avoids the creatures to have an ugly dark border. Then, to correctly separate the creature from the cyan area, in *GIMP*, apply the threeshold on the transparency by clicking on *Layer* -> *Transparency* -> *Alpha threeshold*.
The global FPS of the game is 10 f/s but you can render at a higher level and configure it in the `.json` files. We are not in the 1990's.
### IA render
You can also use an AI like _Flux_ to generate the main creature representation: https://huggingface.co/spaces/multimodalart/FLUX.1-merged
You can also use an AI like *Flux* to generate the main creature representation: <https://huggingface.co/spaces/multimodalart/FLUX.1-merged>
Then you can add random animations for idle states with _SVD_: https://huggingface.co/spaces/xi0v/Stable-Video-Diffusion-Img2Vid
Then you can add random animations for idle states with *SVD*: <https://huggingface.co/spaces/xi0v/Stable-Video-Diffusion-Img2Vid>
Most of the time, the creatures do not move more than one pixel in an idle animation. The reason may be to avoid too much animation on screen and make the transition with the other animations always seamless. Use poses with _ControlNet_ or _OpenPose_. For specific animations, I recommend to use _Cinemo_ because it adds a description prompt but the resolution is smaller: https://huggingface.co/spaces/maxin-cn/Cinemo
Most of the time, the creatures do not move more than one pixel in an idle animation. The reason may be to avoid too much animation on screen and make the transition with the other animations always seamless. Use poses with *ControlNet* or *OpenPose*. For specific animations, I recommend to use *Cinemo* because it adds a description prompt but the resolution is smaller: <https://huggingface.co/spaces/maxin-cn/Cinemo>
Make animations seamless from one to another. To do this, you can draw the first and the last images with a prompt with _ToonCrafter_: https://huggingface.co/spaces/ChristianHappy/tooncrafter
Make animations seamless from one to another. To do this, you can draw the first and the last images with a prompt with *ToonCrafter*: <https://huggingface.co/spaces/ChristianHappy/tooncrafter>
Most of the time, you need to increase the resolution or the quality of your template image, so use _SUPIR_: https://huggingface.co/spaces/Fabrice-TIERCELIN/SUPIR
Most of the time, you need to increase the resolution or the quality of your template image, so use *SUPIR*: <https://huggingface.co/spaces/Fabrice-TIERCELIN/SUPIR>
## Battle sound effect
To create the audio effects, I recommend to use _Tango 2_: https://huggingface.co/spaces/declare-lab/tango2
To create the audio effects, I recommend to use *Tango 2*: <https://huggingface.co/spaces/declare-lab/tango2>
The quality is better than _Stable Audio_.
The quality is better than *Stable Audio*.
## Map render
We don't know the right elevation angle for the view but 45° elevation seems to be a good choice. For the sunlight direction, I would say 45° elevation and 45° azimut.
The map creatures are not rendered on the map with vanishing points but in isometric. You can [get an orthogonal render in Blender](https://blender.stackexchange.com/a/135384/2768). If you are creating a creature and its updated version, most of the time, the both creatures are not oriented to the same side on the map. I think that the animation on the map is usually the _Mouse Over_ animation on battle.
The map creatures are not rendered on the map with vanishing points but in isometric. You can [get an orthogonal render in Blender](https://blender.stackexchange.com/a/135384/2768). If you are creating a creature and its updated version, most of the time, the both creatures are not oriented to the same side on the map. I think that the animation on the map is usually the *Mouse Over* animation on battle.
You can see that the view angle is higher than on a battle. To change the angle from a battle sprite, you can use _Zero 1-to-3_: https://huggingface.co/spaces/cvlab/zero123-live
You can see that the view angle is higher than on a battle. To change the angle from a battle sprite, you can use *Zero 1-to-3*: <https://huggingface.co/spaces/cvlab/zero123-live>
You can get higher resolution using this Video AI that can control the motion of the camera: https://huggingface.co/spaces/TencentARC/MotionCtrl_SVD
You can get higher resolution using this Video AI that can control the motion of the camera: <https://huggingface.co/spaces/TencentARC/MotionCtrl_SVD>
If you have a 3D software, you can get better quality by converting your image into 3D model and then render it from another angle using _Stable Fast 3D_: https://huggingface.co/spaces/stabilityai/stable-fast-3d
If you have a 3D software, you can get better quality by converting your image into 3D model and then render it from another angle using *Stable Fast 3D*: <https://huggingface.co/spaces/stabilityai/stable-fast-3d>
Follow this comment to retrieve the color: https://huggingface.co/stabilityai/TripoSR/discussions/1#65e8a8e5e214f37d85dad366
Follow this comment to retrieve the color: <https://huggingface.co/stabilityai/TripoSR/discussions/1#65e8a8e5e214f37d85dad366>
### Shadow render
There are no strong rules in the original game about the angle of the shadows on the map. Different buildings have inconsistent shadows. To draw the shadow, I recommend the following technique:
Let's consider that the object is a vertical cone:
| | | | | | | | | | |
|---|---|---|---|---|---|---|---|---|---|
| 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 |
@@ -98,6 +104,7 @@ Let's consider that the object is a vertical cone:
| 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 |
Locate the top and its projection to the ground:
| | | | | | | | | | |
|---|---|---|---|---|---|---|---|---|---|
| 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 |
@@ -112,6 +119,7 @@ Locate the top and its projection to the ground:
| 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 |
Then draw a rectangle triangle on the left:
| | | | | | | | | | |
|---|---|---|---|---|---|---|---|---|---|
| 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 |
@@ -126,6 +134,7 @@ Then draw a rectangle triangle on the left:
| 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 |
The square top is the projection of the shadow of the top of the cone:
| | | | | | | | | | |
|---|---|---|---|---|---|---|---|---|---|
| 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 |
@@ -140,6 +149,7 @@ The square top is the projection of the shadow of the top of the cone:
| 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 |
Then you can draw the rest of the shadow:
| | | | | | | | | | |
|---|---|---|---|---|---|---|---|---|---|
| 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 | 🟦 |

View File

@@ -8,42 +8,42 @@ In order to make functional town, you also need:
### Images
- Creature backgrounds images, 120x100 and 130x100 versions (2 images)
- Set of puzzle map pieces (48 images)
- Background scenery (1 image)
- Mage guild window view (1 image)
- Town hall background (1 image)
- Creature backgrounds images, 120x100 and 130x100 versions (2 images)
- Set of puzzle map pieces (48 images)
- Background scenery (1 image)
- Mage guild window view (1 image)
- Town hall background (1 image)
- Set of town icons, consists from all possible combinations of: (8
- Set of town icons, consists from all possible combinations of: (8
images total)
- small and big icons
- village and fort icons
- built and normal icons
- small and big icons
- village and fort icons
- built and normal icons
- Set for castle siege screen, consists from:
- Background (1 image)
- Destructible towers (3 parts, 3 images each)
- Destructible walls (4 parts, 3 images each)
- Static walls (3 images)
- Town gates (5 images)
- Moat (2 images)
- Set for castle siege screen, consists from:
- Background (1 image)
- Destructible towers (3 parts, 3 images each)
- Destructible walls (4 parts, 3 images each)
- Static walls (3 images)
- Town gates (5 images)
- Moat (2 images)
### Animation
- Adventure map images for village, town and capitol (3 def files)
- Adventure map images for village, town and capitol (3 def files)
### Music
- Town theme music track (at least 1 music file)
- Town theme music track (at least 1 music file)
### Buildings
Each town requires a set of buildings (Around 30-45 buildings)
- Town animation file (1 animation file)
- Selection highlight (1 image)
- Selection area (1 image)
- Town hall icon (1 image)
- Town animation file (1 animation file)
- Selection highlight (1 image)
- Selection area (1 image)
- Town hall icon (1 image)
## Faction node (root entry for town configuration)
@@ -340,7 +340,9 @@ Each town requires a set of buildings (Around 30-45 buildings)
```
## Building node
See [Town Building Format](Town_Building_Format.md)
## Structure node
See [Town Building Format](Town_Building_Format.md)
See [Town Building Format](Town_Building_Format.md)

View File

@@ -3,90 +3,109 @@
This page helps you to create from scratch a VCMI mod that adds a new faction. The faction mod structure is described [here](Faction_Format.md).
## Questioning the faction creation
Before creating a faction, be aware that creating a faction mod is lots of work. You can start [creating creatures](Creature_Help.md) in a creature mod that can be converted into a faction mod after. This way, you are sure to release something. The smallest contribution is a hero portrait that you can suggest on an existing mod. You can also restore the former version of the [Ruins faction](https://github.com/vcmi-mods/ruins-town/tree/1bea30a1d915770e2fd0f95d158030815ff462cd). You would only have to remake the similar parts to the new version.
## Make a playable faction mod
Before creating your content, retrieve the content of an existing faction mod like [Highlands town](https://github.com/vcmi-mods/highlands-town). To download the project, click on the _Code_ button and click on _Download ZIP_. The first thing to do is to change all the faction identifiers in the files following the [faction format](Faction_Format.md) and manage to play with the faction and the original without any conflict. To play to a faction, you have to add all the files in your _Mods_ folder. When it works, you will be able to modify the content step by step.
Before creating your content, retrieve the content of an existing faction mod like [Highlands town](https://github.com/vcmi-mods/highlands-town). To download the project, click on the *Code* button and click on *Download ZIP*. The first thing to do is to change all the faction identifiers in the files following the [faction format](Faction_Format.md) and manage to play with the faction and the original without any conflict. To play to a faction, you have to add all the files in your *Mods* folder. When it works, you will be able to modify the content step by step.
Keep in mind that the most important part of a faction mod, above the animations, the graphisms and the musics, is the concept because if you have to change it, you have to change everything else. All the remaining content can be improved by the community.
## Town screen
### Background
Beware to direct all the shadows to the same direction. The easiest way to create the background is to use a text-to-image AI. The free most powerful AI at the moment is _Flux_ available here: https://huggingface.co/spaces/multimodalart/FLUX.1-merged
In the _Advanced Options_, set the width to 800px and set the height to 374px.
### Background
Beware to direct all the shadows to the same direction. The easiest way to create the background is to use a text-to-image AI. The free most powerful AI at the moment is *Flux* available here: <https://huggingface.co/spaces/multimodalart/FLUX.1-merged>
In the *Advanced Options*, set the width to 800px and set the height to 374px.
### Buildings
To render a building upon the background, I recommend to use an inpainting AI like _BRIA Inpaint_: https://huggingface.co/spaces/briaai/BRIA-2.3-Inpainting
To render a building upon the background, I recommend to use an inpainting AI like *BRIA Inpaint*: <https://huggingface.co/spaces/briaai/BRIA-2.3-Inpainting>
The idea is to select the area where you want to add the building. As a prompt, describe the new building. The advantage is a perfect match between the background and the building. Keep in mind that to correctly integrate a building image, it must contain the image of the background on its edges. It simulates the semi-transparency.
You can also animate the building or the background using _Stable Video Diffusion_: https://huggingface.co/spaces/multimodalart/stable-video-diffusion
You can also animate the building or the background using *Stable Video Diffusion*: <https://huggingface.co/spaces/multimodalart/stable-video-diffusion>
## Map dwellings
You may want to get the same render as in the town, so you have to change the angle and the shadows. If you handle a 3D model software, you can start with _Stable Fast 3D_: https://huggingface.co/spaces/stabilityai/stable-fast-3d
You may want to get the same render as in the town, so you have to change the angle and the shadows. If you handle a 3D model software, you can start with *Stable Fast 3D*: <https://huggingface.co/spaces/stabilityai/stable-fast-3d>
The map dwellings are not rendered on the map with vanishing points but in isometric. You can [get an orthogonal render in Blender](https://blender.stackexchange.com/a/135384/2768).
Without 3D, you can use _Zero 1-to-3_: https://huggingface.co/spaces/cvlab/zero123-live
Without 3D, you can use *Zero 1-to-3*: <https://huggingface.co/spaces/cvlab/zero123-live>
You can get higher resolution using this Video AI that can control the motion of the camera: https://huggingface.co/spaces/TencentARC/MotionCtrl_SVD
You can get higher resolution using this Video AI that can control the motion of the camera: <https://huggingface.co/spaces/TencentARC/MotionCtrl_SVD>
The buildings on the map are more satured than on town screen. If you have to reduce the size of an image, do not use interpolation (LANCZOS, Bilinear...) to get more details, not a blurred image. If you need to increase the resolution or the quality of your template image, use _SUPIR_: https://huggingface.co/spaces/Fabrice-TIERCELIN/SUPIR
The buildings on the map are more satured than on town screen. If you have to reduce the size of an image, do not use interpolation (LANCZOS, Bilinear...) to get more details, not a blurred image. If you need to increase the resolution or the quality of your template image, use *SUPIR*: <https://huggingface.co/spaces/Fabrice-TIERCELIN/SUPIR>
## Map buildings
The AIs badly understand the sun direction and the perspective angles. To generate the buildings on the adventure map:
1. Open the HOMM3 map editor
1. Put items all around a big empty area
1. Make a screenshot
1. Go on an AI like _BRIA Inpaint_: https://huggingface.co/spaces/briaai/BRIA-2.3-Inpainting
1. Go on an AI like *BRIA Inpaint*: <https://huggingface.co/spaces/briaai/BRIA-2.3-Inpainting>
1. Inpaint the (big) empty middle with the brush
1. Use a prompt like: `A dark house, at the center of the image, map, isometric, parallel perspective, sunlight from the bottom right`
## Music
Here are unused available themes:
* [Synthetic Horizon](https://github.com/Fabrice-TIERCELIN/forge/raw/theme/content/music/factions/theme.ogg)
1. Prompt: `Dystopy, Cinematic classical, Science fiction, 160 bpm, Best quality, Futuristic`
1. Initially created for: _Forge town_
1. Initially created for: *Forge town*
* [Quantum Overture](https://github.com/Fabrice-TIERCELIN/asylum-town/raw/theme/asylum-town/content/Music/factions/AsylumTown.ogg)
1. Prompt: `Clef shifting, Fantasy, Mystical, Overworldly, Cinematic classical`
1. Initially created for: _Asylum town_
1. Initially created for: *Asylum town*
* [Warrior s March](https://github.com/vcmi-mods/ruins-town/assets/20668759/964f27de-6feb-4ef6-9d25-455f52938cef)
1. Prompt: `Powerful percussions, Drums, Battle Anthem, Rythm, Warrior, 160 bpm, Celtic, New age, Instrumental, Accoustic, Medieval`
1. Initially created for: _Ruins town_
1. Initially created for: *Ruins town*
* [Clan of Echoes](https://github.com/Fabrice-TIERCELIN/ruins-town/raw/theme/ruins-town/content/music/ruins.ogg)
1. Prompt: `new age, medieval, celtic, warrior, battle, soundtrack, accoustic, drums, rythm`
1. Initially created for: _Ruins town_
1. Initially created for: *Ruins town*
* [Enchanted Reverie](https://github.com/Fabrice-TIERCELIN/grove/raw/theme/Grove/content/Music/factions/GroveTown.ogg)
1. Prompt: `Classical music, Soundtrack, Score, Instrumental, 160 bpm, ((((fantasy)))), mystic`
1. Initially created for: _Grove town_
1. Initially created for: *Grove town*
* [World Discovery](https://github.com/vcmi-mods/asylum-town/assets/20668759/34438523-8a44-44ca-b493-127501b474a6)
1. Prompt: `Clef shifting, fantasy, mystical, overworldly, Cinematic classical`
1. Initially created for: _Asylum town_
1. Initially created for: *Asylum town*
* [Enchanted Ballad](https://github.com/vcmi-mods/fairy-town/assets/20668759/619e6e33-d940-4899-8c76-9c1e8d3d20aa)
1. Prompt: `Females vocalize, Cinematic classical, Harp, Fairy tale, Princess, 160 bpm`
1. Initially created for: _Fairy town_
1. Initially created for: *Fairy town*
* [Baroque Resurgence](https://github.com/Fabrice-TIERCELIN/courtyard_proposal/raw/theme/Courtyard/Content/music/factions/courtyard/CourtTown.ogg)
1. Prompt: `Baroque, Instrumental, 160 bpm, Cinematic classical, Best quality`
1. Initially created for: _Courtyard town_
1. Initially created for: *Courtyard town*
* [Harvest Parade](https://github.com/Fabrice-TIERCELIN/greenhouse-town/raw/theme/Greenhouse/content/Music/town.ogg)
1. Prompt: `Marching band, Best quality, Happy, Vegetables`
1. Initially created for: _Green town_
Those themes have been generated using _[Udio](https://udio.com)_.
1. Prompt: `Marching band, Best quality, Happy, Vegetables`
1. Initially created for: *Green town*
Those themes have been generated using *[Udio](https://udio.com)*.
## Screenshots
Most of the time, the first screenshot is the townscreen because it's the most specific content.
## Recycle
Some mods contain neutral heroes or creatures. You can integrate them in your faction mod. Don't forget to remove the content from the original mod.
Some mods contain neutral heroes or creatures. You can integrate them in your faction mod. Don't forget to remove the content from the original mod.

View File

@@ -4,12 +4,12 @@
In order to make functional hero class you also need:
- Adventure animation (1 def file)
- Battle animation, male and female version (2 def files)
- Adventure animation (1 def file)
- Battle animation, male and female version (2 def files)
## Format
``` javascript
``` jsonc
// Unique identifier of hero class, camelCase
"myClassName" :
{
@@ -106,4 +106,4 @@ In order to make functional hero class you also need:
"conflux" : 6
}
}
```
```

View File

@@ -4,12 +4,12 @@
In order to make functional hero you also need:
- Portraits, small and big versions (2 images)
- Specialty icons, small and big versions (2 images)
- Portraits, small and big versions (2 images)
- Specialty icons, small and big versions (2 images)
## Format
``` javascript
``` jsonc
"myHeroName" :
{
// Identifier of class this hero belongs to. Such as knight or battleMage
@@ -133,4 +133,4 @@ In order to make functional hero you also need:
"creature" : "griffin"
}
}
```
```

View File

@@ -28,4 +28,4 @@
...
]
}
```
```

View File

@@ -17,4 +17,4 @@
// How many movement points needed to move hero
"moveCost" : 66
}
```
```

View File

@@ -123,4 +123,4 @@ boost at advanced and expert levels.
}
}
}
```
```

View File

@@ -2,7 +2,7 @@
## Main format
``` javascript
``` jsonc
{
"spellName":
{
@@ -156,7 +156,7 @@
TODO
``` javascript
``` jsonc
{
"projectile": [
{"minimumAngle": 0 ,"defName":"C20SPX4"},
@@ -179,7 +179,7 @@ Json object with data common for all levels can be put here. These configuration
This will make spell affect single target on all levels except expert, where it is massive spell.
``` javascript
``` jsonc
"base":{
"range": 0
},
@@ -192,7 +192,7 @@ This will make spell affect single target on all levels except expert, where it
TODO
``` javascript
``` jsonc
{
//Mandatory, localizable description. Use {xxx} for formatting
@@ -262,7 +262,7 @@ Configurable spells ignore *offensive* flag, *effects* and *cumulativeEffects*.
TODO
``` javascript
``` jsonc
"mod:effectId":{
@@ -283,7 +283,7 @@ TODO
TODO
``` javascript
``` jsonc
"mod:effectId":{
@@ -304,7 +304,7 @@ TODO
Configurable version of Clone spell.
``` javascript
``` jsonc
"mod:effectId":{
@@ -320,7 +320,7 @@ TODO
If effect is automatic, spell behave like offensive spell (uses power, levelPower etc)
``` javascript
``` jsonc
"mod:effectId":{
@@ -368,7 +368,7 @@ TODO
If effect is automatic, spell behave like \[de\]buff spell (effect and
cumulativeEffects ignored)
``` javascript
``` jsonc
"mod:effectId":{
@@ -389,21 +389,21 @@ cumulativeEffects ignored)
TODO
- CREATURE target (only battle spells)
- range 0: smart assumed single creature target
- range "X" + smart modifier = enchanter casting, expert massive spells
- range "X" + no smart modifier = armageddon, death ripple, destroy undead
- any other range (including chain effect)
- smart modifier: smth like cloud of confusion in H4 (if I remember correctly :) )
- no smart modifier: like inferno, fireball etc. but target only creature
- range 0: smart assumed single creature target
- range "X" + smart modifier = enchanter casting, expert massive spells
- range "X" + no smart modifier = armageddon, death ripple, destroy undead
- any other range (including chain effect)
- smart modifier: smth like cloud of confusion in H4 (if I remember correctly :) )
- no smart modifier: like inferno, fireball etc. but target only creature
- NO_TARGET
- no target selection,(abilities, most adventure spells)
- no target selection,(abilities, most adventure spells)
- LOCATION
- any tile on map/battlefield (inferno, fireball etc.), DD also here but with special handling
- clearTarget - destination hex must be clear (unused so far)
- clearAfffected - all affected hexes must be clear (forceField, fireWall)
- any tile on map/battlefield (inferno, fireball etc.), DD also here but with special handling
- clearTarget - destination hex must be clear (unused so far)
- clearAfffected - all affected hexes must be clear (forceField, fireWall)
- OBSTACLE target
- range 0: any single obstacle
- range X: all obstacles
- range 0: any single obstacle
- range X: all obstacles

View File

@@ -75,4 +75,4 @@
"terrainViewPatterns" : "",
}
```
```

View File

@@ -4,16 +4,19 @@
Each building requires following assets:
- Town animation file (1 animation file)
- Selection highlight (1 image)
- Selection area (1 image)
- Town hall icon (1 image)
- Town animation file (1 animation file)
- Selection highlight (1 image)
- Selection area (1 image)
- Town hall icon (1 image)
## Examples
These are just a couple of examples of what can be done in VCMI. See vcmi configuration files to check how buildings from Heroes III are implemented or other mods for more examples
####
##### Order of Fire from Inferno:
##### Order of Fire from Inferno
```jsonc
"special4": {
"requires" : [ "mageGuild1" ],
@@ -34,9 +37,10 @@ These are just a couple of examples of what can be done in VCMI. See vcmi config
]
}
}
```
```
##### Mana Vortex from Dungeon
```jsonc
"special2": {
"requires" : [ "mageGuild1" ],
@@ -65,6 +69,7 @@ These are just a couple of examples of what can be done in VCMI. See vcmi config
```
#### Resource Silo with custom production
```jsonc
"resourceSilo": {
"name" : "Wood Resource Silo",
@@ -80,6 +85,7 @@ These are just a couple of examples of what can be done in VCMI. See vcmi config
```
#### Brotherhood of Sword - bonuses in siege
```jsonc
"special3": {
// replaces +1 Morale bonus from Tavern
@@ -96,6 +102,7 @@ These are just a couple of examples of what can be done in VCMI. See vcmi config
```
#### Lighthouse - bonus to all heroes under player control
```jsonc
"special1": {
"bonuses": [
@@ -228,10 +235,13 @@ Building requirements can be described using logical expressions:
]
]
```
### List of unique town buildings
#### Buildings from Heroes III
Following Heroes III buildings can be used as unique buildings for a town. Their functionality should be identical to a corresponding H3 building. H3 buildings that are not present in this list contain no hardcoded functionality. See vcmi json configuration to see how such buildings can be implemented in a mod.
- `mysticPond`
- `artifactMerchant`
- `freelancersGuild`
@@ -244,12 +254,14 @@ Following Heroes III buildings can be used as unique buildings for a town. Their
- `treasury`
#### Buildings from other Heroes III mods
Following HotA buildings can be used as unique building for a town. Functionality should match corresponding HotA building:
- `bank`
#### Custom buildings
In addition to above, it is possible to use same format as [Rewardable](../Map_Objects/Rewardable.md) map objects for town buildings. In order to do that, configuration of a rewardable object must be placed into `configuration` json node in building config.
In addition to above, it is possible to use same format as [Rewardable](../Map_Objects/Rewardable.md) map objects for town buildings. In order to do that, configuration of a rewardable object must be placed into `configuration` json node in building config.
### Town Structure node
@@ -281,16 +293,18 @@ In addition to above, it is possible to use same format as [Rewardable](../Map_O
}
```
#### Markets in towns
Market buildings require list of available [modes](../Map_Objects/Market.md)
##### Marketplace
```jsonc
"marketplace": { "marketModes" : ["resource-resource", "resource-player"] },
```
##### Artifact merchant
```jsonc
"special1": { "type" : "artifactMerchant", "requires" : [ "marketplace" ], "marketModes" : ["resource-artifact", "artifact-resource"] },
```
```