Forts Guide

Modder Forts (Guide Complet) for Forts

Modder Forts (Guide Complet)

Overview

Ce guide vous apprend a modder Forts pratiquement dans son intégralité. C’est a dire de la modification de statistiques jusqu’à l’ajout de contenu (armes, materiaux, machines,ect..)Pour le codage, je vous conseil VisualStudio Code. Votre codage sera plus lisible et contient le thème noir pour vos petit yeux.https://code.visualstudio.com

Explication Basique Des Différent Dossiers

Avant de commencer à modifier les fichiers du jeu, il faut savoir à quoi ils correspondent.

Quand vous allez dans votredisquedurProgram Files (x86)SteamsteamappscommonForts, vous voyez 2 différent dossiers:
data, où il y a toutes les textures et codages du jeu
users, où il y a tout vos gifs, vidéos, crash, replays ou screenshots
Nous allons plus nous intéresser sur le contenue du dossier data.

Dans ce fameux dossier, il y a d’autres dossiers classés par catégories:
ai: contient les fichiers avec les fonctions pour l’ia du jeu
campaigns: contient les textures et scripts des campagnes du jeu
db: contient d’autre scripts dont les règles et le “constant”
devices: contient les textures, fonctions et statistiques de toute les machines(tech inclus)
effect: contient les fichiers et textures des effets du jeu
environment: contient les environnements des maps du jeu
maps: contient les maps du jeu avec leurs ia
materials: contient les textures, fonctions et statistiques de tous les matériaux
mods: contient tout les mods du jeu dont votre mod (certains sont cachés)
objects: contient la textures des projectiles des mortier et des missiles
ui: contient les textures du HUD (groupes, détails, ext)
scripts: contient tout le script du jeu (ambiance, conditions, fonctions)
weapons: contient les textures, fonctions et statistiques des armes et projectiles

On ne s’intéressera pas aux dossiers pack et replays

Insérer Le Mod Dans Le Jeu

Maintenant que vous avez un minimum de connaissance des dossier du jeu, il faudra commencer à l’implémenter dans le jeu sachant que le jeu se code en .lua.

Tout d’abord, il faudra mettre un nom pour votre mod. Dans ce cas il faut créer un fichier displayname.lua dans le dossier mods puis mettre ceci:

DisplayName = { [‘English’] = L”My Mod”, [‘French’] = L”Mon Mod”, } — vous pouvez évidemment traduire les nom de votre mod en plusieurs langues si ça vous amuse

Maintenant, créer le fichier mod.lua pour que le mod soit sélectionnable:

Selectable = true Priority = 6 — la priorité dépend des autres mods et s’il y a des fonction qui les affectent, pas besoin de mettre de priorité si le mod rajoute juste du contenu Category = “Environments,Weapons,Devices,Rules,Materials,Disables”

Faite une première vérification.

Il apparait bien dans l’onglet player

Insérer Un Matériaux

Pour inséré un matériaux, rien de plus simple, il suffit de créer vos textures directement dans le dossier materials du mod et de créer un fichier building_materials.lua.

Dans building_materials.lua, insérer l’animation du matériaux:

table.insert(Sprites, { Name = “nouveaumateriaux”, States = { Normal = { Frames = { — le total des duration doit être à 1 pour que l’animation du matériaux endommagé fonctionne bien { texture = path .. “/materials/nouveaumateriaux.png”, duration = 0.3 }, { texture = path .. “/materials/nouveaumateriaux_d1.png”, duration = 0.2 }, { texture = path .. “/materials/nouveaumateriaux_d2.png”, duration = 0.2 }, { texture = path .. “/materials/nouveaumateriaux_d3.png”, duration = 0.3 }, mipmap = true, repeatS = true, }, }, }, })

Ensuite, insérer les statistiques du matériaux:

