Skip to content

Instantly share code, notes, and snippets.

@nooitaf
Created March 30, 2024 23:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nooitaf/86ef1b13ae3579cafccc96eacfcc7e73 to your computer and use it in GitHub Desktop.
Save nooitaf/86ef1b13ae3579cafccc96eacfcc7e73 to your computer and use it in GitHub Desktop.
Road to Vostok Public Demo 2 - Shelter.tres generator script
package main
import (
"fmt"
"strings"
)
var WeaponPaths = []string{
"res://Scripts/SlotData.gd",
"res://Items/Ammunition/Ammo/Ammo.tres",
"res://Items/Attachments/ACOG/ACOG.tres",
"res://Items/Attachments/EXPS/EXPS.tres",
"res://Items/Attachments/HMR/HMR.tres",
"res://Items/Attachments/Hybrid/Hybrid.tres",
"res://Items/Attachments/Micro/Micro.tres",
"res://Items/Attachments/Monster/Monster.tres",
"res://Items/Attachments/PBS/PBS.tres",
"res://Items/Attachments/POSP/POSP.tres",
"res://Items/Attachments/PRO/PRO.tres",
"res://Items/Attachments/PU/PU.tres",
"res://Items/Attachments/Salvo/Salvo.tres",
"res://Items/Attachments/SOCOM/SOCOM.tres",
"res://Items/Attachments/Thor/Thor.tres",
"res://Items/Attachments/Vudu/Vudu.tres",
"res://Items/Backpack/Backpack_Patrol.tres",
"res://Items/Books/Book_Children.tres",
"res://Items/Books/Book_Cooking.tres",
"res://Items/Books/Book_Fishing.tres",
"res://Items/Books/Book_Religion.tres",
"res://Items/Consumables/Canned_Meatballs/Canned_Meatballs.tres",
"res://Items/Consumables/Canned_Meat/Canned_Meat.tres",
"res://Items/Consumables/Canned_Peaches/Canned_Peaches.tres",
"res://Items/Consumables/Canned_Peas/Canned_Peas.tres",
"res://Items/Consumables/Canned_Pea_Soup/Canned_Pea_Soup.tres",
"res://Items/Consumables/Canned_Pineapple/Canned_Pineapple.tres",
"res://Items/Consumables/Canned_Tomatoes/Canned_Tomatoes.tres",
"res://Items/Consumables/Canned_Tuna/Canned_Tuna.tres",
"res://Items/Consumables/Field_Ration/Field_Ration.tres",
"res://Items/Consumables/Soda_Lemonade/Soda_Lemonade.tres",
"res://Items/Electronics/Battery/Battery.tres",
"res://Items/Electronics/Hotplate/Hotplate.tres",
"res://Items/Feet/Boots_Combat.tres",
"res://Items/Hands/Gloves_Leather.tres",
"res://Items/Hands/Gloves_Work.tres",
"res://Items/Head/Sauna_Hat.tres",
"res://Items/Legs/Jeans_Black.tres",
"res://Items/Legs/Pants_Hiking.tres",
"res://Items/Medical/Antibiotics.tres",
"res://Items/Medical/Bandage.tres",
"res://Items/Medical/Cold_Medicine.tres",
"res://Items/Medical/Medkit.tres",
"res://Items/Medical/Painkillers.tres",
"res://Items/Medical/Splint.tres",
"res://Items/Medical/Tourniquet.tres",
"res://Items/Misc/Board_Game/Board_Game.tres",
"res://Items/Misc/Cigar_Box/Cigar_Box.tres",
"res://Items/Misc/Coffee/Coffee.tres",
"res://Items/Misc/Duct_Tape/Duct_Tape.tres",
"res://Items/Misc/Matches/Matches.tres",
"res://Items/Misc/Snus/Snus_Licorice.tres",
"res://Items/Misc/Snus/Snus_Mint.tres",
"res://Items/Misc/Snus/Snus_Original.tres",
"res://Items/Misc/Snus/Snus_Strong.tres",
"res://Items/Misc/Toilet_Paper/Toilet_Paper.tres",
// "res://Items/Physics/Item_Physics.tres",
"res://Items/Rig/Plate_Carrier.tres",
"res://Items/Special/Guitar/Guitar.tres",
"res://Items/Special/Harmonica/Harmonica.tres",
"res://Items/Torso/Fleece_Tactical_Brown/Fleece_Tactical_Brown.tres",
"res://Items/Torso/Fleece_Tactical_Green/Fleece_Tactical_Green.tres",
"res://Items/Torso/Hoodie_Border_Zone/Hoodie_Border_Zone.tres",
"res://Items/Torso/Hoodie_Gray/Hoodie_Gray.tres",
"res://Items/Torso/Jacket_Military_M62/Jacket_Military_M62.tres",
"res://Items/Torso/Jacket_Santa/Jacket_Santa.tres",
"res://Items/Torso/Jacket_Winter_Blue/Jacket_Winter_Blue.tres",
"res://Items/Torso/Jacket_Winter_Red/Jacket_Winter_Red.tres",
"res://Items/Torso/Windbreaker_Black/Windbreaker_Black.tres",
"res://Items/Torso/Windbreaker_Green/Windbreaker_Green.tres",
"res://Items/Weapons/AK-12/AK-12.tres",
"res://Items/Weapons/AKS-74U/AKS-74U.tres",
"res://Items/Weapons/Colt_1911/Colt_1911.tres",
"res://Items/Weapons/Glock_17/Glock_17.tres",
"res://Items/Weapons/KAR-21/KAR-21_223.tres",
"res://Items/Weapons/KAR-21/KAR-21_308.tres",
"res://Items/Weapons/KAR-21/KAR-21_Barrel.tres",
"res://Items/Weapons/KP-31/KP-31.tres",
"res://Items/Weapons/Makarov/Makarov.tres",
"res://Items/Weapons/MK18/MK18.tres",
"res://Items/Weapons/Mosin/Mosin.tres",
"res://Items/Weapons/MP5/MP5.tres",
"res://Items/Weapons/MP7/MP7.tres",
"res://Items/Weapons/Remington_870/Remington_870.tres",
"res://Items/Weapons/RK-95/RK-95.tres",
"res://Items/Weapons/SVD/SVD.tres",
"res://Items/Weapons/VSS/VSS.tres",
"res://Scripts/ContainerSave.gd",
"res://Scripts/ItemSave.gd",
"res://Scripts/ShelterSave.gd",
}
type Resource struct {
Path string
Id string
Type string
}
type SubResource struct {
Id string
Type string
Script string
ItemData string
Condition float32
Index int
Ammo int
Chamber int
Firemode int
Optic Resource
Muzzle Resource
Name string
Items string
SlotData string
Position []float32
Rotation []float32
}
var L1 = `[gd_resource type="Resource" script_class="ShelterSave" load_steps=159 format=3]`
func main() {
// first line
fmt.Println(L1)
fmt.Println("")
resources := []Resource{}
for i, path := range WeaponPaths {
idx := i + 1
t := "Resource"
if strings.Contains(path, "Script") {
t = "Script"
}
res := Resource{
Id: fmt.Sprintf(`%v`, idx),
Path: path,
Type: t,
}
resources = append(resources, res)
}
for _, r := range resources {
fmt.Printf("[ext_resource type=\"%s\" path=\"%s\" id=\"%s\"]\n", r.Type, r.Path, r.Id)
}
fmt.Println()
subresources := []SubResource{}
for i, r := range resources {
if r.Type == "Resource" {
id := fmt.Sprintf(`Resource_r%v`, i)
subres := SubResource{
Id: id,
Type: r.Type,
Script: fmt.Sprintf(`ExtResource("%v")`, 1),
ItemData: fmt.Sprintf(`ExtResource("%v")`, r.Id),
Condition: 100.0,
Index: i - 1,
Ammo: 0,
Chamber: 0,
Firemode: 1,
}
subresources = append(subresources, subres)
}
}
for _, sr := range subresources {
fmt.Printf("[sub_resource type=\"%s\" id=\"%s\"]\n", sr.Type, sr.Id)
fmt.Printf("script = %v\n", sr.Script)
fmt.Printf("itemData = %v\n", sr.ItemData)
fmt.Printf("condition = %.1f\n", sr.Condition)
fmt.Printf("index = %v\n", sr.Index)
fmt.Printf("ammo = %v\n", sr.Ammo)
fmt.Printf("chamber = %v\n", sr.Chamber)
fmt.Printf("firemode = %v\n", sr.Firemode)
fmt.Println("")
}
fmt.Println(`[sub_resource type="Resource" id="Resource_ContainerSave"]`)
fmt.Println(`script = ExtResource("87")`)
fmt.Println(`name = "Crate_Wood_Covered"`)
fmt.Print("items = Array[ExtResource(\"1\")]([")
for idx, sr := range subresources {
fmt.Printf("SubResource(\"%v\")", sr.Id)
if idx < len(subresources)-1 {
fmt.Print(", ")
}
}
fmt.Println("])")
fmt.Println("")
fmt.Println(`[resource]`)
fmt.Println(`script = ExtResource("89")`)
fmt.Println(`containers = Array[ExtResource("87")]([SubResource("Resource_ContainerSave")])`)
fmt.Println(`items = Array[ExtResource("88")]([])`)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment