Guest User

Untitled

a guest
Feb 1st, 2016
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 9.34 KB | None | 0 0
  1. -- Import the lib use.
  2. modimport("libs/use.lua")
  3.  
  4. -- Import the mod environment as our environment.
  5. env = use "libs/mod_env"
  6.  
  7.  
  8. use "data/widgets/controls"
  9. use "data/screens/chatinputscreen"
  10. use "data/screens/consolescreen"
  11.  
  12. PrefabFiles = {
  13.     "frisk",
  14.     "frisk_none",
  15.    
  16.     "friskbandaid",
  17.     "friskbandana",
  18.     "friskcowboyhat",
  19.     "frisknotebook",
  20.     "friskpan",
  21.     "friskribbon",
  22.     "frisktutu",
  23.     "friskbutterscotchpie",
  24.    
  25.     "chararealknife",
  26.     "charaworndagger",
  27. }
  28.  
  29. Assets = {
  30.     Asset( "IMAGE", "images/saveslot_portraits/frisk.tex" ),
  31.     Asset( "ATLAS", "images/saveslot_portraits/frisk.xml" ),
  32.  
  33.     Asset( "IMAGE", "images/selectscreen_portraits/frisk.tex" ),
  34.     Asset( "ATLAS", "images/selectscreen_portraits/frisk.xml" ),
  35.    
  36.     Asset( "IMAGE", "images/selectscreen_portraits/frisk_silho.tex" ),
  37.     Asset( "ATLAS", "images/selectscreen_portraits/frisk_silho.xml" ),
  38.  
  39.     Asset( "IMAGE", "bigportraits/frisk.tex" ),
  40.     Asset( "ATLAS", "bigportraits/frisk.xml" ),
  41.    
  42.     Asset( "IMAGE", "images/map_icons/frisk.tex" ),
  43.     Asset( "ATLAS", "images/map_icons/frisk.xml" ),
  44.    
  45.     Asset( "IMAGE", "images/avatars/avatar_frisk.tex" ),
  46.     Asset( "ATLAS", "images/avatars/avatar_frisk.xml" ),
  47.    
  48.     Asset( "IMAGE", "images/avatars/avatar_ghost_frisk.tex" ),
  49.     Asset( "ATLAS", "images/avatars/avatar_ghost_frisk.xml" ),
  50.    
  51.     Asset( "IMAGE", "images/avatars/self_inspect_frisk.tex" ),
  52.     Asset( "ATLAS", "images/avatars/self_inspect_frisk.xml" ),
  53.    
  54.     Asset( "IMAGE", "images/names_frisk.tex" ),
  55.     Asset( "ATLAS", "images/names_frisk.xml" ),
  56.    
  57.     Asset( "IMAGE", "bigportraits/frisk_none.tex" ),
  58.     Asset( "ATLAS", "bigportraits/frisk_none.xml" ),
  59.    
  60.     Asset("SOUNDPACKAGE", "sound/frisk.fev"),
  61.     Asset("SOUND", "sound/frisk.fsb"),
  62.    
  63.     Asset( "ATLAS", "images/hud/frisktab.xml" ),
  64.     Asset( "IMAGE", "images/hud/frisktab.tex" ),
  65.    
  66.     Asset( "ATLAS", "images/hud/charatab.xml" ),
  67.     Asset( "IMAGE", "images/hud/charatab.tex" ),
  68.  
  69. }
  70.  
  71. RemapSoundEvent( "dontstarve/characters/frisk/death_voice", "frisk/sound/death_voice" )
  72. RemapSoundEvent( "dontstarve/characters/frisk/hurt", "frisk/sound/hurt" )
  73. RemapSoundEvent( "dontstarve/characters/frisk/talk_LP", "frisk/sound/talk_LP" )
  74. RemapSoundEvent( "dontstarve/characters/frisk/ghost_LP", "frisk/sound/ghost_LP" )
  75. RemapSoundEvent( "dontstarve/characters/frisk/pose", "frisk/sound/pose" )
  76. RemapSoundEvent( "dontstarve/characters/frisk/emote", "frisk/sound/emote" )
  77. RemapSoundEvent( "dontstarve/characters/frisk/yawn", "frisk/sound/yawn" )
  78.  
  79. local require = GLOBAL.require
  80. local STRINGS = GLOBAL.STRINGS
  81. local resolvefilepath = GLOBAL.resolvefilepath
  82.  
  83. local Ingredient = GLOBAL.Ingredient
  84. local RECIPETABS = GLOBAL.RECIPETABS
  85. local Recipe = GLOBAL.Recipe
  86. local TECH = GLOBAL.TECH
  87.  
  88. --Transformation Section
  89. GLOBAL.TUNING.FRISK = {}
  90. GLOBAL.TUNING.FRISK.KEY = GetModConfigData("charakey") or 122
  91.  
  92. local function CharaFn(inst)
  93. if inst:HasTag("playerghost") then return end
  94. if inst.transform_delay then return end
  95.  
  96. inst.transform_task = inst:DoTaskInTime(inst._cooldown, inst.ResetDelay)
  97. inst.transform_delay = GLOBAL.GetTime() + inst._cooldown
  98.  
  99. if inst.transformed then
  100. inst.AnimState:SetBuild("frisk")
  101. inst.components.locomotor:SetExternalSpeedMultiplier(inst, "frisk_speed_mod", 1.35)
  102. inst.components.health.absorb = 0.1
  103. inst.components.combat.damagemultiplier = 0.75
  104. STRINGS.CHARACTERS.FRISK = require "speech_frisk"
  105. inst:AddTag("frisk")
  106. inst:AddTag("doublehealz")
  107. inst:RemoveTag("nohealz")
  108. inst:RemoveTag("chara")
  109. inst:RemoveTag("scarytoprey")
  110. inst:RemoveTag("monster")
  111.  
  112.  
  113.     local x, y, z = inst.Transform:GetWorldPosition()
  114.     local fx = SpawnPrefab("groundpoundring_fx")
  115.     fx.Transform:SetPosition(x, y, z)
  116.     SpawnPrefab("chester_transform_fx").Transform:SetPosition(inst:GetPosition():Get())
  117.  
  118. else
  119. inst.AnimState:SetBuild("chara")
  120. inst.components.locomotor:SetExternalSpeedMultiplier(inst, "frisk_speed_mod", 1.35)
  121. inst.components.health.absorb = 0.85
  122. inst.components.combat.damagemultiplier = 1.75
  123. STRINGS.CHARACTERS.FRISK = require "speech_chara"
  124. inst:RemoveTag("frisk")
  125. inst:RemoveTag("doublehealz")
  126. inst:AddTag("nohealz")
  127. inst:AddTag("chara")
  128. inst:AddTag("scarytoprey")
  129. inst:AddTag("monster")
  130.  
  131.     local x, y, z = inst.Transform:GetWorldPosition()
  132.     local fx = SpawnPrefab("firering_fx")
  133.     fx.Transform:SetPosition(x, y, z)
  134.     SpawnPrefab("statue_transition_2").Transform:SetPosition(inst:GetPosition():Get())
  135.  
  136. end
  137.  
  138. inst.transformed = not inst.transformed
  139.  
  140. -- inst.components.health:SetCurrentHealth(1)
  141. -- inst.components.health:DoDelta(0)
  142. return true
  143.  
  144. end
  145.  
  146. AddModRPCHandler("frisk", "CHARA", CharaFn)
  147.  
  148. local function combat(self)
  149.     function self:SuggestTarget(target)
  150.         if self.target == nil and target ~= nil then
  151.             if target:HasTag("frisk") then
  152.                 local equipped = false
  153.                 for k, v in pairs(target.components.inventory.equipslots) do
  154.                     equipped = true
  155.                 end
  156.                
  157.                 if equipped then
  158.                     self:SetTarget(target)
  159.                     return true
  160.                 end
  161.             else
  162.                 self:SetTarget(target)
  163.                 return true
  164.             end
  165.         end
  166.     end
  167. end
  168.  
  169. AddComponentPostInit("combat", combat)
  170.  
  171. AddComponentPostInit("talker", function(self)
  172.     local old_Say = self.Say
  173.     function self:Say(script, ...)
  174.         if self.inst:HasTag("chara") then
  175.             if script and type(script) == "string" then
  176.                 script = script:match("^%$%$(.*)$") or "..."
  177.             end
  178.         end
  179.         return old_Say(self, script, ...)
  180.     end
  181. end)
  182.  
  183. --Frisk's Tab
  184.  
  185. local frisktab = AddRecipeTab( "Frisk's Tab", 997, "images/hud/frisktab.xml", "frisktab.tex", "frisk_builder")
  186.  
  187. --Chara's Tab
  188.  
  189. local charatab = AddRecipeTab( "Chara's Tab", 996, "images/hud/charatab.xml", "charatab.tex", "chara_builder")
  190.  
  191. --Frisk's Recipes
  192.  
  193. AddRecipe("friskbandaid",
  194. {GLOBAL.Ingredient("cutgrass", 3), GLOBAL.Ingredient("spidergland", 1)},
  195. frisktab, TECH.NONE, nil, nil, nil, nil, "frisk_builder",
  196. "images/inventoryimages/friskbandaid.xml", "friskbandaid.tex" )
  197.  
  198. AddRecipe("friskbandana",
  199. {GLOBAL.Ingredient("silk", 4), GLOBAL.Ingredient("beefalowool", 2), GLOBAL.Ingredient("footballhat", 1), GLOBAL.Ingredient("cutstone", 4)},
  200. frisktab, TECH.NONE, nil, nil, nil, nil, "frisk_builder",
  201. "images/inventoryimages/friskbandana.xml", "friskbandana.tex" )
  202.  
  203. AddRecipe("friskcowboyhat",
  204. {GLOBAL.Ingredient("cutgrass", 12), GLOBAL.Ingredient("strawhat", 1), GLOBAL.Ingredient("silk", 4)},
  205. frisktab, TECH.NONE, nil, nil, nil, nil, "frisk_builder",
  206. "images/inventoryimages/friskcowboyhat.xml", "friskcowboyhat.tex" )
  207.  
  208. AddRecipe("frisknotebook",
  209. {GLOBAL.Ingredient("papyrus", 3), GLOBAL.Ingredient("nightmarefuel", 2), GLOBAL.Ingredient("purplegem", 1)},
  210. frisktab, TECH.NONE, nil, nil, nil, nil, "frisk_builder",
  211. "images/inventoryimages/frisknotebook.xml", "frisknotebook.tex" )
  212.  
  213. AddRecipe("friskpan",
  214. {GLOBAL.Ingredient("cutstone", 3), GLOBAL.Ingredient("flint", 5), GLOBAL.Ingredient("nitre", 4)},
  215. frisktab, TECH.NONE, nil, nil, nil, nil, "frisk_builder",
  216. "images/inventoryimages/friskpan.xml", "friskpan.tex" )
  217.  
  218. AddRecipe("friskribbon",
  219. {GLOBAL.Ingredient("silk", 2), GLOBAL.Ingredient("flowerhat", 2), GLOBAL.Ingredient("berries", 5)},
  220. frisktab, TECH.NONE, nil, nil, nil, nil, "frisk_builder",
  221. "images/inventoryimages/friskribbon.xml", "friskribbon.tex" )
  222.  
  223. AddRecipe("frisktutu",
  224. {GLOBAL.Ingredient("silk", 6), GLOBAL.Ingredient("beefalowool", 4), GLOBAL.Ingredient("manrabbit_tail", 2)},
  225. frisktab, TECH.NONE, nil, nil, nil, nil, "frisk_builder",
  226. "images/inventoryimages/frisktutu.xml", "frisktutu.tex" )
  227.  
  228. AddRecipe("friskbutterscotchpie",
  229. {GLOBAL.Ingredient("bird_egg", 2), GLOBAL.Ingredient("honey", 1), GLOBAL.Ingredient("butterflymuffin", 1)},
  230. frisktab, TECH.NONE, nil, nil, nil, nil, "frisk_builder",
  231. "images/inventoryimages/friskbutterscotchpie.xml", "friskbutterscotchpie.tex" )
  232.  
  233. --Charas Recipe
  234.  
  235. AddRecipe("chararealknife",
  236. {GLOBAL.Ingredient("cutstone", 3), GLOBAL.Ingredient("flint", 10), GLOBAL.Ingredient("purplegem", 3), GLOBAL.Ingredient("nightmarefuel", 1)},
  237. charatab, TECH.NONE, nil, nil, nil, nil, "chara_builder",
  238. "images/inventoryimages/chararealknife.xml", "chararealknife.tex" )
  239.  
  240. -- Custom Recipe Desc
  241. STRINGS.RECIPE_DESC.FRISKBANDAID = "DETERMINATION."
  242. STRINGS.RECIPE_DESC.FRISKBANDANA = "BRAVERY."
  243. STRINGS.RECIPE_DESC.FRISKCOWBOYHAT = "JUSTICE."
  244. STRINGS.RECIPE_DESC.FRISKNOTEBOOK = "PERSEVERANCE."
  245. STRINGS.RECIPE_DESC.FRISKPAN = "KINDNESS."
  246. STRINGS.RECIPE_DESC.FRISKRIBBON = "PATIENCE."
  247. STRINGS.RECIPE_DESC.FRISKTUTU = "INTEGRITY."
  248. STRINGS.RECIPE_DESC.FRISKBUTTERSCOTCHPIE = "One piece."
  249.  
  250. STRINGS.RECIPE_DESC.CHARAREALKNIFE = "Here we are!"
  251. STRINGS.RECIPE_DESC.CHARAWORNDAGGER = "Perfect for cutting plants."
  252.  
  253. -- The character select screen lines
  254. STRINGS.CHARACTER_TITLES.frisk = "The Seventh Human"
  255. STRINGS.CHARACTER_NAMES.frisk = "Frisk"
  256. STRINGS.CHARACTER_DESCRIPTIONS.frisk = "*Determination\n*Determination\n*Determination"
  257. STRINGS.CHARACTER_QUOTES.frisk = "\"You're filled with Determination!\""
  258.  
  259. -- Custom speech strings
  260. STRINGS.CHARACTERS.FRISK = require "speech_frisk"
  261.  
  262. -- The character's name as appears in-game
  263. STRINGS.NAMES.FRISK = "Frisk"
  264.  
  265. AddMinimapAtlas("images/map_icons/frisk.xml")
  266.  
  267. -- Add mod character to mod character list. Also specify a gender. Possible genders are MALE, FEMALE, ROBOT, NEUTRAL, and PLURAL.
  268. AddModCharacter("frisk", "PLURAL")
Add Comment
Please, Sign In to add comment