— exemple avec une copie du bois (évidemment vous pouvez modifier les statistique librement) table.insert(Materials, { SaveName = “nouveaumateriaux”, Icon = “hud-bracing-icon”, — animation du bois plein(voir la catégorie “insérer l’icone HUD” si vous voulez la customiser) Detail = “hud-detail-bracing”, — animation du bois plein(voir la catégorie “insérer un détail” si vous voulez la customiser) Sprite = “nouveaumateriaux” Enabled = true, Stiffness = 100000, — rigidité du materiaux MaxCompression = 0.9, MaxExpansion = 1.1, MinLength = StandardMinLength, MaxLength = StandardMaxLength, MaxLinkLength = StandardMaxLinkLength, Mass = 0.15, AirDrag = 4, — réaction du matériaux par rapport à l’air HitPoints = 200, AbsorptionMomentumThreshold = 40, — absorption des projectiles ReflectionMomentumThreshold = 80, — réflexion des projectiles PenetrationMomentumThreshold = 1000, — résistance a la pénétration RicochetVariationFactor = 0, — variation du reflet SpeedLossFactor = 1, — réaction du matériaux par à la gravité MetalBuildCost = 0.05, MetalRepairCost = 0.05, MetalReclaim = 0.025, EnergyBuildCost = 0.25, EnergyRepairCost = 0.75, EnergyReclaim = 0.0, EnergyRunCost = 0.0, BuildTime = 4, ScrapTime = 3, SupportsDevices = true, ReflectsBeams = false, NoCostRecession = true, — coût de conversion direct (quand on pose une machine) CatchesFire = true, — s’il prend feu DegreesPerSecondMin = 20, — affecte l’extension du feu DegreesPerSecondMax = 32, KeySpriteByDamage = true, — animation du matériaux par dommages (false si animation continue ex:bouclier) FullExtrusion = true, Node = StandardNode, FogOfWarTargetSaveName = “backbracing”, — conversion a un autre matériaux dés q’une machine est posé RecessionTargetSaveName = “backbracing”, BuildEffect = “effects/build_bracing.lua”, DestroyEffect = “effects/bracing_destroy.lua”, FireDestroyEffect = “effects/destroy_fire.lua”, SelectEffect = “ui/hud/materials/ui_materials”, NodeImpacts = — son du matériaux quand il tombe au sol { [“foundations”] = “effects/bounce_wood.lua”, [“rocks01”] = “effects/bounce_wood.lua”, [“default”] = “effects/bounce_wood.lua”, }, })

Vérifier s’il n’y a pas d’erreurs et si le matériaux apparaît
Et voila, vous avez créé votre premier matériaux!

Insérer Une Machine Ou Technologie

Maintenant que vous savez faire un matériaux, il faudra savoir inséré une machine.

Pour cela créer un dossier devices, un dossier pour vos nouvelles textures, appelons le mamachine et créer un fichier mamachine.lua.

Admettons qu’on a créé une texture base, une animation et que cette machine soit une technologie:

Dans mamachine.lua vous avez toutes les statistiques de la machine en elle même.

ConstructEffect = “effects/device_construct.lua” CompleteEffect = “effects/device_complete.lua” Scale = 1 — multiplicateur de la taille de la hitbox SelectionWidth = 45.0 SelectionHeight = 84.75 SelectionOffset = { 0.0, -85.25 } Mass = 250.0 HitPoints = 1000.0 EnergyProductionRate = 0.0 MetalProductionRate = 0.0 EnergyStorageCapacity = 0.0 MetalStorageCapacity = 0.0 MinWindEfficiency = 1 MaxWindHeight = 0 MaxRotationalSpeed = 0 DrawBracket = false DrawBehindTerrain = true NoReclaim = false TeamOwned = true dofile(“effects/device_smoke.lua”) SmokeEmitter = StandardDeviceSmokeEmitter — toutes les nouvelle animations Sprites = { { Name = “mamachine-base”, States = { Normal = { Frames = { { texture = path .. “/devices/mamachine/base.tga” }, mipmap = true, }, }, }, }, { Name = “mamachine-anim”, States = { Normal = { Frames = { { texture = path .. “/devices/mamachine/mamachineanim.tga” }, { texture = path .. “/devices/mamachine/mamachineanim.tga” }, { texture = path .. “/devices/mamachine/mamachineanim.tga” }, { texture = path .. “/devices/mamachine/mamachineanim.tga” }, { texture = path .. “/devices/mamachine/mamachineanim.tga” }, duration = 0.5, blendColour = false, blendCoordinates = false, mipmap = true, }, NextState = “Normal”, }, }, }, } NodeEffects = { { NodeName = “SteamMunitions”, — animation de fumée EffectPath = “effects/reactor_steam.lua”, Automatic = true, }, } — constitution de la machine Root = { Name = “mamachine”, Angle = 0, Pivot = { 0, -0.74 }, — position de la textures PivotOffset = { 0, 0 }, Sprite = “mamachine-base”, ChildrenBehind = { { Name = “SteamMunitions”, Angle = 0, Pivot = { 0.15, -0.2 }, PivotOffset = { 0, 0 }, }, }, ChildrenInFront = { { Name = “Anim”, Angle = 0, Pivot = { 0.14, -0.15 }, PivotOffset = { 0, 0 }, Sprite = “mamachine-anim”, }, }, }

Dés que vous avez fini de faire vos statistiques de la machine, il suffit d’insérer cette machine dans le jeu. Pour cela il faudra créer un fichier device_list.lua.

Dans ce fichier, insérer cette machine comme ci-dessous:

table.insert(Devices, IndexOfDevice(“factory”) + 1, — dépend où vous voulez placer la machine par rapport au autres { Enabled = false, SaveName = “mamachine”, FileName = path .. “/devices/mamachine.lua”, — charger le fichier de la machine Icon = “hud-tier3-icon”, — l’icon de l’usine (voir la catégorie “insérer l’icone HUD” si vous voulez la customiser) Detail = “hud-detail-factory”, detail de l’usine (voir la catégorie “insérer un détail” si vous voulez la customiser) BuildTimeComplete = 75, ScrapPeriod = 8, MetalCost = 1400, EnergyCost = 13000, MetalRepairCost = 300, EnergyRepairCost = 2000, MetalReclaimMin = 0.25, MetalReclaimMax = 0.5, EnergyReclaimMin = 0.1, EnergyReclaimMax = 0.5, MaxUpAngle = StandardMaxUpAngle, BuildOnGroundOnly = false, PopulationCap = 1, SelectEffect = “ui/hud/technology/ui_technology”, Tech = true, })

Vous vous retrouverez avec ça dans le dossier devices:

Verifiez.
Et voila, vous venez de créé votre première machine!

Insérer Une Arme

Insérer une arme n’est pas plus compliqué qu’insérer une machine. C’est exactement le même principe mais avec certaine statistique en plus.

Après avoir fais votre dossier weapons contenant vos texture dans un dossier monarme,
Créer le fichier monarme.lua puis mettre toute vos statistiques:

