[{"data":1,"prerenderedAt":2439},["ShallowReactive",2],{"navigation_docs":3,"-docs-culttweaker-custom-weapons":166,"-docs-culttweaker-custom-weapons-surround":2434},[4,9,76,106,148,162],{"title":5,"path":6,"stem":7,"icon":8},"Overview","\u002Fdocs","docs\u002Findex","i-lucide-book-open",{"title":10,"path":11,"stem":12,"children":13,"icon":15},"CultTweaker","\u002Fdocs\u002Fculttweaker","docs\u002F1.culttweaker\u002F01.index",[14,16,21,26,31,36,41,46,51,56,61,66,71],{"title":5,"path":11,"stem":12,"icon":15},"i-lucide-wand",{"title":17,"path":18,"stem":19,"icon":20},"Installation","\u002Fdocs\u002Fculttweaker\u002Finstallation","docs\u002F1.culttweaker\u002F02.installation","i-lucide-download",{"title":22,"path":23,"stem":24,"icon":25},"Worldshaper","\u002Fdocs\u002Fculttweaker\u002Fworldshaper","docs\u002F1.culttweaker\u002F03.worldshaper","i-lucide-hammer",{"title":27,"path":28,"stem":29,"icon":30},"Player spines","\u002Fdocs\u002Fculttweaker\u002Fplayer-spines","docs\u002F1.culttweaker\u002F04.player-spines","i-lucide-user",{"title":32,"path":33,"stem":34,"icon":35},"Follower forms","\u002Fdocs\u002Fculttweaker\u002Ffollower-forms","docs\u002F1.culttweaker\u002F05.follower-forms","i-lucide-users",{"title":37,"path":38,"stem":39,"icon":40},"Custom structures","\u002Fdocs\u002Fculttweaker\u002Fcustom-structures","docs\u002F1.culttweaker\u002F06.custom-structures","i-lucide-home",{"title":42,"path":43,"stem":44,"icon":45},"Items and meals","\u002Fdocs\u002Fculttweaker\u002Fcustom-items-and-meals","docs\u002F1.culttweaker\u002F07.custom-items-and-meals","i-lucide-package",{"title":47,"path":48,"stem":49,"icon":50},"Tarot cards","\u002Fdocs\u002Fculttweaker\u002Fcustom-tarot-cards","docs\u002F1.culttweaker\u002F08.custom-tarot-cards","i-lucide-sparkles",{"title":52,"path":53,"stem":54,"icon":55},"Custom enemies","\u002Fdocs\u002Fculttweaker\u002Fcustom-enemies","docs\u002F1.culttweaker\u002F09.custom-enemies","i-lucide-skull",{"title":57,"path":58,"stem":59,"icon":60},"Custom weapons","\u002Fdocs\u002Fculttweaker\u002Fcustom-weapons","docs\u002F1.culttweaker\u002F10.custom-weapons","i-lucide-sword",{"title":62,"path":63,"stem":64,"icon":65},"NPC quests","\u002Fdocs\u002Fculttweaker\u002Fcustom-npc-quests","docs\u002F1.culttweaker\u002F11.custom-npc-quests","i-lucide-message-square",{"title":67,"path":68,"stem":69,"icon":70},"Modding API","\u002Fdocs\u002Fculttweaker\u002Fmodding-api","docs\u002F1.culttweaker\u002F12.modding-api","i-lucide-plug",{"title":72,"path":73,"stem":74,"icon":75},"Changelog","\u002Fdocs\u002Fculttweaker\u002Fchangelog","docs\u002F1.culttweaker\u002F13.changelog","i-lucide-history",{"title":77,"path":78,"stem":79,"children":80,"icon":82},"Supercharged","\u002Fdocs\u002Fsupercharged","docs\u002F2.supercharged\u002F1.index",[81,83,92],{"title":5,"path":78,"stem":79,"icon":82},"i-lucide-zap",{"title":84,"path":85,"stem":86,"children":87,"icon":35},"Followers","\u002Fdocs\u002Fsupercharged\u002Ffollowers","docs\u002F2.supercharged\u002Ffollowers\u002F1.index",[88,89],{"title":5,"path":85,"stem":86,"icon":35},{"title":72,"path":90,"stem":91,"icon":75},"\u002Fdocs\u002Fsupercharged\u002Ffollowers\u002Fchangelog","docs\u002F2.supercharged\u002Ffollowers\u002F2.changelog",{"title":93,"path":94,"stem":95,"children":96,"icon":50},"Tarots","\u002Fdocs\u002Fsupercharged\u002Ftarots","docs\u002F2.supercharged\u002Ftarots\u002F1.index",[97,98,103],{"title":5,"path":94,"stem":95,"icon":50},{"title":99,"path":100,"stem":101,"icon":102},"Card list","\u002Fdocs\u002Fsupercharged\u002Ftarots\u002Fcards","docs\u002F2.supercharged\u002Ftarots\u002F2.cards","i-lucide-layers",{"title":72,"path":104,"stem":105,"icon":75},"\u002Fdocs\u002Fsupercharged\u002Ftarots\u002Fchangelog","docs\u002F2.supercharged\u002Ftarots\u002F3.changelog",{"title":107,"path":108,"stem":109,"children":110,"icon":112},"MiniMods","\u002Fdocs\u002Fminimods","docs\u002F3.minimods\u002F1.index",[111,113,118,122,127,132,136,140,143],{"title":5,"path":108,"stem":109,"icon":112},"i-lucide-boxes",{"title":114,"path":115,"stem":116,"icon":117},"Trial of the Gods","\u002Fdocs\u002Fminimods\u002Ftrial-of-the-gods","docs\u002F3.minimods\u002F2.trial-of-the-gods","i-lucide-flame",{"title":119,"path":120,"stem":121,"icon":25},"Structures","\u002Fdocs\u002Fminimods\u002Fstructures","docs\u002F3.minimods\u002F3.structures",{"title":123,"path":124,"stem":125,"icon":126},"Roles","\u002Fdocs\u002Fminimods\u002Froles","docs\u002F3.minimods\u002F4.roles","i-lucide-briefcase",{"title":128,"path":129,"stem":130,"icon":131},"Rituals","\u002Fdocs\u002Fminimods\u002Frituals","docs\u002F3.minimods\u002F5.rituals","i-lucide-flame-kindling",{"title":133,"path":134,"stem":135,"icon":65},"Commands","\u002Fdocs\u002Fminimods\u002Fcommands","docs\u002F3.minimods\u002F6.commands",{"title":137,"path":138,"stem":139,"icon":45},"Items","\u002Fdocs\u002Fminimods\u002Fitems","docs\u002F3.minimods\u002F7.items",{"title":72,"path":141,"stem":142,"icon":75},"\u002Fdocs\u002Fminimods\u002Fchangelog","docs\u002F3.minimods\u002F8.changelog",{"title":144,"path":145,"stem":146,"icon":147},"Credits","\u002Fdocs\u002Fminimods\u002Fcredits","docs\u002F3.minimods\u002F9.credits","i-lucide-heart",{"title":149,"path":150,"stem":151,"children":152,"icon":35},"MP Steam","\u002Fdocs\u002Fmpsteam","docs\u002F4.mpsteam\u002F1.index",[153,154,159],{"title":5,"path":150,"stem":151,"icon":35},{"title":155,"path":156,"stem":157,"icon":158},"Hosting and joining","\u002Fdocs\u002Fmpsteam\u002Fhosting-and-joining","docs\u002F4.mpsteam\u002F2.hosting-and-joining","i-lucide-play",{"title":72,"path":160,"stem":161,"icon":75},"\u002Fdocs\u002Fmpsteam\u002Fchangelog","docs\u002F4.mpsteam\u002F3.changelog",{"title":163,"path":164,"stem":165,"icon":70},"MCP server","\u002Fdocs\u002Fmcp","docs\u002F5.mcp",{"id":167,"title":57,"body":168,"description":2427,"extension":2428,"links":2429,"meta":2430,"navigation":2431,"path":58,"seo":2432,"stem":59,"__hash__":2433},"docs\u002Fdocs\u002F1.culttweaker\u002F10.custom-weapons.md",{"type":169,"value":170,"toc":2408},"minimark",[171,175,180,185,197,207,747,758,762,1038,1041,1072,1076,1081,1372,1376,1408,1417,1457,1463,1468,1471,1475,1478,1532,1535,1569,1572,1575,1692,1695,1708,1724,1730,1734,1746,1749,1753,1756,1763,1767,1770,1806,1809,1816,1820,1837,1846,1850,1853,1884,2043,2063,2066,2319,2325,2338,2349,2378,2382,2404],[172,173,174],"p",{},"A custom player spine can add weapons to Cult of the Lamb. Each one is built on a\nvanilla weapon and swaps in your artwork, your combo, your numbers and your\ntimings. It keeps the base weapon's heavy attack, sounds, hit shapes and pickup\ncard.",[176,177],"video-player",{"caption":178,"src":179},"A custom weapon in game: the artwork, combo and numbers come from the config, everything else from the vanilla weapon it is built on.","\u002Fvideos\u002Fcustomweaponsample.mp4",[181,182,184],"h2",{"id":183},"where-the-config-goes","Where the config goes",[172,186,187,188,192,193,196],{},"Weapons are part of the spine that carries their artwork. They go in the spine's\n",[189,190,191],"code",{},"config.json",", under ",[189,194,195],{},"weapons",", beside the usual skin settings:",[198,199,205],"pre",{"className":200,"code":202,"language":203,"meta":204},[201],"language-text","PlayerSkins\u002F\n    FlameLamb\u002F\n        player-main.json\n        player-main.atlas\n        player-main.png\n        flamesword.png          \u003C- optional icon\n        config.json\n","text","",[189,206,202],{"__ignoreMap":204},[198,208,212],{"className":209,"code":210,"language":211,"meta":204,"style":204},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n    \"defaultSkin\": \"Lamb\",\n    \"skins\": [ \"Lamb\" ],\n    \"preloadWeapons\": false,\n    \"weapons\": [\n        {\n            \"name\": \"FlameSword\",\n            \"displayName\": \"Flame Sword\",\n            \"description\": \"Burns a little.\",\n            \"lore\": \"Forged in the Old Faith's last fire.\",\n            \"baseWeapon\": \"Sword\",\n            \"skin\": \"Weapons\u002FFlameSword\",\n            \"modifierSkin\": \"Normal\",\n            \"pickupAnimation\": \"weapons\u002Fget-weapon-flamesword\",\n            \"icon\": \"flamesword.png\",\n            \"inPool\": true,\n            \"combo\": [\n                { \"animation\": \"attack-combo1-flame\", \"damage\": 1.0, \"speed\": 1.0 },\n                { \"animation\": \"attack-combo2-flame\", \"damage\": 1.0, \"speed\": 1.2 },\n                { \"animation\": \"attack-combo3-flame\", \"damage\": 1.5, \"speed\": 0.9,\n                  \"range\": 1.2, \"hitboxRadius\": 0.9, \"knockback\": 1.5 }\n            ]\n        }\n    ]\n}\n","json",[189,213,214,223,251,275,290,304,310,333,354,375,396,417,438,459,480,501,516,530,584,631,679,723,729,735,741],{"__ignoreMap":204},[215,216,219],"span",{"class":217,"line":218},"line",1,[215,220,222],{"class":221},"sMK4o","{\n",[215,224,226,229,233,236,239,242,246,248],{"class":217,"line":225},2,[215,227,228],{"class":221},"    \"",[215,230,232],{"class":231},"spNyl","defaultSkin",[215,234,235],{"class":221},"\"",[215,237,238],{"class":221},":",[215,240,241],{"class":221}," \"",[215,243,245],{"class":244},"sfazB","Lamb",[215,247,235],{"class":221},[215,249,250],{"class":221},",\n",[215,252,254,256,259,261,263,266,268,270,272],{"class":217,"line":253},3,[215,255,228],{"class":221},[215,257,258],{"class":231},"skins",[215,260,235],{"class":221},[215,262,238],{"class":221},[215,264,265],{"class":221}," [",[215,267,241],{"class":221},[215,269,245],{"class":244},[215,271,235],{"class":221},[215,273,274],{"class":221}," ],\n",[215,276,278,280,283,285,287],{"class":217,"line":277},4,[215,279,228],{"class":221},[215,281,282],{"class":231},"preloadWeapons",[215,284,235],{"class":221},[215,286,238],{"class":221},[215,288,289],{"class":221}," false,\n",[215,291,293,295,297,299,301],{"class":217,"line":292},5,[215,294,228],{"class":221},[215,296,195],{"class":231},[215,298,235],{"class":221},[215,300,238],{"class":221},[215,302,303],{"class":221}," [\n",[215,305,307],{"class":217,"line":306},6,[215,308,309],{"class":221},"        {\n",[215,311,313,316,320,322,324,326,329,331],{"class":217,"line":312},7,[215,314,315],{"class":221},"            \"",[215,317,319],{"class":318},"sBMFI","name",[215,321,235],{"class":221},[215,323,238],{"class":221},[215,325,241],{"class":221},[215,327,328],{"class":244},"FlameSword",[215,330,235],{"class":221},[215,332,250],{"class":221},[215,334,336,338,341,343,345,347,350,352],{"class":217,"line":335},8,[215,337,315],{"class":221},[215,339,340],{"class":318},"displayName",[215,342,235],{"class":221},[215,344,238],{"class":221},[215,346,241],{"class":221},[215,348,349],{"class":244},"Flame Sword",[215,351,235],{"class":221},[215,353,250],{"class":221},[215,355,357,359,362,364,366,368,371,373],{"class":217,"line":356},9,[215,358,315],{"class":221},[215,360,361],{"class":318},"description",[215,363,235],{"class":221},[215,365,238],{"class":221},[215,367,241],{"class":221},[215,369,370],{"class":244},"Burns a little.",[215,372,235],{"class":221},[215,374,250],{"class":221},[215,376,378,380,383,385,387,389,392,394],{"class":217,"line":377},10,[215,379,315],{"class":221},[215,381,382],{"class":318},"lore",[215,384,235],{"class":221},[215,386,238],{"class":221},[215,388,241],{"class":221},[215,390,391],{"class":244},"Forged in the Old Faith's last fire.",[215,393,235],{"class":221},[215,395,250],{"class":221},[215,397,399,401,404,406,408,410,413,415],{"class":217,"line":398},11,[215,400,315],{"class":221},[215,402,403],{"class":318},"baseWeapon",[215,405,235],{"class":221},[215,407,238],{"class":221},[215,409,241],{"class":221},[215,411,412],{"class":244},"Sword",[215,414,235],{"class":221},[215,416,250],{"class":221},[215,418,420,422,425,427,429,431,434,436],{"class":217,"line":419},12,[215,421,315],{"class":221},[215,423,424],{"class":318},"skin",[215,426,235],{"class":221},[215,428,238],{"class":221},[215,430,241],{"class":221},[215,432,433],{"class":244},"Weapons\u002FFlameSword",[215,435,235],{"class":221},[215,437,250],{"class":221},[215,439,441,443,446,448,450,452,455,457],{"class":217,"line":440},13,[215,442,315],{"class":221},[215,444,445],{"class":318},"modifierSkin",[215,447,235],{"class":221},[215,449,238],{"class":221},[215,451,241],{"class":221},[215,453,454],{"class":244},"Normal",[215,456,235],{"class":221},[215,458,250],{"class":221},[215,460,462,464,467,469,471,473,476,478],{"class":217,"line":461},14,[215,463,315],{"class":221},[215,465,466],{"class":318},"pickupAnimation",[215,468,235],{"class":221},[215,470,238],{"class":221},[215,472,241],{"class":221},[215,474,475],{"class":244},"weapons\u002Fget-weapon-flamesword",[215,477,235],{"class":221},[215,479,250],{"class":221},[215,481,483,485,488,490,492,494,497,499],{"class":217,"line":482},15,[215,484,315],{"class":221},[215,486,487],{"class":318},"icon",[215,489,235],{"class":221},[215,491,238],{"class":221},[215,493,241],{"class":221},[215,495,496],{"class":244},"flamesword.png",[215,498,235],{"class":221},[215,500,250],{"class":221},[215,502,504,506,509,511,513],{"class":217,"line":503},16,[215,505,315],{"class":221},[215,507,508],{"class":318},"inPool",[215,510,235],{"class":221},[215,512,238],{"class":221},[215,514,515],{"class":221}," true,\n",[215,517,519,521,524,526,528],{"class":217,"line":518},17,[215,520,315],{"class":221},[215,522,523],{"class":318},"combo",[215,525,235],{"class":221},[215,527,238],{"class":221},[215,529,303],{"class":221},[215,531,533,536,538,542,544,546,548,551,553,556,558,561,563,565,568,570,572,575,577,579,581],{"class":217,"line":532},18,[215,534,535],{"class":221},"                {",[215,537,241],{"class":221},[215,539,541],{"class":540},"sbssI","animation",[215,543,235],{"class":221},[215,545,238],{"class":221},[215,547,241],{"class":221},[215,549,550],{"class":244},"attack-combo1-flame",[215,552,235],{"class":221},[215,554,555],{"class":221},",",[215,557,241],{"class":221},[215,559,560],{"class":540},"damage",[215,562,235],{"class":221},[215,564,238],{"class":221},[215,566,567],{"class":540}," 1.0",[215,569,555],{"class":221},[215,571,241],{"class":221},[215,573,574],{"class":540},"speed",[215,576,235],{"class":221},[215,578,238],{"class":221},[215,580,567],{"class":540},[215,582,583],{"class":221}," },\n",[215,585,587,589,591,593,595,597,599,602,604,606,608,610,612,614,616,618,620,622,624,626,629],{"class":217,"line":586},19,[215,588,535],{"class":221},[215,590,241],{"class":221},[215,592,541],{"class":540},[215,594,235],{"class":221},[215,596,238],{"class":221},[215,598,241],{"class":221},[215,600,601],{"class":244},"attack-combo2-flame",[215,603,235],{"class":221},[215,605,555],{"class":221},[215,607,241],{"class":221},[215,609,560],{"class":540},[215,611,235],{"class":221},[215,613,238],{"class":221},[215,615,567],{"class":540},[215,617,555],{"class":221},[215,619,241],{"class":221},[215,621,574],{"class":540},[215,623,235],{"class":221},[215,625,238],{"class":221},[215,627,628],{"class":540}," 1.2",[215,630,583],{"class":221},[215,632,634,636,638,640,642,644,646,649,651,653,655,657,659,661,664,666,668,670,672,674,677],{"class":217,"line":633},20,[215,635,535],{"class":221},[215,637,241],{"class":221},[215,639,541],{"class":540},[215,641,235],{"class":221},[215,643,238],{"class":221},[215,645,241],{"class":221},[215,647,648],{"class":244},"attack-combo3-flame",[215,650,235],{"class":221},[215,652,555],{"class":221},[215,654,241],{"class":221},[215,656,560],{"class":540},[215,658,235],{"class":221},[215,660,238],{"class":221},[215,662,663],{"class":540}," 1.5",[215,665,555],{"class":221},[215,667,241],{"class":221},[215,669,574],{"class":540},[215,671,235],{"class":221},[215,673,238],{"class":221},[215,675,676],{"class":540}," 0.9",[215,678,250],{"class":221},[215,680,682,685,688,690,692,694,696,698,701,703,705,707,709,711,714,716,718,720],{"class":217,"line":681},21,[215,683,684],{"class":221},"                  \"",[215,686,687],{"class":540},"range",[215,689,235],{"class":221},[215,691,238],{"class":221},[215,693,628],{"class":540},[215,695,555],{"class":221},[215,697,241],{"class":221},[215,699,700],{"class":540},"hitboxRadius",[215,702,235],{"class":221},[215,704,238],{"class":221},[215,706,676],{"class":540},[215,708,555],{"class":221},[215,710,241],{"class":221},[215,712,713],{"class":540},"knockback",[215,715,235],{"class":221},[215,717,238],{"class":221},[215,719,663],{"class":540},[215,721,722],{"class":221}," }\n",[215,724,726],{"class":217,"line":725},22,[215,727,728],{"class":221},"            ]\n",[215,730,732],{"class":217,"line":731},23,[215,733,734],{"class":221},"        }\n",[215,736,738],{"class":217,"line":737},24,[215,739,740],{"class":221},"    ]\n",[215,742,744],{"class":217,"line":743},25,[215,745,746],{"class":221},"}\n",[172,748,749,750,753,754,757],{},"A spine can declare any number of weapons. A weapon is known to the game as\n",[189,751,752],{},"\u003Cspine folder>\u002F\u003Cname>",", for example ",[189,755,756],{},"FlameLamb\u002FFlameSword","; that is the name the\nmap editor's Podium tool shows.",[181,759,761],{"id":760},"weapon-fields","Weapon fields",[763,764,765,784],"table",{},[766,767,768],"thead",{},[769,770,771,775,778,781],"tr",{},[772,773,774],"th",{},"Field",[772,776,777],{},"Type",[772,779,780],{},"Default",[772,782,783],{},"Description",[785,786,787,803,818,832,845,886,900,936,950,967,981,1002,1023],"tbody",{},[769,788,789,794,797,800],{},[790,791,792],"td",{},[189,793,319],{},[790,795,796],{},"string",[790,798,799],{},"required",[790,801,802],{},"Id of the weapon inside this spine. Letters, digits and underscores are safest. Changing it later changes the weapon's id, so saves that had it in the weapon pool forget it.",[769,804,805,809,811,815],{},[790,806,807],{},[189,808,340],{},[790,810,796],{},[790,812,813],{},[189,814,319],{},[790,816,817],{},"Name on the pickup card and the HUD.",[769,819,820,824,826,829],{},[790,821,822],{},[189,823,361],{},[790,825,796],{},[790,827,828],{},"empty",[790,830,831],{},"Text under the name on the pickup card.",[769,833,834,838,840,842],{},[790,835,836],{},[189,837,382],{},[790,839,796],{},[790,841,828],{},[790,843,844],{},"Small italic line on the pickup card.",[769,846,847,851,853,857],{},[790,848,849],{},[189,850,403],{},[790,852,796],{},[790,854,855],{},[189,856,412],{},[790,858,859,860,862,863,862,866,862,869,862,872,862,875,862,878,881,882,885],{},"The vanilla weapon this one is built on: ",[189,861,412],{},", ",[189,864,865],{},"Axe",[189,867,868],{},"Hammer",[189,870,871],{},"Dagger",[189,873,874],{},"Gauntlet",[189,876,877],{},"Blunderbuss",[189,879,880],{},"Shield"," or ",[189,883,884],{},"Chain",". Decides the heavy attack, the sounds, the swipe shape, the default combo and the default pickup animation.",[769,887,888,892,894,897],{},[790,889,890],{},[189,891,424],{},[790,893,796],{},[790,895,896],{},"none",[790,898,899],{},"A skin in your Spine file holding the weapon's attachments. Without it the weapon looks like the base weapon.",[769,901,902,906,908,912],{},[790,903,904],{},[189,905,445],{},[790,907,796],{},[790,909,910],{},[189,911,454],{},[790,913,914,915,862,917,862,920,862,923,862,926,862,929,881,932,935],{},"The vanilla modifier skin layered under yours: ",[189,916,454],{},[189,918,919],{},"Poison",[189,921,922],{},"Critical",[189,924,925],{},"Healing",[189,927,928],{},"Fervor",[189,930,931],{},"Godly",[189,933,934],{},"Necromancy",". Cosmetic only; the modifier's effect is not applied.",[769,937,938,942,944,947],{},[790,939,940],{},[189,941,466],{},[790,943,796],{},[790,945,946],{},"base weapon's",[790,948,949],{},"Animation played when the weapon is picked up from a podium, the ground or a shop.",[769,951,952,956,958,964],{},[790,953,954],{},[189,955,487],{},[790,957,796],{},[790,959,960,963],{},[189,961,962],{},"hookIcon",", else the base weapon's",[790,965,966],{},"A PNG in the spine folder, used on the HUD, the podium and the pickup card. Drawn at the size of the base weapon's icon.",[769,968,969,973,975,978],{},[790,970,971],{},[189,972,962],{},[790,974,796],{},[790,976,977],{},"the chain's hook",[790,979,980],{},"Chain-based weapons only: a PNG in the spine folder drawn at the end of the chain while it swings.",[769,982,983,988,991,996],{},[790,984,985],{},[189,986,987],{},"hookScale",[790,989,990],{},"number",[790,992,993],{},[189,994,995],{},"1",[790,997,998,999,1001],{},"Chain-based weapons only: size of ",[189,1000,962],{}," relative to the chain's own hook.",[769,1003,1004,1008,1011,1016],{},[790,1005,1006],{},[189,1007,508],{},[790,1009,1010],{},"bool",[790,1012,1013],{},[189,1014,1015],{},"true",[790,1017,1018,1019,1022],{},"Whether weapon podiums, weapon rooms and chests can roll this weapon. ",[189,1020,1021],{},"false"," keeps it to podiums pinned to it by the map editor.",[769,1024,1025,1029,1032,1035],{},[790,1026,1027],{},[189,1028,523],{},[790,1030,1031],{},"array",[790,1033,1034],{},"base weapon's chain",[790,1036,1037],{},"The chain of hits, in order.",[172,1039,1040],{},"And one field at the top level of the spine config, not inside a weapon:",[763,1042,1043,1055],{},[766,1044,1045],{},[769,1046,1047,1049,1051,1053],{},[772,1048,774],{},[772,1050,777],{},[772,1052,780],{},[772,1054,783],{},[785,1056,1057],{},[769,1058,1059,1063,1065,1069],{},[790,1060,1061],{},[189,1062,282],{},[790,1064,1010],{},[790,1066,1067],{},[189,1068,1021],{},[790,1070,1071],{},"Load this spine at boot so its weapons never show the base look while loading.",[181,1073,1075],{"id":1074},"hit-fields","Hit fields",[172,1077,1078,1080],{},[189,1079,523],{}," is a list; each entry is one hit, in the order they chain. Pressing attack\nrepeatedly plays hit 1, 2, 3, ... and wraps to hit 1 after the last. Every hit\nstarts as a copy of the base weapon's hit at the same position in its chain (a\nlonger chain than the base's wraps: hit 4 of a Sword-based weapon starts as a\ncopy of the sword's hit 1), and each field below replaces one value on that copy.\nAnything left out keeps the base hit's value.",[763,1082,1083,1095],{},[766,1084,1085],{},[769,1086,1087,1089,1091,1093],{},[772,1088,774],{},[772,1090,777],{},[772,1092,780],{},[772,1094,783],{},[785,1096,1097,1111,1124,1147,1163,1193,1206,1220,1234,1248,1291,1308,1322,1338,1355],{},[769,1098,1099,1103,1105,1108],{},[790,1100,1101],{},[189,1102,541],{},[790,1104,796],{},[790,1106,1107],{},"base hit's",[790,1109,1110],{},"The Spine animation this hit plays.",[769,1112,1113,1117,1119,1121],{},[790,1114,1115],{},[189,1116,560],{},[790,1118,990],{},[790,1120,1107],{},[790,1122,1123],{},"Base damage before the run's multipliers. Vanilla light hits are around 1.",[769,1125,1126,1130,1132,1136],{},[790,1127,1128],{},[189,1129,574],{},[790,1131,990],{},[790,1133,1134],{},[189,1135,995],{},[790,1137,1138,1139,1142,1143,1146],{},"Playback speed of the animation. ",[189,1140,1141],{},"1.5"," is half again as fast, ",[189,1144,1145],{},"0.5"," half speed. Everything in the animation scales with it, including where the hit lands in time.",[769,1148,1149,1153,1155,1157],{},[790,1150,1151],{},[189,1152,687],{},[790,1154,990],{},[790,1156,1107],{},[790,1158,1159,1160,1162],{},"How far in front of the player the hit's circle is placed, in world units. Vanilla swords use about 1. Also the circle's radius unless ",[189,1161,700],{}," is set.",[769,1164,1165,1169,1171,1175],{},[790,1166,1167],{},[189,1168,700],{},[790,1170,990],{},[790,1172,1173],{},[189,1174,687],{},[790,1176,1177,1178,1180,1181,1183,1184,1186,1187,1189,1190,1192],{},"Radius of the hit's circle, in world units, independent of ",[189,1179,687],{},". A large ",[189,1182,687],{}," with a small ",[189,1185,700],{}," is a poke; a small ",[189,1188,687],{}," with a large ",[189,1191,700],{}," is a sweep around the player.",[769,1194,1195,1199,1201,1203],{},[790,1196,1197],{},[189,1198,713],{},[790,1200,990],{},[790,1202,1107],{},[790,1204,1205],{},"Push applied to whatever the hit strikes.",[769,1207,1208,1213,1215,1217],{},[790,1209,1210],{},[189,1211,1212],{},"lungeSpeed",[790,1214,990],{},[790,1216,1107],{},[790,1218,1219],{},"Speed of the forward lunge the player takes while swinging (vanilla default 20).",[769,1221,1222,1227,1229,1231],{},[790,1223,1224],{},[189,1225,1226],{},"lungeDuration",[790,1228,990],{},[790,1230,1107],{},[790,1232,1233],{},"How long that lunge lasts, in seconds (vanilla default 0.15).",[769,1235,1236,1241,1243,1245],{},[790,1237,1238],{},[189,1239,1240],{},"cameraShake",[790,1242,990],{},[790,1244,1107],{},[790,1246,1247],{},"Camera shake strength when the hit lands.",[769,1249,1250,1255,1257,1259],{},[790,1251,1252],{},[189,1253,1254],{},"attackType",[790,1256,796],{},[790,1258,1107],{},[790,1260,1261,862,1264,862,1267,862,1270,862,1272,862,1275,881,1278,1281,1282,1284,1285,1287,1288,1290],{},[189,1262,1263],{},"Melee",[189,1265,1266],{},"Heavy",[189,1268,1269],{},"Projectile",[189,1271,919],{},[189,1273,1274],{},"NoKnockBack",[189,1276,1277],{},"Ice",[189,1279,1280],{},"Charm",". Changes how enemies react (",[189,1283,1274],{}," is what it says; ",[189,1286,1277],{}," and ",[189,1289,1280],{}," apply those effects the way curses do).",[769,1292,1293,1298,1300,1302],{},[790,1294,1295],{},[189,1296,1297],{},"canQueueNext",[790,1299,1010],{},[790,1301,1107],{},[790,1303,1304,1305,1307],{},"Whether pressing attack during this hit queues the next one. ",[189,1306,1021],{}," makes the player wait for the hit to finish before the next input counts.",[769,1309,1310,1315,1317,1319],{},[790,1311,1312],{},[189,1313,1314],{},"canTurn",[790,1316,1010],{},[790,1318,1107],{},[790,1320,1321],{},"Whether the player may change facing while this hit plays.",[769,1323,1324,1329,1332,1335],{},[790,1325,1326],{},[189,1327,1328],{},"hook",[790,1330,1331],{},"object",[790,1333,1334],{},"chain's own",[790,1336,1337],{},"Chain-based weapons only: the hook's move on this hit and the shape of its sweep.",[769,1339,1340,1345,1347,1352],{},[790,1341,1342],{},[189,1343,1344],{},"hitAt",[790,1346,990],{},[790,1348,1349],{},[189,1350,1351],{},"0.35",[790,1353,1354],{},"Only used when the animation has no attack events: where \"Attack Deal Damage\" is placed, as a fraction of the animation's length.",[769,1356,1357,1362,1364,1369],{},[790,1358,1359],{},[189,1360,1361],{},"breakAt",[790,1363,990],{},[790,1365,1366],{},[189,1367,1368],{},"0.65",[790,1370,1371],{},"Only used when the animation has no attack events: where \"Attack Can Break\" is placed, as a fraction of the animation's length.",[181,1373,1375],{"id":1374},"making-the-weapons-skin","Making the weapon's skin",[172,1377,1378,1379,862,1382,1385,1386,1389,1390,862,1393,250,1396,862,1399,862,1402,862,1405,1407],{},"The game does not tell weapons apart by skin. Its weapon skins\n(",[189,1380,1381],{},"Weapons\u002FNormal",[189,1383,1384],{},"Weapons\u002FPoison"," and so on) carry only the tint of the\nmodifier; the shape of the weapon comes from the attack animations, which key the\n",[189,1387,1388],{},"WEAPON"," slot to a named attachment: ",[189,1391,1392],{},"Weapons\u002FSword",[189,1394,1395],{},"Weapons\u002FAxe",[189,1397,1398],{},"Weapons\u002FHammer",[189,1400,1401],{},"Weapons\u002FDagger",[189,1403,1404],{},"Weapons\u002FBlunderbuss",[189,1406,880],{},". Your skin\nworks the same way.",[172,1409,1410,1411,1413,1414,1416],{},"Make a skin in your Spine project (any name; ",[189,1412,433],{}," follows the\nvanilla pattern) and put the weapon's attachments in it, on the ",[189,1415,1388],{}," slot.\nThen:",[1418,1419,1420,1448],"ul",{},[1421,1422,1423,1427,1428,1430,1431,1433,1434,1437,1438,862,1441,862,1444,1447],"li",{},[1424,1425,1426],"strong",{},"If you reuse the base weapon's animations",", name your attachments the way\nthose animations expect them. A Sword-based weapon whose skin puts an attachment\nnamed ",[189,1429,1392],{}," on the ",[189,1432,1388],{}," slot shows your image wherever the sword\nanimations showed the sword. Do the same on ",[189,1435,1436],{},"Weapons\u002FSwordHeavy"," for the heavy\nattack (",[189,1439,1440],{},"AxeHeavy",[189,1442,1443],{},"HammerHeavy",[189,1445,1446],{},"Blunderbuss_Heavy"," for the others).",[1421,1449,1450,1453,1454,1456],{},[1424,1451,1452],{},"If you make your own animations",", key the ",[189,1455,1388],{}," slot to whatever you named\nyour attachments, and give the skin those attachments. Nothing else is required,\nbut keep the base names too if you want the weapon to look right on other\nspines.",[172,1458,1459,1460,1462],{},"The skin only needs to exist; do not add it to the spine's ",[189,1461,258],{}," list unless\nyou also want it selectable as a look.",[1464,1465,1467],"h3",{"id":1466},"any-spine-can-wield-it","Any spine can wield it",[172,1469,1470],{},"A custom weapon is not tied to the spine that declares it. Whoever picks it up,\non any skin, gets the skin's attachments copied onto their skeleton the way a\nfleece is copied. What cannot be copied is animations, so on a skin without your\ncustom animations the base weapon's animations play, and they show your artwork\nonly if your skin also provides the base attachment names. The same applies in\nmultiplayer, where each player may wear a different spine.",[181,1472,1474],{"id":1473},"hit-timings","Hit timings",[172,1476,1477],{},"The game's combat code drives an attack by three named events inside the\nanimation. It does not look at the animation's length or its frames; it waits for\nthe events. Every vanilla attack has them, and any animation you make for a hit\nshould carry them too. Copy them from a vanilla attack in Spine, then move them\nto fit your swing.",[763,1479,1480,1490],{},[766,1481,1482],{},[769,1483,1484,1487],{},[772,1485,1486],{},"Event name",[772,1488,1489],{},"What happens when it fires",[785,1491,1492,1502,1512,1522],{},[769,1493,1494,1499],{},[790,1495,1496],{},[189,1497,1498],{},"Attack Deal Damage",[790,1500,1501],{},"The hit lands: the swipe circle is spawned in front of the player for a tenth of a second and damages everything it overlaps once. The attack sound plays and the camera shakes.",[769,1503,1504,1509],{},[790,1505,1506],{},[189,1507,1508],{},"Attack Can Break",[790,1510,1511],{},"The hit may now be interrupted: a queued attack starts the next hit immediately, a dodge cancels the swing, the player can move. Before this event the player is locked in the swing.",[769,1513,1514,1519],{},[790,1515,1516],{},[189,1517,1518],{},"Attack Has Finished",[790,1520,1521],{},"The swing is over. The player returns to idle if nothing was queued.",[769,1523,1524,1529],{},[790,1525,1526],{},[189,1527,1528],{},"Update Angle",[790,1530,1531],{},"Optional. The moment the facing is committed: the player turns toward the stick or mouse until this fires, then the swing keeps that direction. Vanilla puts it on or just before \"Attack Deal Damage\".",[172,1533,1534],{},"So a hit has three phases:",[1536,1537,1538,1547,1559],"ol",{},[1421,1539,1540,1543,1544,1546],{},[1424,1541,1542],{},"Wind-up",", from the start to ",[189,1545,1498],{},". Nothing can be hit yet.\nThis is the part that makes a weapon feel heavy or quick.",[1421,1548,1549,1552,1553,1555,1556,1558],{},[1424,1550,1551],{},"Follow-through",", from ",[189,1554,1498],{}," to ",[189,1557,1508],{},". The hit\nhas landed but the player is still committed. Pressing attack here queues the\nnext hit.",[1421,1560,1561,1552,1564,1555,1566,1568],{},[1424,1562,1563],{},"Recovery",[189,1565,1508],{},[189,1567,1518],{},". The player may\ncancel into the next hit, a dodge or a move. If nothing is pressed the\nanimation plays out.",[172,1570,1571],{},"The combo counter goes back to hit 1 when 0.2 seconds pass without an attack\nafter a hit finished.",[172,1573,1574],{},"For reference, the vanilla timings, in seconds from the start of the animation:",[763,1576,1577,1595],{},[766,1578,1579],{},[769,1580,1581,1584,1586,1589,1592],{},[772,1582,1583],{},"Animation",[772,1585,1528],{},[772,1587,1588],{},"Deal Damage",[772,1590,1591],{},"Can Break",[772,1593,1594],{},"Finished",[785,1596,1597,1617,1635,1654,1672],{},[769,1598,1599,1606,1609,1611,1614],{},[790,1600,1601,1602,1605],{},"Sword hit 1 (",[189,1603,1604],{},"attack-combo1",")",[790,1607,1608],{},"0.03",[790,1610,1608],{},[790,1612,1613],{},"0.27",[790,1615,1616],{},"0.60",[769,1618,1619,1625,1627,1629,1632],{},[790,1620,1621,1622,1605],{},"Dagger hit 1 (",[189,1623,1624],{},"attack-combo1-dagger",[790,1626,1608],{},[790,1628,1608],{},[790,1630,1631],{},"0.20",[790,1633,1634],{},"0.53",[769,1636,1637,1643,1646,1648,1651],{},[790,1638,1639,1640,1605],{},"Axe hit 1 (",[189,1641,1642],{},"attack-combo1-axe",[790,1644,1645],{},"0.17",[790,1647,1631],{},[790,1649,1650],{},"0.63",[790,1652,1653],{},"0.83",[769,1655,1656,1662,1664,1667,1669],{},[790,1657,1658,1659,1605],{},"Axe hit 3 (",[189,1660,1661],{},"attack-combo3-axe",[790,1663,1631],{},[790,1665,1666],{},"0.30",[790,1668,1650],{},[790,1670,1671],{},"0.97",[769,1673,1674,1680,1683,1686,1689],{},[790,1675,1676,1677,1605],{},"Hammer hit 1 (",[189,1678,1679],{},"attack-combo1-hammer",[790,1681,1682],{},"0.40",[790,1684,1685],{},"0.43",[790,1687,1688],{},"0.77",[790,1690,1691],{},"1.13",[172,1693,1694],{},"The sword and dagger hit almost at once and recover fast; the axe and hammer wind\nup. A weapon that wants to feel heavy needs a later \"Attack Deal Damage\", not\njust more damage.",[172,1696,1697,1700,1701,1703,1704,1707],{},[1424,1698,1699],{},"Speed and the events."," ",[189,1702,574],{}," scales the whole animation, events included.\nHit 1 of the sword at ",[189,1705,1706],{},"speed: 2"," deals damage at 0.017 s and can be broken at\n0.13 s. This is how vanilla's weapon level and the attack-speed tarot cards work\ntoo, so a fast weapon is a fast animation, not a short one.",[1709,1710,1711,1714,1715,1717,1718,1720,1721,1723],"caution",{},[1424,1712,1713],{},"If an animation has none of the three events",", the mod adds them when the\nspine loads, so a hit can never lock the player in place: \"Update Angle\" and\n\"Attack Deal Damage\" at ",[189,1716,1344],{}," (default 35% of the animation), \"Attack Can\nBreak\" at ",[189,1719,1361],{}," (default 65%), and \"Attack Has Finished\" at the end. The log\nnames the animation and the times it used. This only happens when the animation\nhas ",[1424,1722,896],{}," of them; an animation with one or two is assumed to be deliberate\nand left alone, so make sure a hand-placed set is complete: without \"Attack Can\nBreak\" and \"Attack Has Finished\" the player stays locked in the swing.",[172,1725,1726,1729],{},[1424,1727,1728],{},"The pickup animation"," has no required events. It is played once and its length\nis what holds the player in place, so a long pickup animation is a long pause.",[181,1731,1733],{"id":1732},"damage-and-speed","Damage and speed",[172,1735,1736,1737,1739,1740,1742,1743,1745],{},"Every hit's damage is its ",[189,1738,560],{}," multiplied by the run's bonuses: the weapon's\nlevel (vanilla adds 13% plus 7% per level), the fleece, tarot cards, relics, and\nthe difficulty setting. So ",[189,1741,560],{}," is the number to compare against vanilla, not\nthe number that appears on enemies. Vanilla swords deal about 1 per light hit,\naxes and hammers more, daggers less. The pickup card shows the average of the\nhits through the same formula, and calls the weapon faster or slower than the\nheld one by the average ",[189,1744,574],{}," of its hits.",[172,1747,1748],{},"Heavy attacks are not part of the config. They keep the base weapon's animation,\ndamage and fervour cost, and their animations are looked up by family, so a\nSword-based weapon always has the sword's heavy attack.",[181,1750,1752],{"id":1751},"loading-and-preloading","Loading and preloading",[172,1754,1755],{},"The weapon's artwork lives in your spine file, which is large and only loaded\nwhen needed. At boot the spine loads only if a player is wearing it. Otherwise it\nstarts loading the moment one of its weapons appears in a room, when a podium\nrolls it, a chest offers it or an enemy drops it, in the background while the\nplayer walks over. A player who reaches it before the load finishes holds it with\nthe base weapon's look until the artwork lands, usually a few seconds. Nothing\npauses.",[172,1757,1758,1759,1762],{},"Set ",[189,1760,1761],{},"preloadWeapons: true"," at the top level of the spine config to load the spine\nat boot instead, whether or not anyone wears it. The weapon then always has its\nartwork from the first room. The cost is a longer start and a few hundred\nmegabytes of memory per spine, for as long as the game runs, so leave it off for\nspines whose weapons are rarely rolled.",[181,1764,1766],{"id":1765},"testing-a-weapon","Testing a weapon",[172,1768,1769],{},"Custom weapons join the weapon pool, so weapon podiums and chests can roll them,\nbut the roll is random. To get one on purpose:",[1771,1772,1773,1777,1784,1788,1799,1803],"steps",{},[1464,1774,1776],{"id":1775},"open-the-editor","Open the editor",[172,1778,1779,1780,1783],{},"Enter a dungeon and press ",[189,1781,1782],{},"F4"," to open the map editor.",[1464,1785,1787],{"id":1786},"pick-a-weapon-on-the-podium-tool","Pick a weapon on the Podium tool",[172,1789,1790,1791,1794,1795,1798],{},"Under the podium type there is a ",[1424,1792,1793],{},"Weapon"," list: \"Any\" rolls from the pool as\nusual, the vanilla weapons pin the podium to that weapon, and every custom weapon\nis listed by its ",[189,1796,1797],{},"\u003Cspine>\u002F\u003Cname>"," key. Picking a weapon sets the podium type to\nWeapon for you.",[1464,1800,1802],{"id":1801},"place-it","Place it",[172,1804,1805],{},"Place one and close the editor. That podium always offers that weapon.",[172,1807,1808],{},"Podiums placed this way are saved with the room like any other, so a test room\ncan be kept.",[172,1810,1811,1812,1815],{},"The log (",[189,1813,1814],{},"BepInEx\u002FLogOutput.log",") reports each weapon as it registers, with the\nid it was given, and warns about a skin or animation the spine does not have, an\nicon that could not be read, or a hit whose events were added. Search for the\nweapon's name.",[1464,1817,1819],{"id":1818},"seeing-the-hit-box","Seeing the hit box",[172,1821,1822,1823,1826,1827,1830,1831,1555,1834,1836],{},"In the mod's config file\n(",[189,1824,1825],{},"BepInEx\u002Fconfig\u002FInfernoDragon0.cotl.CustomSpineLoader.cfg",") set\n",[189,1828,1829],{},"WeaponHitboxes"," under ",[189,1832,1833],{},"[Debug]",[189,1835,1015],{},". Every attack then draws the outline of\nits hit box where it lands, with a line from the attacker to its centre, fading\nout over most of a second: cyan for a custom weapon's light hit, amber for any\nother attack of the player's (vanilla weapons, heavy attacks), red for enemies.",[172,1838,1839,1840,1842,1843,1845],{},"Swing a vanilla sword and your weapon side by side to compare ",[189,1841,687],{}," and\n",[189,1844,700],{},"; the value in the config is in the same units as the drawing.\nChain hooks are drawn too, following the hook while it is out: its circle and the\nchain's box, dimmed while they cannot hurt. Leave it off for play.",[181,1847,1849],{"id":1848},"chain-based-weapons","Chain-based weapons",[172,1851,1852],{},"The Chain (the hook-and-chain from the Unholy Alliance DLC) is the one weapon\nwhose swing is not in the Spine animation. The skeleton only plays the body pose;\nthe chain and hook are a separate object that the game moves along a scripted arc\nper hit, drawn as a line from the player's hand to the hook, and the hit is the\nhook's own collider, not a swipe circle. So a Chain-based custom weapon changes\nless than the others:",[1418,1854,1855,1878],{},[1421,1856,1857,862,1859,862,1861,1863,1864,250,1866,1868,1869,1871,1872,1874,1875,1877],{},[189,1858,560],{},[189,1860,574],{},[189,1862,687],{}," (the hook's collider radius), ",[189,1865,713],{},[189,1867,1240],{}," and the body ",[189,1870,541],{}," work as for any hit. ",[189,1873,700],{}," does\nnot apply, because the hook never goes through the swipe path; ",[189,1876,687],{}," is the\nhook's circle.",[1421,1879,1880,1881,1883],{},"The hook's move and the shape of its sweep are set per hit with a ",[189,1882,1328],{}," block:",[198,1885,1887],{"className":209,"code":1886,"language":211,"meta":204,"style":204},"  { \"animation\": \"attack-chain-combo1\", \"damage\": 1.0,\n    \"hook\": { \"pattern\": \"left\", \"startAngle\": -90, \"sweep\": 360,\n              \"width\": 2.5, \"height\": 1.5, \"offset\": 0, \"duration\": 0.45 } }\n",[189,1888,1889,1923,1982],{"__ignoreMap":204},[215,1890,1891,1894,1896,1898,1900,1902,1904,1907,1909,1911,1913,1915,1917,1919,1921],{"class":217,"line":218},[215,1892,1893],{"class":221},"  {",[215,1895,241],{"class":221},[215,1897,541],{"class":231},[215,1899,235],{"class":221},[215,1901,238],{"class":221},[215,1903,241],{"class":221},[215,1905,1906],{"class":244},"attack-chain-combo1",[215,1908,235],{"class":221},[215,1910,555],{"class":221},[215,1912,241],{"class":221},[215,1914,560],{"class":231},[215,1916,235],{"class":221},[215,1918,238],{"class":221},[215,1920,567],{"class":540},[215,1922,250],{"class":221},[215,1924,1925,1927,1929,1931,1933,1936,1938,1941,1943,1945,1947,1950,1952,1954,1956,1959,1961,1963,1966,1968,1970,1973,1975,1977,1980],{"class":217,"line":225},[215,1926,228],{"class":221},[215,1928,1328],{"class":231},[215,1930,235],{"class":221},[215,1932,238],{"class":221},[215,1934,1935],{"class":221}," {",[215,1937,241],{"class":221},[215,1939,1940],{"class":318},"pattern",[215,1942,235],{"class":221},[215,1944,238],{"class":221},[215,1946,241],{"class":221},[215,1948,1949],{"class":244},"left",[215,1951,235],{"class":221},[215,1953,555],{"class":221},[215,1955,241],{"class":221},[215,1957,1958],{"class":318},"startAngle",[215,1960,235],{"class":221},[215,1962,238],{"class":221},[215,1964,1965],{"class":540}," -90",[215,1967,555],{"class":221},[215,1969,241],{"class":221},[215,1971,1972],{"class":318},"sweep",[215,1974,235],{"class":221},[215,1976,238],{"class":221},[215,1978,1979],{"class":540}," 360",[215,1981,250],{"class":221},[215,1983,1984,1987,1990,1992,1994,1997,1999,2001,2004,2006,2008,2010,2012,2014,2017,2019,2021,2024,2026,2028,2031,2033,2035,2038,2041],{"class":217,"line":253},[215,1985,1986],{"class":221},"              \"",[215,1988,1989],{"class":318},"width",[215,1991,235],{"class":221},[215,1993,238],{"class":221},[215,1995,1996],{"class":540}," 2.5",[215,1998,555],{"class":221},[215,2000,241],{"class":221},[215,2002,2003],{"class":318},"height",[215,2005,235],{"class":221},[215,2007,238],{"class":221},[215,2009,663],{"class":540},[215,2011,555],{"class":221},[215,2013,241],{"class":221},[215,2015,2016],{"class":318},"offset",[215,2018,235],{"class":221},[215,2020,238],{"class":221},[215,2022,2023],{"class":540}," 0",[215,2025,555],{"class":221},[215,2027,241],{"class":221},[215,2029,2030],{"class":318},"duration",[215,2032,235],{"class":221},[215,2034,238],{"class":221},[215,2036,2037],{"class":540}," 0.45",[215,2039,2040],{"class":221}," }",[215,2042,722],{"class":221},[172,2044,2045,2047,2048,2050,2051,2054,2055,2058,2059,2062],{},[189,2046,1940],{}," picks the move: ",[189,2049,1949],{}," sweeps one hook around the player's left side,\n",[189,2052,2053],{},"right"," the other hook around the right, ",[189,2056,2057],{},"slam"," throws both hooks out and slams\nthem down (the chain's third hit, auto-aimed at the nearest enemy), ",[189,2060,2061],{},"fallback"," is\nthe game's untuned quick sweep, only available on hit four or later. Without a\npattern the chain's own order applies: left, right, slam, then fallback for every\nhit after the third.",[172,2064,2065],{},"A sweep is an ellipse around the player, in the plane of the screen:",[763,2067,2068,2080],{},[766,2069,2070],{},[769,2071,2072,2074,2076,2078],{},[772,2073,774],{},[772,2075,777],{},[772,2077,780],{},[772,2079,783],{},[785,2081,2082,2104,2118,2135,2148,2161,2184,2197,2211,2231,2248,2262,2285,2305],{},[769,2083,2084,2088,2090,2093],{},[790,2085,2086],{},[189,2087,1940],{},[790,2089,796],{},[790,2091,2092],{},"the chain's own order",[790,2094,2095,862,2097,862,2099,881,2101,2103],{},[189,2096,1949],{},[189,2098,2053],{},[189,2100,2057],{},[189,2102,2061],{},".",[769,2105,2106,2110,2112,2115],{},[790,2107,2108],{},[189,2109,1958],{},[790,2111,990],{},[790,2113,2114],{},"the chain's own",[790,2116,2117],{},"Where on the ellipse the hook starts, in degrees from the direction the player faces.",[769,2119,2120,2124,2126,2128],{},[790,2121,2122],{},[189,2123,1972],{},[790,2125,990],{},[790,2127,2114],{},[790,2129,2130,2131,2134],{},"How far it travels, in degrees. Negative goes the other way round; ",[189,2132,2133],{},"360"," is a full circle.",[769,2136,2137,2141,2143,2145],{},[790,2138,2139],{},[189,2140,1989],{},[790,2142,990],{},[790,2144,2114],{},[790,2146,2147],{},"The ellipse's horizontal radius, in world units.",[769,2149,2150,2154,2156,2158],{},[790,2151,2152],{},[189,2153,2003],{},[790,2155,990],{},[790,2157,2114],{},[790,2159,2160],{},"The ellipse's vertical radius, in world units.",[769,2162,2163,2167,2169,2171],{},[790,2164,2165],{},[189,2166,2016],{},[790,2168,990],{},[790,2170,2114],{},[790,2172,2173,2174,2176,2177,2179,2180,2183],{},"Moves the ellipse's centre sideways from the player, to the left for ",[189,2175,1949],{}," and the right for ",[189,2178,2053],{},". ",[189,2181,2182],{},"0"," centres it.",[769,2185,2186,2190,2192,2194],{},[790,2187,2188],{},[189,2189,2030],{},[790,2191,990],{},[790,2193,2114],{},[790,2195,2196],{},"The sweep's time in seconds at normal attack speed.",[769,2198,2199,2204,2206,2208],{},[790,2200,2201],{},[189,2202,2203],{},"colliderOn",[790,2205,990],{},[790,2207,2114],{},[790,2209,2210],{},"Seconds after the start before the hook starts hurting.",[769,2212,2213,2218,2220,2222],{},[790,2214,2215],{},[189,2216,2217],{},"colliderOff",[790,2219,990],{},[790,2221,2114],{},[790,2223,2224,2225,2227,2228,2230],{},"When it stops hurting. The chain's own thrusts stop at 0.28 s; with a ",[189,2226,2030],{}," set and no ",[189,2229,2217],{},", the hook stays live for the whole sweep.",[769,2232,2233,2238,2240,2242],{},[790,2234,2235],{},[189,2236,2237],{},"radiusCurve",[790,2239,1031],{},[790,2241,2114],{},[790,2243,2244,2247],{},[189,2245,2246],{},"[time, multiplier]"," pairs, time from 0 to 1 across the hit, scaling the ellipse's radius as the hit plays.",[769,2249,2250,2255,2257,2259],{},[790,2251,2252],{},[189,2253,2254],{},"scaleCurve",[790,2256,1031],{},[790,2258,2114],{},[790,2260,2261],{},"The same shape, scaling the hook picture over the hit, for a wind-up or a flourish.",[769,2263,2264,2269,2272,2274],{},[790,2265,2266],{},[189,2267,2268],{},"hooks",[790,2270,2271],{},"int",[790,2273,995],{},[790,2275,2276,2279,2280,881,2282,2284],{},[189,2277,2278],{},"2"," on a ",[189,2281,1949],{},[189,2283,2053],{}," hit swings both chains.",[769,2286,2287,2292,2294,2299],{},[790,2288,2289],{},[189,2290,2291],{},"secondStartAngle",[790,2293,990],{},[790,2295,2296],{},[189,2297,2298],{},"180",[790,2300,2301,2302,2304],{},"How far behind the first the second chain is, in degrees. ",[189,2303,2182],{}," puts them together.",[769,2306,2307,2312,2314,2316],{},[790,2308,2309],{},[189,2310,2311],{},"secondDelay",[790,2313,990],{},[790,2315,2182],{},[790,2317,2318],{},"Holds the second chain back by that many seconds.",[172,2320,2321,2322,2324],{},"Any value left out is the chain's own for that move: a hit with a pattern starts\nas a copy of the chain's hit for that move, including its swing effect (the white\narc), rather than the chain's hit at the same position. The log prints the chain's\nown numbers for its three hits the first time a Chain-based weapon is built, so\nthere is a reference to start from. The ",[189,2323,2057],{}," pattern reads the same numbers but\nflies the hooks along the facing direction rather than around the player.",[172,2326,2327,2328,2330,2331,2333,2334,2337],{},"The hook appears at the start of its path rather than travelling out from the\nhand, so a thrust is made with ",[189,2329,2237],{},". A stab is a sweep of ",[189,2332,2182],{}," (the chain\nis drawn straight) with ",[189,2335,2336],{},"\"radiusCurve\": [[0, 0], [0.4, 1], [1, 0.2]]",": the hook\nshoots out to full reach by 40% of the hit and pulls most of the way back.",[172,2339,2340,2341,2279,2344,881,2346,2348],{},"There are two chains. The game swings one on a sweep and both only on the slam;\n",[189,2342,2343],{},"hooks: 2",[189,2345,1949],{},[189,2347,2053],{}," hit swings both, the second on the mirrored\nside of the player and half a turn behind the first, which on a full circle puts\na head on each end of the spin. The second chain rolls its own critical hit and\ncarries the same damage, reach and curves as the first, and takes the direction\nthe player faces at the moment it leaves. Two chains are all there are, so a hit\nthat swings both cuts short whatever the previous hit still had in the air.",[172,2350,2351,2352,1287,2355,2358,2359,2362,2363,2365,2366,2368,2369,2371,2372,2374,2375,2377],{},"The chain held in the hand between attacks is part of the skeleton\n(",[189,2353,2354],{},"Weapons\u002FChain_Long",[189,2356,2357],{},"Weapons\u002FGrappleHook"," slots), so your skin can restyle\nit like any weapon. The picture at the end of the swinging chain is ",[1424,2360,2361],{},"not"," in\nthe skeleton: set ",[189,2364,962],{}," to a PNG in the spine folder to replace it, an axe\nhead for a flail for instance. Whatever its pixel size, it is scaled so its\nlarger side matches the chain's own hook; ",[189,2367,987],{}," makes it bigger or smaller\nthan that (",[189,2370,1141],{}," is half again as large). Without ",[189,2373,962],{}," the chain's usual\nhook is used. The heavy attack keeps the game's heavy hook. When there is no\n",[189,2376,487],{},", the hook picture is also the weapon's icon on the podium and the HUD.",[181,2379,2381],{"id":2380},"limits","Limits",[1418,2383,2384,2392,2395,2401],{},[1421,2385,2386,2387,1842,2389,2391],{},"The hit box is always a circle in front of the player, sized by ",[189,2388,687],{},[189,2390,700],{},". The artwork never collides, so a very long or oddly shaped\nweapon still hits in a circle.",[1421,2393,2394],{},"Heavy attacks, blocking (Shield) and the chain's hook are the base weapon's and\ncannot be changed.",[1421,2396,2397,2398,2400],{},"A weapon's id comes from its spine folder name and its ",[189,2399,319],{},". Renaming either\nmakes it a new weapon; the old one lingers in saves as an unknown id that is\nskipped by rolls and, if held, replaced by the sword.",[1421,2402,2403],{},"In multiplayer both players need the spine installed for the weapon to look\nright on both screens. Only the host's worn skin is shipped to the guest, so a\nweapon spine the other player lacks shows there as the base weapon.",[2405,2406,2407],"style",{},"html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":204,"searchDepth":225,"depth":225,"links":2409},[2410,2411,2412,2413,2416,2417,2418,2419,2425,2426],{"id":183,"depth":225,"text":184},{"id":760,"depth":225,"text":761},{"id":1074,"depth":225,"text":1075},{"id":1374,"depth":225,"text":1375,"children":2414},[2415],{"id":1466,"depth":253,"text":1467},{"id":1473,"depth":225,"text":1474},{"id":1732,"depth":225,"text":1733},{"id":1751,"depth":225,"text":1752},{"id":1765,"depth":225,"text":1766,"children":2420},[2421,2422,2423,2424],{"id":1775,"depth":253,"text":1776},{"id":1786,"depth":253,"text":1787},{"id":1801,"depth":253,"text":1802},{"id":1818,"depth":253,"text":1819},{"id":1848,"depth":225,"text":1849},{"id":2380,"depth":225,"text":2381},"Declare weapons in a player spine's config - combos, hit boxes, timings, damage, chain weapons, preloading and testing.","md",null,{},{"title":57,"icon":60},{"title":57,"description":2427},"o0Q_GFwvPAk6s4ZOOmbt7Nfh20IfGAbPKt0MaylMVUo",[2435,2437],{"title":52,"path":53,"stem":54,"description":2436,"icon":55,"children":-1},"Build an enemy on a vanilla enemy's AI, then change its health, scale, skin, boss bar and any number on its controller.",{"title":62,"path":63,"stem":64,"description":2438,"icon":65,"children":-1},"Give a custom NPC quests that appear in the game's own objectives panel - goals, dialogue, entry conditions, rewards and where progress is saved.",1789208920017]