— imaginons qu’on fais une copie du canon Scale = 1 SelectionWidth = 95.0 SelectionHeight = 60.0 SelectionOffset = { -18, -60.5 } RecessionBox = { Size = { 200, 25 }, Offset = { -300, -70 }, } CanFlip = false WeaponMass = 120.0 HitPoints = 550.0 EnergyProductionRate = 0.0 MetalProductionRate = 0.0 EnergyStorageCapacity = 0.0 MetalStorageCapacity = 0.0 MinWindEfficiency = 1 MaxWindHeight = 0 MaxRotationalSpeed = 0 DeviceSplashDamage = 150 DeviceSplashDamageMaxRadius = 400 DeviceSplashDamageDelay = 0.2 IncendiaryRadius = 120 IncendiaryRadiusHeated = 150 StructureSplashDamage = 200 StructureSplashDamageMaxRadius = 150 FireEffect = “effects/fire_cannon.lua” ConstructEffect = “effects/device_construct.lua” CompleteEffect = “effects/device_complete.lua” DestroyEffect = “effects/cannon_explode.lua” ShellEffect = “effects/shell_eject_cannon.lua” ReloadEffect = “effects/reload_cannon.lua” ReloadEffectOffset = -2 Projectile = “cannon” — pour customiser le projectile, voir “insérer un projectile” BarrelLength = 100.0 MinFireClearance = 500 — la portée de conversion des matériaux (bois plein au bois creux) FireClearanceOffsetInner = 20 FireClearanceOffsetOuter = 40 AttractZoomOutDuration = 5 ReloadTime = 26.0 ReloadTimeIncludesBurst = false MinFireSpeed = 6000.0 — puissance de tir MaxFireSpeed = 6000.1 MinFireRadius = 600.0 MaxFireRadius = 1200.0 MinVisibility = 0.7 MaxVisibilityHeight = 1000 MinFireAngle = -20 MaxFireAngle = 30 KickbackMean = 40 — la montée de votre curseur dés l’arme tirée KickbackStdDev = 5 MouseSensitivityFactor = 0.5 — sensibilité du curseur dans l’angle PanDuration = 0 FireStdDev = 0.01 — précision de l’arme FireStdDevAuto = 0.012 Recoil = 600000 EnergyFireCost = 2000.0 MetalFireCost = 50.0 ShowFireAngle = true — s’il y a un barrel sur l’arme BarrelRecoilLimit = -0.25 BarrelRecoilSpeed = -2 BarrelReturnForce = 0.5 dofile(“effects/device_smoke.lua”) SmokeEmitter = StandardDeviceSmokeEmitter — toutes vos nouvelle animations Sprites = { { Name = “moncannon-base”, States = { Normal = { Frames = { { texture = path .. “/weapons/monarme/base.tga” }, mipmap = true, }, }, Idle = Normal, }, }, { Name = “moncannon-head”, States = { Normal = { Frames = { { texture = path .. “/weapons/cannon/head.tga” }, mipmap = true, }, }, Idle = Normal, }, }, { Name = “moncannon-barrel”, States = { Normal = { Frames = { { texture = path .. “/weapons/cannon/barrel.tga” }, mipmap = true, }, }, Idle = Normal, }, }, } — constitution de votre arme Root = { Name = “Cannon”, Angle = 0, Pivot = { 0, -0.57 }, PivotOffset = { 0, 0 }, Sprite = “moncannon-base”, UserData = 0, ChildrenBehind = { { Name = “Head”, Angle = 0, Pivot = { 0, -0.05 }, — position de la texture PivotOffset = { 0.1, 0 }, Sprite = “moncannon-head”, UserData = 50, ChildrenBehind = { { Name = “Barrel”, Angle = 0, Pivot = { -0.5, -0.15}, PivotOffset = { 0.5, 0 }, Sprite = “moncannon-barrel”, UserData = 100, ChildrenInFront = { { Name = “Hardpoint0”, — la position de tir du projectile Angle = 90, Pivot = { 0, 0.05 }, PivotOffset = { 0, 0 }, }, { Name = “LaserSight”, — laser rouge pour œil de lynx Angle = 90, Pivot = { 0.18, -0.35 }, PivotOffset = { 0, 0 }, }, { Name = “Chamber”, — position du rejet de la douille Angle = 0, Pivot = { -0.32, -0.15 }, PivotOffset = { 0, 0 }, }, }, }, }, ChildrenInFront = { { Name = “LoaderBottom”, Angle = 0, Pivot = { -0.41, -0.085 }, PivotOffset = { 0, 0 }, Sprite = “cannon-reload”, — annimation du cannon de base UserData = 100, }, }, }, { Name = “Icon”, — l’icone pour l’actif des commandants Pivot = { 0, 0.5 }, }, }, }

Maintenant il suffira juste d’insérer l’arme dans le fichier weapon_list.lua comme ci_dessous:

table.insert(Weapons, IndexOfWeapon(“cannon”) + 1, { SaveName = “moncannon”, FileName = path .. “/weapons/monarme.lua”, — charger le fichier de votre arme Prerequisite = “munitions”, — ce qui est nécessaire pour débloquer l’arme Icon = “hud-cannon-icon”, — voir la catégorie “insérer l’icone HUD” si vous voulez la customiser GroupButton = “hud-group-cannon”, — voir la catégorie “insérer un bouton groupe” si vous voulez le customiser Detail = “hud-detail-cannon”, — voir la catégorie “insérer un détail” si vous voulez le customiser BuildTimeComplete = 25.0, ScrapPeriod = 5, MetalCost = 200, EnergyCost = 800, MetalRepairCost = 40, EnergyRepairCost = 200, MetalReclaimMin = 0.5, MetalReclaimMax = 0.9, EnergyReclaimMin = 0.1, EnergyReclaimMax = 0.4, SpotterFactor = 0, — l’arme ne peut pas guider les missiles MaxSpotterAssistance = 0.1, — moins prioritaire par rapport au autres spotters MaxUpAngle = StandardMaxUpAngle, BuildOnGroundOnly = false, SelectEffect = “ui/hud/weapons/ui_weapons”, })

Vous vous retrouverez avec ça dans le dossier weapons:

Verifiez.
Et voila, vous venez de créé votre première arme!

Insérer Un Projectile

Pour ajouter un projectile à votre arme (par exemple le canon que vous avez inséré dans le mod), vous avez juste a créer un fichier projectile_list.lua dans le dossier weapons puis insérer votre nouveau projectile:

table.insert(Projectiles, { SaveName = “monprojectile”, ProjectileType = “mortar”, — différent types de projectiles existent: bullet,mortar,missile et beam ProjectileSprite = path .. “/weapons/monarme/bullet.tga”, — charger votre projectile dans le dossier de votre arme par exemple ProjectileSpriteMipMap = false, — true s’il y a une animation DrawBlurredProjectile = true, — le projectile s’étire selon sa vitesse ProjectileMass = 23, ProjectileDrag = 0, — réaction par rapport à l’air Impact = 50000, DestroyShields = true, DeflectedByShields = false, ExplodeOnTouch = false, ProjectileThickness = 15.0, — taille du projectile en largeur ProjectileShootDownRadius = 65, BeamTileRate = 0.04, BeamScrollRate = 0.0, ProjectileDamage = 2000.0, ProjectileSplashDamage = 60.0, ProjectileSplashDamageMaxRadius = 375.0, ProjectileSplashMaxForce = 15000, — force d’impact sur la porté de splash SpeedIndicatorFactor = 0.25, — réaction par rapport à la gravité TrailEffect = “effects/cannon_trail.lua”, Effects = — effets par défaut d’explosion sur les matériaux et terrain du canon { Impact = { [“foundations”] = “effects/impact_heavy_ground.lua”, [“rocks01”] = “effects/impact_heavy_ground.lua”, [“default”] = “effects/impact_heavy.lua”, }, Deflect = { [“armour”] = { Effect = “effects/armor_ricochet.lua” }, [“door”] = { Effect = “effects/armor_ricochet.lua” }, [“shield”] = { Effect = “effects/energy_shield_ricochet.lua” }, }, }, })

Ensuite vous avez juste a charger le projectile dans le fichier de l’arme monarme.lua

Projectile = “monprojectile”

Vérifiez si vous avez tous les fichiers

Vous avez maintenant votre arme avec votre nouveau projectile.

Insérer l’Icone HUD

l’icone HUD est l’animation de la sélection des matériaux, machines, technologies et armes. Cette animation se compose de 4 Images:

Initiale Désactivé Rollover Sélectionné

vous pouvez l’insérer en 2 manière, que ce soit dans le building_materials.lua, device_list.lua ou weapon_list.lua:

table.insert(Sprites, { Name = “monhud”, States = { Normal = { Frames = {{ texture = path .. “/ui/textures/HUD/hud-A.png”, bottom = 0.664 },},}, Rollover = { Frames = {{ texture = path .. “/ui/textures/HUD/hud-R.png”, bottom = 0.664 },},}, Pressed = { Frames = {{ texture = path .. “/ui/textures/HUD/hud-S.png”, bottom = 0.664 },},}, Disabled = { Frames = {{ texture = path .. “/ui/textures/HUD/hud-D.png”, bottom = 0.664 },},}, }, })

OU

table.insert(Sprites, ButtonSprite(“monhud”, “HUD/monhud”, nil, ButtonSpriteBottom, nil, nil, path)) –vous devrez créer les dossiers concernés dans votre mod ui/textures/HUD


Après avoir inséré votre icone, il suffit de mettre le nom de votre animation dans building_materials.lua, device_list.lua ou weapon_list.lua:

Icon = “monhud”,

Votre Icone est maintenant dans le jeu.

Insérer Un Détail

le “detail” est situé en bas à gauche de votre HUD.


C’est le même principe qu’insérer un Icone HUD.
Pour cela, créer un dossier detail dans ui/textures/HUD et mettre votre texture dans celui-ci, puis insérer votre “detail” dans weapon_list.lua, device_list.lua ou building_materials.lua:

table.insert(Sprites, DetailSprite(“nomdudetail”, “nomdelatexture”, path))

Enfin vous avez juste à mettre le nom de votre animation “detail” dans les statistiques de votre arme/matériaux/machine:

Detail = “nomdudetail”,

Et c’est fait!

Insérer Un Bouton Groupe

le bouton groupe ce situe en haut a gauche de votre HUD dés qu’un groupe d’arme a été créé.L’insertion et faisable que dans le weapon_list.lua

Créer un dossier groups dans ui/textures/HUD puis mettre vos textures et insérer l’animation du bouton groupe dans weapon_list.lua:

table.insert(Sprites, ButtonSprite(“hud-monboutongroupe”, “groups/mongroupe”, GroupButtonSpriteBottom, GroupButtonSpriteBottom, nil, nil, path))

Il y a plus qu’a mettre le nom du bouton groupe dans les statistiques de l’arme:

GroupButton = “hud-monboutongroupe”,

Ajouter Une Ou Plusieurs Amelioration(s) Sur Une Arme Ou Machine

Pour rajouter une amélioration sur une arme, une fonction très pratiques que pas mal de moddeur utilisent doit être ajoutée dans weapon_list.lua ou device_list.lua, la fonction “AddUpgrade”:

function AddUpgrade(Weapon, Upgrade) if not Weapon then Weapon = {} end if not Weapon.Upgrades then Weapon.Upgrades = {} end if not Upgrade then Upgrade = {} end — évite des erreurs dans le log si vous avez mis le mauvais nom de l’arme table.insert(Weapon.Upgrades, Upgrade) end

Si la fonction est pour améliorer une machine, remplacer “Weapon” par “Device”

Celle-ci est facile à appliquer:

AddUpgrade(FindWeapon(“nomdelarme/machine”),– arme/machine sur laquelle vous voulez ajouter une amélioration { Enabled = true, SaveName = “votrearme/machine”, MetalCost = 200, EnergyCost = 800, })

Si vous voulez ajouter une amélioration sur une arme/machine déjà insérée, il suffit de rajoutez l’amélioration sur ses statistiques:

Upgrades = { { Enabled = true, SaveName = “votrearme/machine”, MetalCost = 200, EnergyCost = 800, }, },

Inserer Un Bouton “context”

Les boutons “context” sont situé dans l’onglet qui s’affiche quand vous faites clic droit sur une machine, arme ou matériaux.

Créer un dossier context dans ui/textures/HUD puis mettre vos textures dedans.
L’insertion est exactement la même que ce que vous avez fait auparavant.

table.insert(Sprites, ButtonSprite(“votrebouton”, “context/votrebouton”, nil, nil, nil, nil, path))

Imaginons que ce bouton soit pour une amélioration d’une arme ou machine:

Upgrades = { [“votrearme/machine”] = { Enabled = true, SaveName = “votrearme/machine”, MetalCost = 200, EnergyCost = 800, Button = “votrebouton”, }, },

Vérifiez
Votre bouton customisé est prêt!

Modifier Ou Ajouter Un Effet

L’ensemble d’un jeu est composé d’effets.

Imaginons que l’on veut modifier l’effet de tir du canon avec un nouveau son.
Pour cela, il faudra créer un dossier effects dans votre mod puis créer votre fichier votreeffet.lua et intégrer les nouveaux effet.

LifeSpan = 3.0 — temps (secondes) de la disparition de l’effet Effects = { { Type = “sound”, — ajout du son TimeToTrigger = 0.0, — temps d’apparition du son LocalPosition = { x = 0, y = 0, z = 0 }, — position de l’effet Sound = path .. “/effects/cannon-fire2.mp3”, — votre fichier audio Volume = 3, }, { Type = “sparks”, TimeToTrigger = 0, SparkCount = 9, LocalPosition = { x = 0, y = 0 }, Texture = “effects/media/smoke.tga”, Gravity = 0, — gravité des particules EvenDistribution = — distribution des particules { Min = -10, — angle minimum Max = 10, — angle maximum StdDev = 5, }, Keyframes = { { Angle = 0, RadialOffsetMin = 0, RadialOffsetMax = 20, ScaleMean = 4, — taille des particules ScaleStdDev = 0.5, — variation de la taille des particules SpeedStretch = 0, — vitesse des particules SpeedMean = 500, SpeedStdDev = 200, Drag = 1, RotationMean = 0, — rotation des particules RotationStdDev = 45, RotationalSpeedMean = 5, — vitesse de rotation des particules RotationalSpeedStdDev = 0, AgeMean = 1.5, — temps de vie des particules AgeStdDev = 0.5, AlphaKeys = { 0.5, 0.5 }, ScaleKeys = { 0.1, 0.5 }, }, }, }, { Type = “shake”, — effet de vibration PlayForEnemy = true, FalloffStart = 1500, FalloffEnd = 6000, TimeToTrigger = 0, — temps d’apparition TimeToLive = 0.5,– temps de vie Magnitude = 18, }, }

Ensuite, il faudra charger le fichier dans le fichier du canon cannon.lua que vous avez créé dans le dossier weapons:

FireEffect = path .. “/effects/votreeffet.lua”

Compatibilité avec le Firebeam

Si vous ne l’avez pas remarqué, le Firebeam (ou Rayon Ardent) converti les projectiles en projectiles enflammés.

Pour cela il existe une fonction dans data/mods/weapon_pack/weapons/projectile_list.lua, le “MakeFlamingVersion”:

MakeFlamingVersion(NomDuProjectile, MultiplicateurDeDomages, TempsDeVieDuProjectile, TrainéeDuProjectile, PortéeDeFeu, EffetD’Eclat, EffetD’Expiration)

Evidemment, mettez le dans votre projectile_list.lua avec toutes les statistiques.

Chercher Une Arme, Projectile, Machine ou Matériaux Pour Modifier Ses Statistiques

Pour modifier des statistiques sur une arme/machine/projectile/matériaux, une fonction respective et faite par les développeurs:

function FindWeapon(saveName) for k, v in ipairs(Weapons) do if v.SaveName == saveName then return v end end return nil end function FindProjectile(saveName) for k, v in ipairs(Projectiles) do if v.SaveName == saveName then return v end end return nil end function FindDevice(saveName) for k, v in ipairs(Devices) do if v.SaveName == saveName then return v end end return nil end function FindMaterial(saveName) for k, v in ipairs(Materials) do if v.SaveName == saveName then return v end end return nil end

Pour l’appliquer, rien de plus simple:

–On veut modifier les dégât du projectile du canon dans Projectile_List.lua cannon = FindProjectile(“cannon”) if cannon then cannon.ProjectileDamage = 850 cannon.ProjectileSplashDamage = 80 end

Aplication De Statistiques Sur Tout les Matériaux/Machines/Armes/Projectiles

Cette technique s’applique sur tout les Matériaux/Machines/Armes/Projectiles que ce soit moddé ou pas, il suffit juste de mettre vos nouvelles statistiques.

for key,value in ipairs(Materials/Devices/Weapons/Projectiles) do value.VotreStatistique1 value.VotreStatistique2 end

OU

RegisterApplyMod(function() — Doit être seulement dans weapon.lua ou device.lua if HitPoints > 999 then HitPoints = 1000 end end)

Oubliez pas de modifier votre Priorité si les statistiques ne s’applique pas comme vous le désirez.

Outro

Voila, vous savez comment modder entièrement Forts. Ce guide est toujours en cours d’édition. Je vous remercie de suivre ce guide, si vous avez des questions n’oubliez pas de les poser en commentaire ou en MP sur steam.

SteamSolo.com