Hm... will you get the recipe if you get the weapon itself? It won't be very fun finding the weapon but not getting the recipe.
Todays diffs, part six of six! YAAAAY Code: npcs\outpost\outposthumanexcon.npctype 58,64c58,98 < "statusParameters" : { < "baseMaxHealth" : 40, < "baseMaxEnergy" : 40, < "bodyMaterialKind" : "organic", < "damageConfig" : "/damage/damageresponse/npcs.config", < "invulnerabilityTime" : 0, < "energyReplenishmentRate" : 100.0 --- > "statControllerSettings" : { > "statusProperties" : { > "targetMaterialKind" : "organic" > }, > > "persistentEffectCategories" : [ > "innate", > "armor", > "tools", > "lounging" > ], > > "primaryScriptSources" : [ > "/stats/npc_primary.lua" > ], > "primaryScriptDelta" : 0, > > "stats" : { > "maxHealth" : { > "baseValue" : 40.0 > }, > "maxEnergy" : { > "baseValue" : 40.0 > }, > "powerMultiplier" : { > "baseValue" : 1.0 > }, > "protection" : { > "baseValue" : 0.0 > }, > "healthRegen" : { > "baseValue" : 0.0 > }, > "energyRegen" : { > "baseValue" : 100.0 > }, > "shieldSuppressed" : { > "baseValue" : 0.0 > }, > "invulnerable" : { > "baseValue" : 0.0 66c100,115 < } \ No newline at end of file --- > }, > > "resources" : { > "health" : { > "maxStat" : "maxHealth", > "deltaStat" : "healthRegen", > "defaultPercentage" : 100 > }, > "energy" : { > "maxStat" : "maxEnergy", > "deltaStat" : "energyRegen", > "defaultPercentage" : 100 > } > } > } > } npcs\outpost\outposthumanscientist.npctype 58,64c58,98 < "statusParameters" : { < "baseMaxHealth" : 40, < "baseMaxEnergy" : 40, < "bodyMaterialKind" : "organic", < "damageConfig" : "/damage/damageresponse/npcs.config", < "invulnerabilityTime" : 0, < "energyReplenishmentRate" : 100.0 --- > "statControllerSettings" : { > "statusProperties" : { > "targetMaterialKind" : "organic" > }, > > "persistentEffectCategories" : [ > "innate", > "armor", > "tools", > "lounging" > ], > > "primaryScriptSources" : [ > "/stats/npc_primary.lua" > ], > "primaryScriptDelta" : 0, > > "stats" : { > "maxHealth" : { > "baseValue" : 40.0 > }, > "maxEnergy" : { > "baseValue" : 40.0 > }, > "powerMultiplier" : { > "baseValue" : 1.0 > }, > "protection" : { > "baseValue" : 0.0 > }, > "healthRegen" : { > "baseValue" : 0.0 > }, > "energyRegen" : { > "baseValue" : 100.0 > }, > "shieldSuppressed" : { > "baseValue" : 0.0 > }, > "invulnerable" : { > "baseValue" : 0.0 66c100,115 < } \ No newline at end of file --- > }, > > "resources" : { > "health" : { > "maxStat" : "maxHealth", > "deltaStat" : "healthRegen", > "defaultPercentage" : 100 > }, > "energy" : { > "maxStat" : "maxEnergy", > "deltaStat" : "energyRegen", > "defaultPercentage" : 100 > } > } > } > } npcs\outpost\outposthumansurvivor.npctype 59,65c59,99 < "statusParameters" : { < "baseMaxHealth" : 40, < "baseMaxEnergy" : 40, < "bodyMaterialKind" : "organic", < "damageConfig" : "/damage/damageresponse/npcs.config", < "invulnerabilityTime" : 0, < "energyReplenishmentRate" : 100.0 --- > "statControllerSettings" : { > "statusProperties" : { > "targetMaterialKind" : "organic" > }, > > "persistentEffectCategories" : [ > "innate", > "armor", > "tools", > "lounging" > ], > > "primaryScriptSources" : [ > "/stats/npc_primary.lua" > ], > "primaryScriptDelta" : 0, > > "stats" : { > "maxHealth" : { > "baseValue" : 40.0 > }, > "maxEnergy" : { > "baseValue" : 40.0 > }, > "powerMultiplier" : { > "baseValue" : 1.0 > }, > "protection" : { > "baseValue" : 0.0 > }, > "healthRegen" : { > "baseValue" : 0.0 > }, > "energyRegen" : { > "baseValue" : 100.0 > }, > "shieldSuppressed" : { > "baseValue" : 0.0 > }, > "invulnerable" : { > "baseValue" : 0.0 67c101,116 < } \ No newline at end of file --- > }, > > "resources" : { > "health" : { > "maxStat" : "maxHealth", > "deltaStat" : "healthRegen", > "defaultPercentage" : 100 > }, > "energy" : { > "maxStat" : "maxEnergy", > "deltaStat" : "energyRegen", > "defaultPercentage" : 100 > } > } > } > } npcs\outpost\outposthylotlfloranhater.npctype 58,64c58,98 < "statusParameters" : { < "baseMaxHealth" : 40, < "baseMaxEnergy" : 40, < "bodyMaterialKind" : "organic", < "damageConfig" : "/damage/damageresponse/npcs.config", < "invulnerabilityTime" : 0, < "energyReplenishmentRate" : 100.0 --- > "statControllerSettings" : { > "statusProperties" : { > "targetMaterialKind" : "organic" > }, > > "persistentEffectCategories" : [ > "innate", > "armor", > "tools", > "lounging" > ], > > "primaryScriptSources" : [ > "/stats/npc_primary.lua" > ], > "primaryScriptDelta" : 0, > > "stats" : { > "maxHealth" : { > "baseValue" : 40.0 > }, > "maxEnergy" : { > "baseValue" : 40.0 > }, > "powerMultiplier" : { > "baseValue" : 1.0 > }, > "protection" : { > "baseValue" : 0.0 > }, > "healthRegen" : { > "baseValue" : 0.0 > }, > "energyRegen" : { > "baseValue" : 100.0 > }, > "shieldSuppressed" : { > "baseValue" : 0.0 > }, > "invulnerable" : { > "baseValue" : 0.0 66c100,115 < } \ No newline at end of file --- > }, > > "resources" : { > "health" : { > "maxStat" : "maxHealth", > "deltaStat" : "healthRegen", > "defaultPercentage" : 100 > }, > "energy" : { > "maxStat" : "maxEnergy", > "deltaStat" : "energyRegen", > "defaultPercentage" : 100 > } > } > } > } npcs\outpost\outposthylotlperformer.npctype 58,64c58,98 < "statusParameters" : { < "baseMaxHealth" : 40, < "baseMaxEnergy" : 40, < "bodyMaterialKind" : "organic", < "damageConfig" : "/damage/damageresponse/npcs.config", < "invulnerabilityTime" : 0, < "energyReplenishmentRate" : 100.0 --- > "statControllerSettings" : { > "statusProperties" : { > "targetMaterialKind" : "organic" > }, > > "persistentEffectCategories" : [ > "innate", > "armor", > "tools", > "lounging" > ], > > "primaryScriptSources" : [ > "/stats/npc_primary.lua" > ], > "primaryScriptDelta" : 0, > > "stats" : { > "maxHealth" : { > "baseValue" : 40.0 > }, > "maxEnergy" : { > "baseValue" : 40.0 > }, > "powerMultiplier" : { > "baseValue" : 1.0 > }, > "protection" : { > "baseValue" : 0.0 > }, > "healthRegen" : { > "baseValue" : 0.0 > }, > "energyRegen" : { > "baseValue" : 100.0 > }, > "shieldSuppressed" : { > "baseValue" : 0.0 > }, > "invulnerable" : { > "baseValue" : 0.0 66c100,115 < } \ No newline at end of file --- > }, > > "resources" : { > "health" : { > "maxStat" : "maxHealth", > "deltaStat" : "healthRegen", > "defaultPercentage" : 100 > }, > "energy" : { > "maxStat" : "maxEnergy", > "deltaStat" : "energyRegen", > "defaultPercentage" : 100 > } > } > } > } npcs\outpost\outposthylotlwarrior.npctype 60,66c60,100 < "statusParameters" : { < "baseMaxHealth" : 40, < "baseMaxEnergy" : 40, < "bodyMaterialKind" : "organic", < "damageConfig" : "/damage/damageresponse/npcs.config", < "invulnerabilityTime" : 0, < "energyReplenishmentRate" : 100.0 --- > "statControllerSettings" : { > "statusProperties" : { > "targetMaterialKind" : "organic" > }, > > "persistentEffectCategories" : [ > "innate", > "armor", > "tools", > "lounging" > ], > > "primaryScriptSources" : [ > "/stats/npc_primary.lua" > ], > "primaryScriptDelta" : 0, > > "stats" : { > "maxHealth" : { > "baseValue" : 40.0 > }, > "maxEnergy" : { > "baseValue" : 40.0 > }, > "powerMultiplier" : { > "baseValue" : 1.0 > }, > "protection" : { > "baseValue" : 0.0 > }, > "healthRegen" : { > "baseValue" : 0.0 > }, > "energyRegen" : { > "baseValue" : 100.0 > }, > "shieldSuppressed" : { > "baseValue" : 0.0 > }, > "invulnerable" : { > "baseValue" : 0.0 68c102,117 < } \ No newline at end of file --- > }, > > "resources" : { > "health" : { > "maxStat" : "maxHealth", > "deltaStat" : "healthRegen", > "defaultPercentage" : 100 > }, > "energy" : { > "maxStat" : "maxEnergy", > "deltaStat" : "energyRegen", > "defaultPercentage" : 100 > } > } > } > } objects\apex\apexbed\apexbed.object 23,24c23 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\apex\apexoven\apexoven.object 20,25c20 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 5, < "range" : 4 < } ], --- > "statusEffects" : [ ], objects\apex\apextorturebed\apextorturebed.object 22,23c22 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.05 } --- > "regeneration1" objects\apex\classicbed\classicbed.object 24,25c24 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\apex\classiccandlestick\classiccandlestick.object 28,33c28 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 4, < "range" : 2 < } ], --- > "statusEffects" : [ ], objects\apex\respawnpod\behavior.lua 15c15 < function main() --- > function update(dt) 20c20 < self.state.update(entity.dt()) --- > self.state.update(dt) 60c60 < end \ No newline at end of file --- > end objects\apex\securitycamera\securitycamera.lua 1,5c1,6 < function init(args) < self.state = stateMachine.create({ < "alertState", < "scanState" < }) --- > function init(virtual) > if not virtual then > self.state = stateMachine.create({ > "alertState", > "scanState" > }) 7,9c8,11 < entity.setAnimationState("movement", "idle") < entity.setInteractive(false) < entity.setAllOutboundNodes(false) --- > entity.setAnimationState("movement", "idle") > entity.setInteractive(false) > entity.setAllOutboundNodes(false) > end 12,13c14,15 < function main(args) < self.state.update(entity.dt()) --- > function update(dt) > self.state.update(dt) objects\apex\turret\turret.lua 1,5c1,6 < function init(args) < self.state = stateMachine.create({ < "attackState", < "scanState" < }) --- > function init(virtual) > if not virtual then > self.state = stateMachine.create({ > "attackState", > "scanState" > }) 7,9c8,11 < entity.setAnimationState("movement", "idle") < entity.setInteractive(false) < entity.setAllOutboundNodes(false) --- > entity.setAnimationState("movement", "idle") > entity.setInteractive(false) > entity.setAllOutboundNodes(false) > end 13,14c15,16 < function main(args) < self.state.update(entity.dt()) --- > function update(dt) > self.state.update(dt) objects\avian\birdbed\birdbed.object 23,24c23 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\avian\birdgroundlantern\birdgroundlantern.object 27,32c27 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 15, < "range" : 4 < } ], --- > "statusEffects" : [ ], objects\avian\crystaltorch\crystaltorch.object 18,23c18 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 15, < "range" : 4 < } ], --- > "statusEffects" : [ ], objects\avian\propeller\propeller.object 30,38c30 < "soundEffect" : "/sfx/objects/propeller.wav", < < "statusEffects" : [ < { < "kind" : "slash", < "amount" : 20, < "range" : 0 < } < ] --- > "soundEffect" : "/sfx/objects/propeller.wav" 39a32 > //TODO: touch damage objects\avian\sacrificialaltar\sacrificialaltar.object 23,24c23 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.05 } --- > "regeneration1" objects\avian\sawblade\sawblade.object 86c86 < //mollys first object --- > //mollys first object (note: it was actually oven1, this is molly's first copy paste derp) 88c88 < "soundEffect" : "/sfx/objects/sawblade.wav", --- > "soundEffect" : "/sfx/objects/sawblade.wav" 90,96c90 < "statusEffects" : [ < { < "kind" : "directdamage", < "amount" : 13.3, < "range" : 0 < } < ] --- > //TODO: touch damage objects\avian\tribalbed2\tribalbed2.object 25,26c25 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\avian\triballamp\triballamp.object 17,22c17 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 15, < "range" : 2 < } ], --- > "statusEffects" : [ ], objects\crafting\alloyfurnace\alloyfurnace.object 63,69c63 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 70, < "range" : 8 < } < ], --- > "statusEffects" : [ ], objects\crafting\refinery\refinery.object 79,85c79 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 70, < "range" : 8 < } < ], --- > "statusEffects" : [ ], objects\crafting\scififurnace\scififurnace.object 63,69c63 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 70, < "range" : 8 < } < ], --- > "statusEffects" : [ ], objects\crafting\stonefurnace\stonefurnace.object 25,31c25 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 70, < "range" : 8 < } < ], --- > "statusEffects" : [ ], objects\floran\floranbed\floranbed.object 25,26c25 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\floran\floranchandelier\floranchandelier.object 27,32c27 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 24, < "range" : 4 < } ], --- > "statusEffects" : [ ], objects\floran\floranstove\floranstove.object 78,84c78 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 70, < "range" : 8 < } < ], --- > "statusEffects" : [ ], objects\floran\huntinggroundtorch\huntinggroundtorch.object 28,34c28 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 70, < "range" : 8 < } < ], --- > "statusEffects" : [ ], objects\floran\huntingpunjisticks1\huntingpunjisticks1.object 10d9 < 18,19d16 < < 39d35 < 53,62d48 < < } < ], < < "statusEffects" : [ < { < "kind" : "directDamage", < "damageKind" : "spear", < "amount" : 7, < "range" : 0 64a51,52 > > //TODO: touch damage objects\floran\huntingpunjisticks2\huntingpunjisticks2.object 10d9 < 18,19d16 < < 39d35 < 53,62d48 < < } < ], < < "statusEffects" : [ < { < "kind" : "directDamage", < "damageKind" : "spear", < "amount" : 7, < "range" : 0 65,66d50 < } < 67a52,53 > //TODO: touch damage > } \ No newline at end of file objects\floran\plantbed1\plantbed1.object 24,25c24 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\floran\plantbed2\plantbed2.object 25,26c25 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\floran\plantbed3\plantbed3.object 24,25c24 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\floran\plantbed4\plantbed4.object 25,26c25 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\floran\planttorch\planttorch.object 20,25c20 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 8, < "range" : 4 < } ], --- > "statusEffects" : [ ], objects\floran\plantvolcano1\plantvolcano1.object 17,22c17 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 8, < "range" : 4 < } ], --- > "statusEffects" : [ ], objects\floran\plantvolcano2\plantvolcano2.object 17,22c17 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 8, < "range" : 4 < } ], --- > "statusEffects" : [ ], objects\floran\plantvolcano3\plantvolcano3.object 17,22c17 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 8, < "range" : 4 < } ], --- > "statusEffects" : [ ], objects\floran\plantvolcano4\plantvolcano4.object 17,22c17 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 8, < "range" : 4 < } ], --- > "statusEffects" : [ ], objects\floran\plantvolcano5\plantvolcano5.object 17,22c17 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 8, < "range" : 4 < } ], --- > "statusEffects" : [ ], objects\gate\ancientconsole\ancientconsole.lua 12c12 < function main() --- > function update(dt) 27c27 < end \ No newline at end of file --- > end objects\gate\ancientpillar\ancientpillar.object 19,24c19 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 10, < "range" : 2 < } ], --- > "statusEffects" : [ ], objects\generic\altar1\altar1.object 23,24c23 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.05 } --- > "regeneration1" objects\generic\burningcoals\burningcoals.object 51,53c51 < "kind" : "Warmth", < "amount" : 70, < "range" : 4 --- > "effect" : "burning" objects\generic\campfire\campfire.object 36c36 < "position" : [0.5, 0.3], --- > "position" : [0.5, 0.3], 50c50 < "position" : [0.4, 0] --- > "position" : [0.4, 0] 83,89c83 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 70, < "range" : 8 < } < ], --- > "statusEffects" : [ ], objects\generic\carbed\carbed.object 18,19c18 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\generic\ironbed\ironbed.object 25,26c25 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\generic\ironlight\ironlight.object 20,25c20 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 10, < "range" : 2 < } ], --- > "statusEffects" : [ ], objects\generic\kennel\kennel.object 24,25c24 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\generic\nanostove\nanostove.object 59,65c59 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 140, < "range" : 20 < } < ], --- > "statusEffects" : [ ], objects\generic\oillantern1\oillantern1.object 19,24c19 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 6, < "range" : 4 < } ], --- > "statusEffects" : [ ], objects\generic\oillanterntall\oillanterntall.object 17,22c17 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 6, < "range" : 4 < } ], --- > "statusEffects" : [ ], objects\generic\rusticoven\rusticoven.object 20,25c20 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 10, < "range" : 4 < } ], --- > "statusEffects" : [ ], objects\generic\sleepingbag\sleepingbag.object 25,26c25 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\generic\tent1\tent1.object 25,26c25 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\generic\tent2\tent2.object 25,26c25 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\generic\torch\torch.object 21,28d20 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 8, < "range" : 4 < } < ], < objects\generic\woodenbed\woodenbed.object 41,42c41 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.03 } --- > "regeneration1" objects\generic\woodenbed2\woodenbed2.object 25,26c25 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\generic\woodentalllantern\woodentalllantern.object 19,24c19 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 8, < "range" : 4 < } ], --- > "statusEffects" : [ ], objects\generic\wreckbed\wreckbed.object 24,25c24 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\glitch\guillotine\guillotine.object 25,26c25 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\glitch\haypile\haypile.object 25,26c25 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\glitch\medievalbed\medievalbed.object 25,26c25 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\glitch\medievalcandle\medievalcandle.object 20,25c20 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 4, < "range" : 2 < } ], --- > "statusEffects" : [ ], objects\glitch\medievalcellbed\medievalcellbed.object 24,25c24 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\glitch\medievalchandelier\medievalchandelier.object 20,25c20 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 10, < "range" : 2 < } ], --- > "statusEffects" : [ ], objects\glitch\medievalfireplace\medievalfireplace.object 21,26c21 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 70, < "range" : 8 < } ], --- > "statusEffects" : [ ], objects\glitch\medievalfurnace\medievalfurnace.object 25,30c25 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 50, < "range" : 8 < } ], --- > "statusEffects" : [ ], objects\glitch\medievallamp\medievallamp.object 18,23c18 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 6, < "range" : 4 < } ], --- > "statusEffects" : [ ], objects\glitch\medievallargecookingpot\medievallargecookingpot.object 68,74c68 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 70, < "range" : 8 < } < ], --- > "statusEffects" : [ ], objects\glitch\medievalspikes\medievalspikes.object 28d27 < 30,39c29 < ], < < "statusEffects" : [ < { < "kind" : "directDamage", < "damageKind" : "spear", < "amount" : 7, < "range" : 0 < } < ] --- > ] 40a31 > //TODO: touch damage objects\glitch\medievalstreetlamp\medievalstreetlamp.object 20,25c20 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 6, < "range" : 4 < } ], --- > "statusEffects" : [ ], objects\glitch\medievaltorch\medievaltorch.object 19,24c19 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 8, < "range" : 4 < } ], --- > "statusEffects" : [ ], objects\glitch\royalbed\royalbed.object 25,26c25 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\glitch\royalcandles\royalcandles.object 20,25c20 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 10, < "range" : 2 < } ], --- > "statusEffects" : [ ], objects\glitch\wheelbarrow\wheelbarrow.object 25,26c25 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\holiday\giftmonsterbox\giftmonsterbox.lua 5c5 < function main() --- > function update(dt) 10c10 < end \ No newline at end of file --- > end objects\holiday\heartforge\heartforge.object 23,28c23 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 50, < "range" : 8 < } ], --- > "statusEffects" : [ ], objects\holiday\menorah\menorah.object 21,26c21 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 10, < "range" : 2 < } ], --- > "statusEffects" : [ ], objects\human\barbedwire\barbedwire.object 28,39d27 < < } < ], < < "statusEffects" : [ < { < "kind" : "directdamage", < "amount" : 0.5, < "range" : 0 < }, < { < "kind" : "encumbered" 41a30,31 > > //TODO: touch damage objects\human\bunkerheater1\bunkerheater1.object 19,24c19 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 100, < "range" : 20 < } ], --- > "statusEffects" : [ ], objects\human\bunkerrobotfactory\behavior.lua 15c15 < function main() --- > function update(dt) 17c17 < self.state.update(entity.dt()) --- > self.state.update(dt) 90c90 < end \ No newline at end of file --- > end objects\human\oven1\oven1.object 20,25c20 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 5, < "range" : 2 < } ], --- > "statusEffects" : [ ], objects\human\prisonbarrelfire\prisonbarrelfire.object 18,23c18 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 70, < "range" : 5 < } ], --- > "statusEffects" : [ ], objects\human\prisonbed\prisonbed.object 17c17 < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" 39d38 < objects\human\prisonradiator\prisonradiator.object 17,22c17 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 80, < "range" : 15 < } ], --- > "statusEffects" : [ ], objects\human\prisontorturebed2\prisontorturebed2.object 24,25c24 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\hylotl\hylotlbed2\hylotlbed2.object 18,19c18 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\minibiome\bone\bonebed\bonebed.object 26,27c26 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\minibiome\crystal\crystalbed\crystalbed.object 25,26c25 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\minibiome\crystal\crystallamp\crystallamp.object 19,24c19 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 10, < "range" : 2 < } ], --- > "statusEffects" : [ ], objects\minibiome\eyepatch\eyebed\eyebed.object 26,27c26 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\minibiome\geometric\geometricbed\geometricbed.object 26,27c26 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\minibiome\giantflower\giantflowerbed\giantflowerbed.object 26,27c26 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\minibiome\giantflower\giantflowerlamp\giantflowerlamp.object 19,24c19 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 10, < "range" : 2 < } ], --- > "statusEffects" : [ ], objects\minibiome\giantflower\strangeflowerbasket\strangeflowerbasket.object 22c22 < "sitPosition" : [-6, 22], --- > "sitPosition" : [-6, 22], 28d27 < 34,38c33 < "sitFlipDirection" : false, < "sitStatusEffects" : [ < { "kind" : "Nude" } < ] < --- > "sitFlipDirection" : false objects\minibiome\ice\icebed\icebed.object 25,26c25 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\minibiome\mushroom\shroombed\shroombed.object 26,27c26 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\minibiome\mushroom\shroomlamp\shroomlamp.object 19,24c19 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 10, < "range" : 2 < } ], --- > "statusEffects" : [ ], objects\minibiome\oasis\reedbed1\reedbed1.object 24,25c24 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\minibiome\rainbow\rainbowbed\rainbowbed.object 26,27c26 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\minibiome\rust\rustbed\rustbed.object 26,27c26 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\minibiome\sandstone\sandstonebed\sandstonebed.object 26,27c26 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\minibiome\sandstone\sandstonetorch\sandstonetorch.object 21,26c21 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 8, < "range" : 4 < } ], --- > "statusEffects" : [ ], objects\minibiome\snow\snowman\snowman.frames 4c4 < "size" : [24, 32], --- > "size" : [24, 26], objects\minibiome\snow\snowman\snowman.object 7d6 < "objectItem" : "snowball", 14c13 < "avianDescription" : "A snowman. I'm jealous of his hat.", --- > "avianDescription" : "A snowman. He feels like he's missing something.", 20c19 < "inventoryIcon" : "capsulemedicon.png", --- > "inventoryIcon" : "snowmanicon.png", 24,28c23,27 < "imagePosition" : [0, 0], < "frames" : 1, < "animationCycle" : 0.5, < < "spaceScan" : 0.1, --- > "direction" : "left", > "flipImages" : true, > "imagePosition" : [-8, 0], > > "spaces" : [ [-1, 0], [0, 0], [1, 0], [-1, 1], [0, 1], [1, 1], [-1, 2], [0, 2], [1, 2], [-1, 3], [0, 3], [1, 3] ], 29a29,33 > }, > { > "image" : "snowman.png:<color>", > "direction" : "right", > "imagePosition" : [-8, 0], 30a35,36 > "spaces" : [ [-1, 0], [0, 0], [1, 0], [-1, 1], [0, 1], [1, 1], [-1, 2], [0, 2], [1, 2], [-1, 3], [0, 3], [1, 3] ], > "anchors" : [ "bottom" ] 35c41 < [ [ "snowball", 1, { } ], [ "snowball", 1, { } ], [ "carrot", 1, { } ], [ "fullwood1", 1, { } ], [ "fullwood1", 1, { } ], [ "fancyhead", 1, { } ] ] --- > [ [ "giganticsnowball", 1, { } ], [ "largesnowball", 1, { } ], [ "mediumsnowball", 1, { } ], [ "carrot", 1, { } ], [ "fullwood1", 1, { } ], [ "coalore", 2, { } ] ] 38c44 < [ [ "snowball", 1, { } ], [ "snowball", 1, { } ], [ "snowball", 1, { } ], [ "snowball", 1, { } ], [ "snowball", 1, { } ], [ "snowball", 1, { } ] ] --- > [ [ "giganticsnowball", 1, { } ], [ "largesnowball", 1, { } ], [ "mediumsnowball", 1, { } ], [ "carrot", 1, { } ], [ "fullwood1", 1, { } ], [ "coalore", 2, { } ] ] objects\minibiome\tar\tarbed\tarbed.object 26,27c26 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\minibiome\tar\tarlight\tarlight.object 21,26c21 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 10, < "range" : 2 < } ], --- > "statusEffects" : [ ], objects\minibiome\toxicplains\toxiclamp1\toxiclamp1.object 21,26c21 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 10, < "range" : 2 < } ], --- > "statusEffects" : [ ], objects\minibiome\toxicplains\toxiclamp2\toxiclamp2.object 21,26c21 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 10, < "range" : 2 < } ], --- > "statusEffects" : [ ], objects\mission\lunarbasebunk\lunarbasebunk.object 26,27c26 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\mission\lunarbaselantern\lunarbaselantern.object 18,23c18 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 10, < "range" : 2 < } ], --- > "statusEffects" : [ ], objects\mission\skulltorch\skulltorch.object 27,32c27 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 15, < "range" : 4 < } ], --- > "statusEffects" : [ ], 39,42c34,37 < < "direction" : "left", < "flipImages" : true, < --- > > "direction" : "left", > "flipImages" : true, > 45c40 < "animationPosition" : [-8, 0] --- > "animationPosition" : [-8, 0] 47c42 < { --- > { 50,51c45,46 < < "direction" : "right", --- > > "direction" : "right", 55c50 < "animationPosition" : [-8, 0] --- > "animationPosition" : [-8, 0] 73d67 < objects\outpost\bathroomstall\bathroomstall.object 21,23c21,23 < "flipImages" : true, < "sitPosition" : [-6, 22], < "direction" : "left", --- > "flipImages" : true, > "sitPosition" : [-6, 22], > "direction" : "left", 33c33 < { --- > { 35,36c35,36 < "sitPosition" : [2, 22], < "direction" : "right", --- > "sitPosition" : [2, 22], > "direction" : "right", 44d43 < 50,53c49 < "sitFlipDirection" : false, < "sitStatusEffects" : [ < { "kind" : "Nude" } < ] --- > "sitFlipDirection" : false objects\outpost\outpostbed\outpostbed.object 26,27c26 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\spawner\monsterspawner.lua 22c22 < function main() --- > function update(dt) 24c24 < if storage.cooldown > 0 then storage.cooldown = storage.cooldown - entity.dt() end --- > if storage.cooldown > 0 then storage.cooldown = storage.cooldown - dt end 58c58 < end \ No newline at end of file --- > end objects\spawner\spawners\spawner.lua 6c6 < function main() --- > function update(dt) objects\tiered\tier10bed\tier10bed.object 26,27c26 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration4" 42d40 < objects\tiered\tier10light\tier10light.object 19,24c19 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 10, < "range" : 2 < } ], --- > "statusEffects" : [ ], objects\tiered\tier1bed\tier1bed.object 26,27c26 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\tiered\tier1light\tier1light.object 21,26c21 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 10, < "range" : 2 < } ], --- > "statusEffects" : [ ], objects\tiered\tier2bed\tier2bed.object 26,27c26 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration1" objects\tiered\tier2light\tier2light.object 19,24c19 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 10, < "range" : 2 < } ], --- > "statusEffects" : [ ], objects\tiered\tier3bed\tier3bed.object 26,27c26 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration2" objects\tiered\tier3light\tier3light.object 19,24c19 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 10, < "range" : 2 < } ], --- > "statusEffects" : [ ], objects\tiered\tier4bed\tier4bed.object 26,27c26 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration2" objects\tiered\tier4light\tier4light.object 19,24c19 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 10, < "range" : 2 < } ], --- > "statusEffects" : [ ], objects\tiered\tier5bed\tier5bed.object 26,27c26 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration3" objects\tiered\tier5light\tier5light.object 19,24c19 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 10, < "range" : 2 < } ], --- > "statusEffects" : [ ], objects\tiered\tier6bed\tier6bed.object 26,27c26 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration4" objects\tiered\tier6light\tier6light.object 19,24c19 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 10, < "range" : 2 < } ], --- > "statusEffects" : [ ], objects\tiered\tier7bed\tier7bed.object 26,27c26 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration3" objects\tiered\tier7light\tier7light.object 19,24c19 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 10, < "range" : 2 < } ], --- > "statusEffects" : [ ], objects\tiered\tier8bed\tier8bed.object 26,27c26 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration4" objects\tiered\tier8light\tier8light.object 19,24c19 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 10, < "range" : 2 < } ], --- > "statusEffects" : [ ], objects\tiered\tier9bed\tier9bed.object 26,27c26 < { "kind" : "Nude" }, < { "kind" : "Health", "amount" : 0.06 } --- > "regeneration3" objects\tiered\tier9light\tier9light.object 19,24c19 < "statusEffects" : [ < { < "kind" : "Warmth", < "amount" : 10, < "range" : 2 < } ], --- > "statusEffects" : [ ], objects\wired\alarm\alarm.lua 10c10 < function main() --- > function update(dt) 21c21 < self.alarmSoundTimer = self.alarmSoundTimer - entity.dt() --- > self.alarmSoundTimer = self.alarmSoundTimer - dt 28c28 < end \ No newline at end of file --- > end objects\wired\door\door.lua 59c59 < return (entity.animationState("doorState") == "closeLeft" or entity.animationState("doorState") == "openLeft") and -entity.direction() or entity.direction() --- > return (entity.animationState("doorState") == "closeLeft" or entity.animationState("doorState") == "openLeft") and -entity.direction() or mcontroller.direction() objects\wired\drain\drain.lua 31c31 < function main() --- > function update(dt) 38c38 < end \ No newline at end of file --- > end objects\wired\landmine\landmine.lua 21c21 < function main() --- > function update(dt) 39c39 < end \ No newline at end of file --- > end objects\wired\lightsensor\lightsensor.lua 13c13 < function main() --- > function update(dt) 30c30 < end \ No newline at end of file --- > end objects\wired\liquidsensor\liquidsensor.lua 5c5 < function main() --- > function update(dt) 24c24 < end \ No newline at end of file --- > end objects\wired\logic\dlatch.lua 23c23 < function main() --- > function update(dt) objects\wired\logic\logic.lua 37c37 < function main() --- > function update(dt) objects\wired\logic\timer.lua 27c27 < function main() --- > function update(dt) objects\wired\momentaryswitch\momentaryswitch.lua 38c38 < function main() --- > function update(dt) objects\wired\proximitysensor\proximitysensor.lua 38c38 < function main() --- > function update(dt) 40c40 < self.triggerTimer = self.triggerTimer - entity.dt() --- > self.triggerTimer = self.triggerTimer - dt 54c54 < end \ No newline at end of file --- > end objects\wired\standingturret\standingturret.lua 47c47 < function main(args) --- > function update(dt) 49c49 < self.state.update(entity.dt()) --- > self.state.update(dt) 248c248 < local energy = storage.energy + self.energy.energyRegen * energyMultiplier * entity.dt() --- > local energy = storage.energy + self.energy.energyRegen * energyMultiplier * script.updateDt() 383c383 < stateData.timer = stateData.timer + entity.dt() --- > stateData.timer = stateData.timer + script.updateDt() 399c399 < stateData.targetCooldown = stateData.targetCooldown - entity.dt() --- > stateData.targetCooldown = stateData.targetCooldown - script.updateDt() 489c489 < stateData.letGoTimer = stateData.letGoTimer + entity.dt() --- > stateData.letGoTimer = stateData.letGoTimer + script.updateDt() 506c506 < return vec2.div(deltaPos, entity.dt()) --- > return vec2.div(deltaPos, script.updateDt()) objects\wired\switch\switchwithinput.lua 35c35 < function main(args) --- > function update(dt) 42c42 < end \ No newline at end of file --- > end particles\burningdust.particle 8c8 < "finalVelocity" : [0, 4], --- > "finalVelocity" : [0, 3], 14c14 < "layer" : "back", --- > "layer" : "middle", 17c17 < "initialVelocity" : [3.0, 3.0] --- > "initialVelocity" : [2.0, 2.0] particles\frozenburningdust.particle 8c8 < "finalVelocity" : [0, 4], --- > "finalVelocity" : [0, 3], 14c14 < "layer" : "back", --- > "layer" : "middle", 17c17 < "initialVelocity" : [3.0, 3.0] --- > "initialVelocity" : [2.0, 2.0] projectiles\burningstatusprojectile\burningstatusprojectile.projectile 24,30c24 < { < "kind" : "glow", < "amount" : 100.0, < "color" : "orange", < "duration" : 5.0 < }, < { "kind" : "testburning" } --- > "burning" projectiles\explosions\robotwake\robotwake.projectile 132c132 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\explosions\snowballexplosion\snowballexplosion.config 5c5,7 < "action" : "spark" --- > "action" : "projectile", > "inheritDamageFactor" : 0, > "type" : "snowballexplosion" projectiles\explosions\swordshot\swordshot.projectile 2a3 > "physics" : "bullet", 11c12 < "piercing" : true, --- > "piercing" : false, projectiles\fire\firefinish\firefinish.projectile 22,28c22 < { < "kind" : "glow", < "amount" : 100.0, < "color" : "orange", < "duration" : 5.0 < }, < { "kind" : "testburning" } --- > "burning" projectiles\fire\firepart1\firepart1.projectile 36,42c36 < { < "kind" : "glow", < "amount" : 100.0, < "color" : "orange", < "duration" : 5.0 < }, < { "kind" : "testburning" } --- > "burning" projectiles\fire\firepart2\firepart2.projectile 36,42c36 < { < "kind" : "glow", < "amount" : 100.0, < "color" : "orange", < "duration" : 5.0 < }, < { "kind" : "testburning" } --- > "burning" projectiles\fire\firepart3\firepart3.projectile 36,42c36 < { < "kind" : "glow", < "amount" : 100.0, < "color" : "orange", < "duration" : 5.0 < }, < { "kind" : "testburning" } --- > "burning" projectiles\fire\firepart4\firepart4.projectile 36,42c36 < { < "kind" : "glow", < "amount" : 100.0, < "color" : "orange", < "duration" : 5.0 < }, < { "kind" : "testburning" } --- > "burning" projectiles\fire\firepart5\firepart5.projectile 36,42c36 < { < "kind" : "glow", < "amount" : 100.0, < "color" : "orange", < "duration" : 5.0 < }, < { "kind" : "testburning" } --- > "burning" projectiles\guns\bullets\delayed\delayed.projectile 18c18 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\bullets\explosivebullet\explosivebullet.projectile 15c15 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\bullets\splitbullet\splitbullet.projectile 24c24 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\bullets\stickybullet\stickybullet.projectile 18c18 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\bullets\stingergunsting\stingergunsting.projectile 17c17 < { "kind" : "testpoison" } --- > "weakpoison" projectiles\guns\bullets\trishot\trishot.projectile 30c30 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\grenades\acidgrenade\acidgrenade.projectile 57c57 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\grenades\acidgrenadecluster\acidgrenadecluster.projectile 25c25 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\grenades\bomb\bomb.projectile 19c19 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\grenades\bouncycluster\bouncycluster.projectile 17c17 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\grenades\bouncyclustergrenade\bouncyclustergrenade.projectile 53c53 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\grenades\cluster\cluster.projectile 17c17 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\grenades\clustergrenade\clustergrenade.projectile 53c53 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\grenades\gravitybomb\gravitybomb.projectile 20c20 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\grenades\grenade\grenade.projectile 17c17 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\grenades\impactgrenade\impactgrenade.projectile 17c17 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\grenades\marioball\marioball.projectile 18c18 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\grenades\mouse\mouse.projectile 21c21 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\grenades\nailbomb\nailbomb.projectile 65c65 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\grenades\pig\pig.projectile 21c21 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\grenades\pill\pill.projectile 57c57 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\grenades\shockbomb\shockbomb.projectile 23c23 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\grenades\spikeball\spikeball.projectile 18c18 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\grenades\splitter\splitter.projectile 40c40 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\orbitaltest\orbitaldown\orbitaldown.projectile 18c18 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\orbitaltest\orbitallaunch\orbitallaunch.projectile 23c23 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\orbitaltest\orbitalup\orbitalup.projectile 23c23 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\plasmabullets\plasmabouncer\plasmabouncer.projectile 20c20 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\plasmabullets\stickyplasma\stickyplasma.projectile 25c25 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\unsorted\chargedbustershot\chargedbustershot.projectile 20c20 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\unsorted\chargedflamearrow\chargedflamearrow.projectile 15,21c15 < { < "kind" : "glow", < "amount" : 100.0, < "color" : "orange", < "duration" : 5.0 < }, < { "kind" : "testburning" } --- > "burning" projectiles\guns\unsorted\chargedfrozenflamearrow\chargedfrozenflamearrow.projectile 15,24c15 < { < "kind" : "glow", < "amount" : 100.0, < "color" : "white", < "duration" : 5.0 < }, < { "kind" : "frozenburning" }, < { < "kind" : "frozenslow" < } --- > "frozenburning" projectiles\guns\unsorted\chargedicearrow\chargedicearrow.projectile 15,17c15 < { < "kind" : "slow" < } --- > "frostslow" projectiles\guns\unsorted\flamebolt\flamebolt.projectile 15,21c15 < { < "kind" : "glow", < "amount" : 100.0, < "color" : "orange", < "duration" : 5.0 < }, < { "kind" : "testburning" } --- > "burning" projectiles\guns\unsorted\flamethrower\flamethrower.projectile 17,23c17 < { < "kind" : "glow", < "amount" : 100.0, < "color" : "orange", < "duration" : 5.0 < }, < { "kind" : "testburning" } --- > "burning" projectiles\guns\unsorted\icebolt\icebolt.projectile 15,18c15 < { < "kind" : "slow", < "duration" : 3 < } --- > "frostslow" projectiles\guns\unsorted\lightglobes\whiteglobe\whiteglobe.projectile 23c23 < { "kind" : "glowinitiator" } --- > "glow" projectiles\guns\unsorted\poisonbolt\poisonbolt.projectile 12c12 < { "kind" : "testpoison" } --- > "weakpoison" projectiles\guns\unsorted\pollenpumpgas\pollenpumpgas.projectile 14c14 < { "kind" : "testpoison" } --- > "weakpoison" projectiles\guns\unsorted\pollenpumpgas\pollenpumpgasspray.projectile 14c14 < { "kind" : "testpoison" } --- > "weakpoison" projectiles\guns\unsorted\rocket\rocket.projectile 17c17 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\guns\unsorted\tarblob\tarblob.projectile 20,27c20 < { < "kind" : "tarslow", < "duration" : 3, < "primitives" : [ < { "name" : "jumpboost", "percentage" : -20, "mode" : "min" }, < { "name" : "runboost", "percentage" : -25, "mode" : "min" } < ] < } --- > "tarslow" projectiles\guns\unsorted\waterballoon\snowandwaterballoon.projectile 13c13 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\healingstatusprojectile\healingstatusprojectile.projectile 19,22c19 < { < "kind" : "health", < "amount" : 100 < } --- > "regeneration" projectiles\minibiomelegendaries\cellblast\cellblast.projectile 19c19 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\minibiomelegendaries\cellblastx\cellblastx.projectile 19c19 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\minibiomelegendaries\coralshardx\coralshardx.projectile 14,20c14 < { < "kind" : "glow", < "amount" : 100.0, < "color" : "orange", < "duration" : 5.0 < }, < { "kind" : "testburning" } --- > "burning" projectiles\minibiomelegendaries\hivebug\hivebug.projectile 67c67 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\minibiomelegendaries\hivebugx\hivebugx.projectile 67c67 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\minibiomelegendaries\hivecluster\hivecluster.projectile 26c26 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\minibiomelegendaries\hiveclusterx\hiveclusterx.projectile 26c26 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\minibiomelegendaries\slimeblob\slimeblob.projectile 31c31 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\minibiomelegendaries\slimeblobx\slimeblobx.projectile 13c13 < { "kind" : "testpoison" } --- > "weakpoison" 46c46 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\minibiomelegendaries\slimecluster\slimecluster.projectile 26c26 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\minibiomelegendaries\slimeclusterx\slimeclusterx.projectile 26c26 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\minibiomelegendaries\xtermite\xtermite.projectile 22c22 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\npcs\beetle\beetle.projectile 29c29 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\npcs\blueflame\bluefire.projectile 18,24c18 < { < "kind" : "glow", < "amount" : 100.0, < "color" : "blue", < "duration" : 5.0 < }, < { "kind" : "testburning" } --- > "burning" projectiles\npcs\blueflame\blueflame.projectile 17,23c17 < { < "kind" : "glow", < "amount" : 100.0, < "color" : "blue", < "duration" : 5.0 < }, < { "kind" : "testburning" } --- > "burning" projectiles\npcs\clustergoo\clustergoo.projectile 51c51 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\npcs\darkgravityball\darkgravityball.projectile 13c13 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\npcs\darkplasma\darkplasma.projectile 19c19 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\npcs\explosivegoo\explosivegoo.projectile 24c24 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\npcs\fireball\fireball.projectile 19c19 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\npcs\flame\flame.projectile 17,23c17 < { < "kind" : "glow", < "amount" : 100.0, < "color" : "orange", < "duration" : 5.0 < }, < { "kind" : "testburning" } --- > "burning" projectiles\npcs\gas2\gas2.projectile 14c14 < { "kind" : "testpoison" } --- > "weakpoison" projectiles\npcs\glitter\glitter.projectile 18a19 > "glow", 20,21c21,22 < "kind" : "nudeshine", < "duration" : 5.0 --- > "effect" : "paralysis", > "duration" : 1.0 projectiles\npcs\goocluster\goocluster.projectile 25c25 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\npcs\grabbed\grabbed.projectile 15c15,16 < "kind" : "grabbed" --- > "effect" : "paralysis", > "duration" : 2.0 projectiles\npcs\icebreath\icebreath.projectile 31c31 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\npcs\jellybossexplode\jellybossexplode.projectile 121c121 < { "kind" : "testpoison" } --- > "weakpoison" projectiles\npcs\jellybossgoo\jellybossgoo.projectile 24c24 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\npcs\lightball\lightball.projectile 18,23c18 < { < "kind" : "glow", < "color" : "yellow", < "amount" : 50, < "duration" : 10.0 < } --- > "glow" projectiles\npcs\lightball\lightballout.projectile 18,23c18 < { < "kind" : "glow", < "color" : "yellow", < "amount" : 50, < "duration" : 10.0 < } --- > "glow" projectiles\npcs\mudball\mudball.projectile 13,16c13 < { < "kind" : "heavyslow", < "duration" : 7.0 < } --- > "mudslow" projectiles\npcs\penguintankround\penguintankround.projectile 16c16 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\npcs\poopbreath\poopbreath.projectile 17c17 < { "kind" : "testpoison" } --- > "weakpoison" projectiles\npcs\pulsecannon\pulsecannon.projectile 17c17 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\npcs\spicecloud\spicecloud.projectile 16,29c16,17 < { < "kind" : "runboost", < "amount" : 0.2, < "duration" : 9.0 < }, < { < "kind" : "jumpboost", < "amount" : 0.1, < "duration" : 9.0 < }, < { < "kind" : "testpoison", < "duration" : 9.0 < } --- > "runboost", > "weakpoison" projectiles\staves\racialstaves\aqua\splashspawner1.projectile 48c48 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\staves\racialstaves\crystal\cardinalschalcedony\chalcedonyspawner.projectile 81c81 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\staves\racialstaves\light\redgiant\redgiantspawner.projectile 116c116 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\swoosh\axe\coralswoosh\coralswoosh.projectile 16,22c16 < { < "kind" : "glow", < "amount" : 100.0, < "color" : "orange", < "duration" : 5.0 < }, < { "kind" : "testburning" } --- > "burning" projectiles\swoosh\axe\coralswooshx\coralswooshx.projectile 16,22c16 < { < "kind" : "glow", < "amount" : 100.0, < "color" : "orange", < "duration" : 5.0 < }, < { "kind" : "testburning" } --- > "burning" projectiles\swoosh\axe\fireaxe\fireaxe.projectile 16,22c16 < { < "kind" : "glow", < "amount" : 100.0, < "color" : "orange", < "duration" : 5.0 < }, < { "kind" : "testburning" } --- > "burning" projectiles\swoosh\axe\poisonaxe\poisonaxe.projectile 16c16 < { "kind" : "testpoison" } --- > "weakpoison" projectiles\swoosh\bloodbreath\bloodbreath.projectile 31c31 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\swoosh\broadsword\firebroadsword\firebroadsword.projectile 16,22c16 < { < "kind" : "glow", < "amount" : 100.0, < "color" : "orange", < "duration" : 5.0 < }, < { "kind" : "testburning" } --- > "burning" projectiles\swoosh\broadsword\poisonbroadsword\poisonbroadsword.projectile 16c16 < { "kind" : "testpoison" } --- > "weakpoison" projectiles\swoosh\dagger\firedagger\firedagger.projectile 16,22c16 < { < "kind" : "glow", < "amount" : 100.0, < "color" : "orange", < "duration" : 5.0 < }, < { "kind" : "testburning" } --- > "burning" projectiles\swoosh\dagger\poisondagger\poisondagger.projectile 16c16 < { "kind" : "testpoison" } --- > "weakpoison" projectiles\swoosh\hammer\firehammer\firehammer.projectile 16,22c16 < { < "kind" : "glow", < "amount" : 100.0, < "color" : "orange", < "duration" : 5.0 < }, < { "kind" : "testburning" } --- > "burning" projectiles\swoosh\hammer\floranmaceswoosh\floranmaceswoosh.projectile 15c15 < { "kind" : "testpoison" } --- > "weakpoison" projectiles\swoosh\hammer\poisonhammer\poisonhammer.projectile 16c16 < { "kind" : "testpoison" } --- > "weakpoison" projectiles\swoosh\hammer\tarhammerswoosh\tarhammerswoosh.projectile 16,23c16 < { < "kind" : "tarslow", < "duration" : 5, < "primitives" : [ < { "name" : "jumpboost", "percentage" : -20, "mode" : "min" }, < { "name" : "runboost", "percentage" : -25, "mode" : "min" } < ] < } --- > "tarslow" projectiles\swoosh\shortsword\fireshortsword\fireshortsword.projectile 16,22c16 < { < "kind" : "glow", < "amount" : 100.0, < "color" : "orange", < "duration" : 5.0 < }, < { "kind" : "testburning" } --- > "burning" projectiles\swoosh\shortsword\poisonshortsword\poisonshortsword.projectile 16c16 < { "kind" : "testpoison" } --- > "weakpoison" projectiles\swoosh\shortsword\slimeswoosh\slimeswoosh.projectile 16c16 < { "kind" : "testpoison" } --- > "weakpoison" 18d17 < 28c27 < "firePosition" : [-10, 5], --- > "firePosition" : [-10, 5], projectiles\swoosh\shortsword\slimeswooshx\slimeswooshx.projectile 16c16 < { "kind" : "testpoison" } --- > "weakpoison" 18d17 < 28c27 < "firePosition" : [-10, 5], --- > "firePosition" : [-10, 5], projectiles\swoosh\spear\firespear\firespear.projectile 16,22c16 < { < "kind" : "glow", < "amount" : 100.0, < "color" : "orange", < "duration" : 5.0 < }, < { "kind" : "testburning" } --- > "burning" 24,25c18 < } < --- > } \ No newline at end of file projectiles\swoosh\spear\poisonspear\poisonspear.projectile 16c16 < { "kind" : "testpoison" } --- > "weakpoison" projectiles\swoosh\spear\tarspearswoosh\tarspearswoosh.projectile 15,22c15 < { < "kind" : "tarslow", < "duration" : 3, < "primitives" : [ < { "name" : "jumpboost", "percentage" : -20, "mode" : "min" }, < { "name" : "runboost", "percentage" : -25, "mode" : "min" } < ] < } --- > "tarslow" projectiles\throwable\bomb\zbomb.projectile 17c17 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\throwable\bone\bone.projectile 18c18 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\throwable\electrogrenade\electrogrenade.projectile 132c132 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\throwable\flare\flare.projectile 17c17 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\throwable\gasgrenade\gasgrenade.projectile 132c132 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\throwable\glowgas\glowgas.projectile 14,17c14 < { < "kind" : "glowinitiator", < "amount" : 0.5 < } --- > "glow" projectiles\throwable\handgrenade\handgrenade.projectile 16c16 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\throwable\healinggas\healinggas.projectile 14,17c14 < { < "kind" : "healthinitiator", < "amount" : 0.5 < } --- > "regeneration" projectiles\throwable\jumpgas\jumpgas.projectile 14,18c14 < { < "kind" : "jumpboostinitiator", < "amount" : 0.5 < < } --- > "jumpboost" projectiles\throwable\molotovflame\molotovflame.projectile 22,28c22 < { < "kind" : "glow", < "amount" : 100.0, < "color" : "orange", < "duration" : 5.0 < }, < { "kind" : "testburning" } --- > "burning" projectiles\throwable\plasmagrenade\plasmagrenade.projectile 17c17 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\throwable\rungas\rungas.projectile 14,18c14 < { < "kind" : "runboostinitiator", < "amount" : 0.5 < < } --- > "runboost" projectiles\throwable\snowballgigantic\giganticsnowball.projectile 8a9 > "damagePoly" : [ [-9, 0], [-6, -6], [0, -9], [6, -6], [9, 0], [6, 6], [0, 9], [-6, 6] ], 12c13 < "file" : "/projectiles/explosions/snowballexplosion/snowballexplosion.config" --- > "file" : "/projectiles/explosions/giganticsnowballexplosion/giganticsnowballexplosion.config" projectiles\throwable\snowballlarge\largesnowball.projectile 8a9 > "damagePoly" : [ [-7, 0], [-4.6, -4.6], [0, -7], [4.6, -4.6], [7, 0], [4.6, 4.6], [0, 7], [-4.6, 4.6] ], 12c13 < "file" : "/projectiles/explosions/snowballexplosion/snowballexplosion.config" --- > "file" : "/projectiles/explosions/largesnowballexplosion/largesnowballexplosion.config" projectiles\throwable\snowballmedium\mediumsnowball.projectile 8a9 > "damagePoly" : [ [-4.5, 0], [-3, -3], [0, -4.5], [3, -3], [4.5, 0], [3, 3], [0, 4.5], [-3, 3] ], 12c13 < "file" : "/projectiles/explosions/snowballexplosion/snowballexplosion.config" --- > "file" : "/projectiles/explosions/mediumsnowballexplosion/mediumsnowballexplosion.config" projectiles\throwable\tarball\tarball.projectile 20,27c20 < { < "kind" : "tarslow", < "duration" : 3, < "primitives" : [ < { "name" : "jumpboost", "percentage" : -20, "mode" : "min" }, < { "name" : "runboost", "percentage" : -25, "mode" : "min" } < ] < } --- > "tarslow" projectiles\weather\junksatellite\junksatellite.projectile 16c16 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\weather\junksatellite2\junksatellite2.projectile 16c16 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\weather\largemeteor\largemeteor.projectile 22c22 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", projectiles\weather\smallmeteor\smallmeteor.projectile 16c16 < "damageType" : "hitTest", --- > "damageType" : "NoDamage", recipes\biomes\snow\snowball.recipe 6c6 < "groups" : [ "craftingtable", "materials", "all" ] --- > "groups" : [ "craftingtable", "weapons", "all" ] recipes\biomes\tar\tarball.recipe 6c6 < "groups" : [ "craftingtable", "materials", "all" ] --- > "groups" : [ "craftingtable", "weapons", "all" ] scripts\entityproxy.lua 5c5 < -- local npcIds = world.entityQuery(entity.position(), 100, {includedTypes = {"npc"}}) --- > -- local npcIds = world.entityQuery(mcontroller.position(), 100, {includedTypes = {"npc"}}) scripts\sensors.lua 32c32 < return world.lineCollision(entity.position(), position, true) --- > return world.lineCollision(mcontroller.position(), position, true) scripts\statemachine.lua 111c111 < -- the main() function) --- > -- the update(dt) function) scripts\util.lua 7c7 < reverse = util.toDirection(direction) ~= entity.facingDirection() --- > reverse = util.toDirection(direction) ~= mcontroller.facingDirection() 135a136 > local dt = script.updateDt() 137d137 < local dt = entity.dt() 139d138 < 150c149 < local g = gravityMultiplier * world.gravity(entity.position()) --- > local g = gravityMultiplier * world.gravity(mcontroller.position()) scripts\api\monsterhooks.lua 9c9 < function main() end --- > function update(dt) end scripts\api\npchooks.lua 8c8 < function main() end --- > function update(dt) end scripts\api\objecthooks.lua 11c11 < function main() end --- > function update(dt) end species\humannamegen.config 9a10,66 > // "names" : [ > // {"mode" : "alts"}, > // [ > // {"mode" : "serie"}, > // [{"mode" : "alts"}, > // "Morte", > // "Gari", > // "Acker", > // "Ale", > // "Bate", > // "Apple", > // "Ash", > // "Bake", > // "Bald", > // "" > // ], > // [{"mode" : "alts"}, > // "berry", > // "bourne", > // "bund", > // "by", > // "den", > // "field", > // "ford", > // "grove", > // "ham", > // "ham", > // "man", > // "mer", > // "more", > // "ridge", > // "roy", > // // "s", > // // "sby", > // // "sley", > // // "slow", > // "son", > // "ster", > // "stine", > // "ton", > // "tram", > // "wald", > // "wale", > // "wall", > // "well", > // "win", > // "wood", > // "worth", > // "wright" > // ] > // ], > // [ > // {"mode" : "serie"}, > // [{"mode" : "alts"}, "Whit", "Glimmer", "Fenta"], > // [{"mode" : "alts"}, "bund", "more", "scue"] > // ] > // ] tech\automobile\car.lua 2,3c2,3 < data.active = false < data.fireTimer = 0 --- > self.active = false > self.fireTimer = 0 9c9 < if data.active then --- > if self.active then 11c11 < tech.translate({-mechTransformPositionChange[1], -mechTransformPositionChange[2]}) --- > mcontroller.translate({-mechTransformPositionChange[1], -mechTransformPositionChange[2]}) 13c13 < data.active = false --- > self.active = false 15c15 < tech.setParentAppearance("normal") --- > tech.setParentState() 17d16 < tech.setParentFacingDirection(nil) 23c22 < if data.active then --- > if self.active then 50,54c49,53 < if not data.active and args.actions["mechActivate"] then < mechCollisionTest[1] = mechCollisionTest[1] + tech.position()[1] < mechCollisionTest[2] = mechCollisionTest[2] + tech.position()[2] < mechCollisionTest[3] = mechCollisionTest[3] + tech.position()[1] < mechCollisionTest[4] = mechCollisionTest[4] + tech.position()[2] --- > if not self.active and args.actions["mechActivate"] then > mechCollisionTest[1] = mechCollisionTest[1] + mcontroller.position()[1] > mechCollisionTest[2] = mechCollisionTest[2] + mcontroller.position()[2] > mechCollisionTest[3] = mechCollisionTest[3] + mcontroller.position()[1] > mechCollisionTest[4] = mechCollisionTest[4] + mcontroller.position()[2] 57c56 < tech.translate(mechTransformPositionChange) --- > mcontroller.translate(mechTransformPositionChange) 59c58 < tech.setParentAppearance("sit") --- > tech.setParentState("sit") 61c60 < data.active = true --- > self.active = true 65c64 < elseif data.active and (args.actions["mechDeactivate"] or energyCostPerSecond * args.dt > args.availableEnergy) then --- > elseif self.active and (args.actions["mechDeactivate"] or energyCostPerSecond * args.dt > args.availableEnergy) then 67c66 < tech.translate({-mechTransformPositionChange[1], -mechTransformPositionChange[2]}) --- > mcontroller.translate({-mechTransformPositionChange[1], -mechTransformPositionChange[2]}) 69c68 < tech.setParentAppearance("normal") --- > tech.setParentState() 72c71 < data.active = false --- > self.active = false 75,77c74,75 < tech.setParentFacingDirection(nil) < if data.active then < local diff = world.distance(args.aimPosition, tech.position()) --- > if self.active then > local diff = world.distance(args.aimPosition, mcontroller.position()) 81c79 < tech.applyMovementParameters(mechCustomMovementParameters) --- > mcontroller.controlParameters(mechCustomMovementParameters) 86c84 < tech.setParentFacingDirection(-1) --- > mcontroller.controlFace(-1) 99c97 < tech.setParentFacingDirection(1) --- > mcontroller.controlFace(1) 110,111c108,109 < if not tech.onGround() then < if tech.velocity()[2] > 0 then --- > if not mcontroller.onGround() then > if mcontroller.velocity()[2] > 0 then 116,117c114,115 < elseif tech.walking() or tech.running() then < if flip and tech.direction() == 1 or not flip and tech.direction() == -1 then --- > elseif mcontroller.walking() or mcontroller.running() then > if flip and mcontroller.direction() == 1 or not flip and mcontroller.direction() == -1 then 127,129c125,127 < if data.fireTimer <= 0 then < world.spawnProjectile(mechProjectile, vec2.add(tech.position(), tech.anchorPoint("frontGunFirePoint")), tech.parentEntityId(), {math.cos(aimAngle), math.sin(aimAngle)}, false, mechProjectileConfig) < data.fireTimer = data.fireTimer + mechFireCycle --- > if self.fireTimer <= 0 then > world.spawnProjectile(mechProjectile, vec2.add(mcontroller.position(), tech.anchorPoint("frontGunFirePoint")), entity.id(), {math.cos(aimAngle), math.sin(aimAngle)}, false, mechProjectileConfig) > self.fireTimer = self.fireTimer + mechFireCycle 132,135c130,133 < local oldFireTimer = data.fireTimer < data.fireTimer = data.fireTimer - args.dt < if oldFireTimer > mechFireCycle / 2 and data.fireTimer <= mechFireCycle / 2 then < world.spawnProjectile(mechProjectile, vec2.add(tech.position(), tech.anchorPoint("backGunFirePoint")), tech.parentEntityId(), {math.cos(aimAngle), math.sin(aimAngle)}, false, mechProjectileConfig) --- > local oldFireTimer = self.fireTimer > self.fireTimer = self.fireTimer - args.dt > if oldFireTimer > mechFireCycle / 2 and self.fireTimer <= mechFireCycle / 2 then > world.spawnProjectile(mechProjectile, vec2.add(mcontroller.position(), tech.anchorPoint("backGunFirePoint")), entity.id(), {math.cos(aimAngle), math.sin(aimAngle)}, false, mechProjectileConfig) tech\automobile\car\humancar.tech 17,18c17 < "ambulatingGroundFriction" : 6.0, < "skiddingGroundFriction" : 10.0, --- > "ambulatingGroundFriction" : 6.0 tech\blink\blink.lua 2,6c2,6 < local collisionBounds = tech.collisionBounds() < collisionBounds[1] = collisionBounds[1] - tech.position()[1] + position[1] < collisionBounds[2] = collisionBounds[2] - tech.position()[2] + position[2] < collisionBounds[3] = collisionBounds[3] - tech.position()[1] + position[1] < collisionBounds[4] = collisionBounds[4] - tech.position()[2] + position[2] --- > local boundBox = mcontroller.boundBox() > boundBox[1] = boundBox[1] - mcontroller.position()[1] + position[1] > boundBox[2] = boundBox[2] - mcontroller.position()[2] + position[2] > boundBox[3] = boundBox[3] - mcontroller.position()[1] + position[1] > boundBox[4] = boundBox[4] - mcontroller.position()[2] + position[2] 8c8 < return not world.rectCollision(collisionBounds) --- > return not world.rectCollision(boundBox) 17c17 < local collisionBlocks = world.collisionBlocksAlongLine(tech.position(), position, true, 1) --- > local collisionBlocks = world.collisionBlocksAlongLine(mcontroller.position(), position, true, 1) 19c19 < local diff = world.distance(position, tech.position()) --- > local diff = world.distance(position, mcontroller.position()) 77c77 < if doLiquidCheck and (world.liquidAt(position) or world.liquidAt({position[1], position[2] + blinkFootOffset})) then --- > if doLiquidCheck and (world.visibleLiquidAt(position) or world.visibleLiquidAt({position[1], position[2] + blinkFootOffset})) then 93c93 < local position = tech.position() --- > local position = mcontroller.position() 107,109c107,109 < data.mode = "none" < data.timer = 0 < data.targetPosition = nil --- > self.mode = "none" > self.timer = 0 > self.targetPosition = nil 113c113 < tech.setParentAppearance("normal") --- > tech.setParentDirectives() 130c130 < if args.actions["blink"] and data.mode == "none" and args.availableEnergy > energyUsage then --- > if args.actions["blink"] and self.mode == "none" and args.availableEnergy > energyUsage then 148,149c148,149 < data.targetPosition = blinkPosition < data.mode = "start" --- > self.targetPosition = blinkPosition > self.mode = "start" 155,158c155,158 < if data.mode == "start" then < tech.setVelocity({0, 0}) < data.mode = "out" < data.timer = 0 --- > if self.mode == "start" then > mcontroller.setVelocity({0, 0}) > self.mode = "out" > self.timer = 0 161,162c161,162 < elseif data.mode == "out" then < tech.setParentAppearance("hidden") --- > elseif self.mode == "out" then > tech.setParentDirectives("?multiply=00000000") 164,165c164,165 < tech.setVelocity({0, 0}) < data.timer = data.timer + args.dt --- > mcontroller.setVelocity({0, 0}) > self.timer = self.timer + args.dt 167,170c167,170 < if data.timer > blinkOutTime then < tech.setPosition(data.targetPosition) < data.mode = "in" < data.timer = 0 --- > if self.timer > blinkOutTime then > mcontroller.setPosition(self.targetPosition) > self.mode = "in" > self.timer = 0 174,175c174,175 < elseif data.mode == "in" then < tech.setParentAppearance("normal") --- > elseif self.mode == "in" then > tech.setParentDirectives() 177,178c177,178 < tech.setVelocity({0, 0}) < data.timer = data.timer + args.dt --- > mcontroller.setVelocity({0, 0}) > self.timer = self.timer + args.dt 180,181c180,181 < if data.timer > blinkInTime then < data.mode = "none" --- > if self.timer > blinkInTime then > self.mode = "none" tech\booster\booster.lua 2,4c2,4 < data.lastJump = false < data.lastBoost = nil < data.ranOut = false --- > self.lastJump = false > self.lastBoost = nil > self.ranOut = false 11,12c11,12 < if not tech.onGround() then < if not tech.canJump() and currentJump and not data.lastJump then --- > if not mcontroller.onGround() then > if not mcontroller.canJump() and currentJump and not self.lastJump then 30,31c30,31 < elseif currentJump and data.lastBoost then < currentBoost = data.lastBoost --- > elseif currentJump and self.lastBoost then > currentBoost = self.lastBoost 35,36c35,36 < data.lastJump = currentJump < data.lastBoost = currentBoost --- > self.lastJump = currentJump > self.lastBoost = currentBoost 48,50c48,50 < data.ranOut = true < elseif tech.onGround() or tech.inLiquid() then < data.ranOut = false --- > self.ranOut = true > elseif mcontroller.onGround() or mcontroller.inLiquid() then > self.ranOut = false 56c56 < if not data.ranOut then --- > if not self.ranOut then 59c59 < tech.control({boostSpeed * diag, boostSpeed * diag}, boostControlForce, true, true) --- > mcontroller.controlApproachVelocity({boostSpeed * diag, boostSpeed * diag}, boostControlForce, true, true) 61c61 < tech.control({boostSpeed * diag, -boostSpeed * diag}, boostControlForce, true, true) --- > mcontroller.controlApproachVelocity({boostSpeed * diag, -boostSpeed * diag}, boostControlForce, true, true) 63c63 < tech.control({-boostSpeed * diag, boostSpeed * diag}, boostControlForce, true, true) --- > mcontroller.controlApproachVelocity({-boostSpeed * diag, boostSpeed * diag}, boostControlForce, true, true) 65c65 < tech.control({-boostSpeed * diag, -boostSpeed * diag}, boostControlForce, true, true) --- > mcontroller.controlApproachVelocity({-boostSpeed * diag, -boostSpeed * diag}, boostControlForce, true, true) 67c67 < tech.control({boostSpeed, 0}, boostControlForce, true, true) --- > mcontroller.controlApproachVelocity({boostSpeed, 0}, boostControlForce, true, true) 69c69 < tech.control({0, -boostSpeed}, boostControlForce, true, true) --- > mcontroller.controlApproachVelocity({0, -boostSpeed}, boostControlForce, true, true) 71c71 < tech.control({-boostSpeed, 0}, boostControlForce, true, true) --- > mcontroller.controlApproachVelocity({-boostSpeed, 0}, boostControlForce, true, true) 73c73 < tech.control({0, boostSpeed}, boostControlForce, true, true) --- > mcontroller.controlApproachVelocity({0, boostSpeed}, boostControlForce, true, true) tech\dash\dash.lua 2,7c2,7 < data.airDashing = false < data.dashTimer = 0 < data.dashDirection = 0 < data.dashLastInput = 0 < data.dashTapLast = 0 < data.dashTapTimer = 0 --- > self.airDashing = false > self.dashTimer = 0 > self.dashDirection = 0 > self.dashLastInput = 0 > self.dashTapLast = 0 > self.dashTapTimer = 0 11c11 < if data.dashTimer > 0 then --- > if self.dashTimer > 0 then 17,18c17,18 < if data.dashTapTimer > 0 then < data.dashTapTimer = data.dashTapTimer - args.dt --- > if self.dashTapTimer > 0 then > self.dashTapTimer = self.dashTapTimer - args.dt 22,25c22,25 < if data.dashLastInput ~= 1 then < if data.dashTapLast == 1 and data.dashTapTimer > 0 then < data.dashTapLast = 0 < data.dashTapTimer = 0 --- > if self.dashLastInput ~= 1 then > if self.dashTapLast == 1 and self.dashTapTimer > 0 then > self.dashTapLast = 0 > self.dashTapTimer = 0 28,29c28,29 < data.dashTapLast = 1 < data.dashTapTimer = maximumDoubleTapTime --- > self.dashTapLast = 1 > self.dashTapTimer = maximumDoubleTapTime 32c32 < data.dashLastInput = 1 --- > self.dashLastInput = 1 34,37c34,37 < if data.dashLastInput ~= -1 then < if data.dashTapLast == -1 and data.dashTapTimer > 0 then < data.dashTapLast = 0 < data.dashTapTimer = 0 --- > if self.dashLastInput ~= -1 then > if self.dashTapLast == -1 and self.dashTapTimer > 0 then > self.dashTapLast = 0 > self.dashTapTimer = 0 40,41c40,41 < data.dashTapLast = -1 < data.dashTapTimer = maximumDoubleTapTime --- > self.dashTapLast = -1 > self.dashTapTimer = maximumDoubleTapTime 44c44 < data.dashLastInput = -1 --- > self.dashLastInput = -1 46c46 < data.dashLastInput = 0 --- > self.dashLastInput = 0 59,61c59,61 < if args.actions["dashRight"] and data.dashTimer <= 0 and args.availableEnergy > energyUsage then < data.dashTimer = dashDuration < data.dashDirection = 1 --- > if args.actions["dashRight"] and self.dashTimer <= 0 and args.availableEnergy > energyUsage then > self.dashTimer = dashDuration > self.dashDirection = 1 63,66c63,66 < data.airDashing = not tech.onGround() < elseif args.actions["dashLeft"] and data.dashTimer <= 0 and args.availableEnergy > energyUsage then < data.dashTimer = dashDuration < data.dashDirection = -1 --- > self.airDashing = not mcontroller.onGround() > elseif args.actions["dashLeft"] and self.dashTimer <= 0 and args.availableEnergy > energyUsage then > self.dashTimer = dashDuration > self.dashDirection = -1 68c68 < data.airDashing = not tech.onGround() --- > self.airDashing = not mcontroller.onGround() 71,72c71,72 < if data.dashTimer > 0 then < tech.xControl(dashSpeed * data.dashDirection, dashControlForce, true) --- > if self.dashTimer > 0 then > mcontroller.controlApproachXVelocity(dashSpeed * self.dashDirection, dashControlForce, true) 74,76c74,76 < if data.airDashing then < tech.applyMovementParameters({gravityEnabled = false}) < tech.yControl(0, dashControlForce, true) --- > if self.airDashing then > mcontroller.controlParameters({gravityEnabled = false}) > mcontroller.controlApproachYVelocity(0, dashControlForce, true) 79,80c79,80 < if data.dashDirection == -1 then < tech.moveLeft() --- > if self.dashDirection == -1 then > mcontroller.controlFace(-1) 83c83 < tech.moveRight() --- > mcontroller.controlFace(1) 88c88 < data.dashTimer = data.dashTimer - args.dt --- > self.dashTimer = self.dashTimer - args.dt tech\jeep\jeep\humanjeep.tech 16,17c16 < "ambulatingGroundFriction" : 6.0, < "skiddingGroundFriction" : 10.0, --- > "ambulatingGroundFriction" : 6.0 tech\jetpack\jetpack.lua 2,3c2,3 < data.holdingJump = false < data.ranOut = false --- > self.holdingJump = false > self.ranOut = false 7,8c7,8 < if args.moves["jump"] and tech.jumping() then < data.holdingJump = true --- > if args.moves["jump"] and mcontroller.jumping() then > self.holdingJump = true 10c10 < data.holdingJump = false --- > self.holdingJump = false 13c13 < if args.moves["jump"] and not tech.canJump() and not data.holdingJump then --- > if args.moves["jump"] and not mcontroller.canJump() and not self.holdingJump then 27,29c27,29 < data.ranOut = true < elseif tech.onGround() or tech.inLiquid() then < data.ranOut = false --- > self.ranOut = true > elseif mcontroller.onGround() or mcontroller.inLiquid() then > self.ranOut = false 32c32 < if args.actions["jetpack"] and not data.ranOut then --- > if args.actions["jetpack"] and not self.ranOut then 34c34 < tech.yControl(jetpackSpeed, jetpackControlForce, true) --- > mcontroller.controlApproachYVelocity(jetpackSpeed, jetpackControlForce, true) tech\mech\mech.lua 2,3c2,3 < data.active = false < data.fireTimer = 0 --- > self.active = false > self.fireTimer = 0 9c9 < if data.active then --- > if self.active then 11c11 < tech.translate({-mechTransformPositionChange[1], -mechTransformPositionChange[2]}) --- > mcontroller.translate({-mechTransformPositionChange[1], -mechTransformPositionChange[2]}) 13c13 < data.active = false --- > self.active = false 15c15 < tech.setParentAppearance("normal") --- > tech.setParentState() 17d16 < tech.setParentFacingDirection(nil) 23c22 < if data.active then --- > if self.active then 50,54c49,53 < if not data.active and args.actions["mechActivate"] then < mechCollisionTest[1] = mechCollisionTest[1] + tech.position()[1] < mechCollisionTest[2] = mechCollisionTest[2] + tech.position()[2] < mechCollisionTest[3] = mechCollisionTest[3] + tech.position()[1] < mechCollisionTest[4] = mechCollisionTest[4] + tech.position()[2] --- > if not self.active and args.actions["mechActivate"] then > mechCollisionTest[1] = mechCollisionTest[1] + mcontroller.position()[1] > mechCollisionTest[2] = mechCollisionTest[2] + mcontroller.position()[2] > mechCollisionTest[3] = mechCollisionTest[3] + mcontroller.position()[1] > mechCollisionTest[4] = mechCollisionTest[4] + mcontroller.position()[2] 57c56 < tech.translate(mechTransformPositionChange) --- > mcontroller.translate(mechTransformPositionChange) 59c58 < tech.setParentAppearance("sit") --- > tech.setParentState("sit") 61c60 < data.active = true --- > self.active = true 65c64 < elseif data.active and (args.actions["mechDeactivate"] or energyCostPerSecond * args.dt > args.availableEnergy) then --- > elseif self.active and (args.actions["mechDeactivate"] or energyCostPerSecond * args.dt > args.availableEnergy) then 67c66 < tech.translate({-mechTransformPositionChange[1], -mechTransformPositionChange[2]}) --- > mcontroller.translate({-mechTransformPositionChange[1], -mechTransformPositionChange[2]}) 69c68 < tech.setParentAppearance("normal") --- > tech.setParentState() 72c71 < data.active = false --- > self.active = false 75,77c74,75 < tech.setParentFacingDirection(nil) < if data.active then < local diff = world.distance(args.aimPosition, tech.position()) --- > if self.active then > local diff = world.distance(args.aimPosition, mcontroller.position()) 81c79 < tech.applyMovementParameters(mechCustomMovementParameters) --- > mcontroller.controlParameters(mechCustomMovementParameters) 86c84 < tech.setParentFacingDirection(-1) --- > mcontroller.controlFace(-1) 99c97 < tech.setParentFacingDirection(1) --- > mcontroller.controlFace(1) 110,111c108,109 < if not tech.onGround() then < if tech.velocity()[2] > 0 then --- > if not mcontroller.onGround() then > if mcontroller.velocity()[2] > 0 then 116,117c114,115 < elseif tech.walking() or tech.running() then < if flip and tech.direction() == 1 or not flip and tech.direction() == -1 then --- > elseif mcontroller.walking() or mcontroller.running() then > if flip and mcontroller.movingDirection() == 1 or not flip and mcontroller.movingDirection() == -1 then 127,129c125,127 < if data.fireTimer <= 0 then < world.spawnProjectile(mechProjectile, vec2.add(tech.position(), tech.anchorPoint("frontGunFirePoint")), tech.parentEntityId(), {math.cos(aimAngle), math.sin(aimAngle)}, false, mechProjectileConfig) < data.fireTimer = data.fireTimer + mechFireCycle --- > if self.fireTimer <= 0 then > world.spawnProjectile(mechProjectile, vec2.add(mcontroller.position(), tech.anchorPoint("frontGunFirePoint")), entity.id(), {math.cos(aimAngle), math.sin(aimAngle)}, false, mechProjectileConfig) > self.fireTimer = self.fireTimer + mechFireCycle 132,135c130,133 < local oldFireTimer = data.fireTimer < data.fireTimer = data.fireTimer - args.dt < if oldFireTimer > mechFireCycle / 2 and data.fireTimer <= mechFireCycle / 2 then < world.spawnProjectile(mechProjectile, vec2.add(tech.position(), tech.anchorPoint("backGunFirePoint")), tech.parentEntityId(), {math.cos(aimAngle), math.sin(aimAngle)}, false, mechProjectileConfig) --- > local oldFireTimer = self.fireTimer > self.fireTimer = self.fireTimer - args.dt > if oldFireTimer > mechFireCycle / 2 and self.fireTimer <= mechFireCycle / 2 then > world.spawnProjectile(mechProjectile, vec2.add(mcontroller.position(), tech.anchorPoint("backGunFirePoint")), entity.id(), {math.cos(aimAngle), math.sin(aimAngle)}, false, mechProjectileConfig) tech\mech\apexmech\apexmech.tech 18d17 < "skiddingGroundFriction" : 10.0, tech\mech\glitchmech\glitchmech.tech 17,18c17 < "ambulatingGroundFriction" : 6.0, < "skiddingGroundFriction" : 10.0, --- > "ambulatingGroundFriction" : 6.0 tech\mech\humanmech\humanmech.tech 17,18c17 < "ambulatingGroundFriction" : 6.0, < "skiddingGroundFriction" : 10.0, --- > "ambulatingGroundFriction" : 6.0 tech\morphball\morphball.lua 2,6c2,6 < data.specialLast = false < data.primaryFireLast = false < data.angularVelocity = 0 < data.angle = 0 < data.active = false --- > self.specialLast = false > self.primaryFireLast = false > self.angularVelocity = 0 > self.angle = 0 > self.active = false 11c11 < if data.active then --- > if self.active then 13,14c13,14 < tech.translate({0, -tech.parameter("ballTransformHeightChange")}) < tech.setParentAppearance("normal") --- > mcontroller.translate({0, -tech.parameter("ballTransformHeightChange")}) > tech.setParentDirectives() 16c16 < data.active = false --- > self.active = false 22,23c22,23 < if args.moves["special"] == 1 and not data.specialLast then < if data.active then --- > if args.moves["special"] == 1 and not self.specialLast then > if self.active then 28c28 < elseif data.active and args.moves["primaryFire"] and not data.primaryFireLast then --- > elseif self.active and args.moves["primaryFire"] and not self.primaryFireLast then 32,33c32,33 < data.specialLast = args.moves["special"] == 1 < data.primaryFireLast = args.moves["primaryFire"] --- > self.specialLast = args.moves["special"] == 1 > self.primaryFireLast = args.moves["primaryFire"] 47c47 < if not data.active and args.actions["morphballActivate"] then --- > if not self.active and args.actions["morphballActivate"] then 50,51c50,51 < tech.translate({0, ballTransformHeightChange}) < tech.setParentAppearance("hidden") --- > mcontroller.translate({0, ballTransformHeightChange}) > tech.setParentDirectives("?multiply=00000000") 53,58c53,58 < data.active = true < elseif data.active and (args.actions["morphballDeactivate"] or energyCostPerSecond * args.dt > args.availableEnergy) then < ballDeactivateCollisionTest[1] = ballDeactivateCollisionTest[1] + tech.position()[1] < ballDeactivateCollisionTest[2] = ballDeactivateCollisionTest[2] + tech.position()[2] < ballDeactivateCollisionTest[3] = ballDeactivateCollisionTest[3] + tech.position()[1] < ballDeactivateCollisionTest[4] = ballDeactivateCollisionTest[4] + tech.position()[2] --- > self.active = true > elseif self.active and (args.actions["morphballDeactivate"] or energyCostPerSecond * args.dt > args.availableEnergy) then > ballDeactivateCollisionTest[1] = ballDeactivateCollisionTest[1] + mcontroller.position()[1] > ballDeactivateCollisionTest[2] = ballDeactivateCollisionTest[2] + mcontroller.position()[2] > ballDeactivateCollisionTest[3] = ballDeactivateCollisionTest[3] + mcontroller.position()[1] > ballDeactivateCollisionTest[4] = ballDeactivateCollisionTest[4] + mcontroller.position()[2] 62,63c62,63 < tech.translate({0, -ballTransformHeightChange}) < tech.setParentAppearance("normal") --- > mcontroller.translate({0, -ballTransformHeightChange}) > tech.setParentDirectives() 65,66c65,66 < data.angle = 0 < data.active = false --- > self.angle = 0 > self.active = false 72,73c72,73 < if data.active then < tech.applyMovementParameters(ballCustomMovementParameters) --- > if self.active then > mcontroller.controlParameters(ballCustomMovementParameters) 75c75 < if tech.onGround() then --- > if mcontroller.onGround() then 78c78 < data.angularVelocity = -tech.measuredVelocity()[1] / ballRadius --- > self.angularVelocity = -mcontroller.measuredVelocity()[1] / ballRadius 81c81 < data.angle = math.fmod(math.pi * 2 + data.angle + data.angularVelocity * args.dt, math.pi * 2) --- > self.angle = math.fmod(math.pi * 2 + self.angle + self.angularVelocity * args.dt, math.pi * 2) 85c85 < local rotationFrame = math.floor(data.angle / math.pi * ballFrames) % ballFrames --- > local rotationFrame = math.floor(self.angle / math.pi * ballFrames) % ballFrames 89c89 < world.spawnProjectile(ballBombProjectile, tech.position(), tech.parentEntityId()) --- > world.spawnProjectile(ballBombProjectile, mcontroller.position(), entity.id()) tech\multijump\multijump.lua 2,3c2,3 < data.multiJumps = 0 < data.lastJump = false --- > self.multiJumps = 0 > self.lastJump = false 7,8c7,8 < if args.moves["jump"] and not tech.jumping() and not tech.canJump() and not data.lastJump then < data.lastJump = true --- > if args.moves["jump"] and not mcontroller.jumping() and not mcontroller.canJump() and not self.lastJump then > self.lastJump = true 11c11 < data.lastJump = args.moves["jump"] --- > self.lastJump = args.moves["jump"] 20,22c20,22 < if args.actions["multiJump"] and data.multiJumps < multiJumpCount and args.availableEnergy > energyUsage then < tech.jump(true) < data.multiJumps = data.multiJumps + 1 --- > if args.actions["multiJump"] and self.multiJumps < multiJumpCount and args.availableEnergy > energyUsage then > mcontroller.controlJump(true) > self.multiJumps = self.multiJumps + 1 27,28c27,28 < if tech.onGround() or tech.inLiquid() then < data.multiJumps = 0 --- > if mcontroller.onGround() or mcontroller.inLiquid() then > self.multiJumps = 0 tech\skyrail\skyrail.lua 43,44c43,44 < data.inputAction = { false, false, false, false, false, false } < data.lastAction = { false, false, false, false, false, false } --- > self.inputAction = { false, false, false, false, false, false } > self.lastAction = { false, false, false, false, false, false } 47c47 < data.active = false --Tech On/Off --- > self.active = false --Tech On/Off 51,54c51,54 < data.onRail = false < data.direction = 0 --Direction of motion (-1 = left, +1 = right 0 = still) < data.speed = 0 --Speed of motion, should always be +tive. < data.currentRail = nil --Current rail object: --- > self.onRail = false > self.direction = 0 --Direction of motion (-1 = left, +1 = right 0 = still) > self.speed = 0 --Speed of motion, should always be +tive. > self.currentRail = nil --Current rail object: 57,61c57,61 < data.leaveTimer = 0 --Timer triggered to prevent immediate re-attaching to rails after jumping. < data.railSearchOrder = "MBT" --Priority of rail neighbours when moving from one rail to another (M=Middle, B=Bottom, T=Top). < data.resetRailSearchOrder = true --Used to mark if default railSearchOrder has been overidden by a special rail type < data.maxspeed = 60 --Default maxspeed (should be overidden before use) < data.acceleration = 15 --Default acceleration (should be overidden before use) --- > self.leaveTimer = 0 --Timer triggered to prevent immediate re-attaching to rails after jumping. > self.railSearchOrder = "MBT" --Priority of rail neighbours when moving from one rail to another (M=Middle, B=Bottom, T=Top). > self.resetRailSearchOrder = true --Used to mark if default railSearchOrder has been overidden by a special rail type > self.maxspeed = 60 --Default maxspeed (should be overidden before use) > self.acceleration = 15 --Default acceleration (should be overidden before use) 90,91c90,91 < if move and not data.lastAction[moveIndex] then < data.inputAction[moveIndex] = true --- > if move and not self.lastAction[moveIndex] then > self.inputAction[moveIndex] = true 93c93 < data.lastAction[moveIndex] = move and pressOnly --- > self.lastAction[moveIndex] = move and pressOnly 97c97 < data.inputAction = { false, false, false, false, false, false } --- > self.inputAction = { false, false, false, false, false, false } 106,108c106,108 < if data.inputAction[IA_SPECIAL] then < data.active = not data.active < if data.onRail then --- > if self.inputAction[IA_SPECIAL] then > self.active = not self.active > if self.onRail then 113c113 < if data.active then --- > if self.active then 115c115 < if data.onRail then --- > if self.onRail then 130,131c130,131 < if data.leaveTimer > 0 then < data.leaveTimer = data.leaveTimer - args.dt --- > if self.leaveTimer > 0 then > self.leaveTimer = self.leaveTimer - args.dt 138c138 < local hookX = { tech.position()[1] + hookOffset[1], tech.position()[2] + hookOffset[2]} --- > local hookX = { mcontroller.position()[1] + hookOffset[1], mcontroller.position()[2] + hookOffset[2]} 145,146c145,146 < data.leaveTimer = 0 < local velocity = tech.measuredVelocity() --- > self.leaveTimer = 0 > local velocity = mcontroller.measuredVelocity() 166c166 < if data.inputAction[IA_JUMP] then --- > if self.inputAction[IA_JUMP] then 168,170c168,170 < data.leaveTimer = tech.parameter("railLeaveTime"); < if not data.inputAction[IA_DOWN] then < tech.jump(true) --- > self.leaveTimer = tech.parameter("railLeaveTime"); > if not self.inputAction[IA_DOWN] then > mcontroller.controlJump(true) 176,179c176,179 < if data.inputAction[IA_UP] then < data.railSearchOrder = "TMB" < elseif data.inputAction[IA_DOWN] then < data.railSearchOrder = "BMT" --- > if self.inputAction[IA_UP] then > self.railSearchOrder = "TMB" > elseif self.inputAction[IA_DOWN] then > self.railSearchOrder = "BMT" 181,182c181,182 < if data.resetRailSearchOrder == true then < data.railSearchOrder = "MBT" --- > if self.resetRailSearchOrder == true then > self.railSearchOrder = "MBT" 184c184 < data.resetRailSearchOrder = true --- > self.resetRailSearchOrder = true 191c191 < if data.onRail then --- > if self.onRail then 195c195 < update_preapplyRailSurface(args,surfaces[data.currentRail.Type]) --- > update_preapplyRailSurface(args,surfaces[self.currentRail.Type]) 198,203c198,203 < if data.inputAction[IA_LEFT] then < update_railSpeed(-data.acceleration * args.dt) < tech.control({0,0},0,true,true) < elseif data.inputAction[IA_RIGHT] then < update_railSpeed(data.acceleration * args.dt) < tech.control({0,0},0,true,true) --- > if self.inputAction[IA_LEFT] then > update_railSpeed(-self.acceleration * args.dt) > mcontroller.controlApproachVelocity({0,0},0,true,true) > elseif self.inputAction[IA_RIGHT] then > update_railSpeed(self.acceleration * args.dt) > mcontroller.controlApproachVelocity({0,0},0,true,true) 207c207 < update_postapplyRailSurface(args,surfaces[data.currentRail.Type]) --- > update_postapplyRailSurface(args,surfaces[self.currentRail.Type]) 221,224c221,224 < if world.magnitude(tech.measuredVelocity()) < minspeed then < if data.speed > bouncespeed then < data.direction = -data.direction < data.speed = data.speed * bouncefactor --- > if world.magnitude(mcontroller.measuredVelocity()) < minspeed then > if self.speed > bouncespeed then > self.direction = -self.direction > self.speed = self.speed * bouncefactor 233c233 < local hookX = { tech.position()[1] + hookOffset[1], tech.position()[2] + hookOffset[2]} --- > local hookX = { mcontroller.position()[1] + hookOffset[1], mcontroller.position()[2] + hookOffset[2]} 239c239 < if nrails <= 0 or data.currentRail == nil then --- > if nrails <= 0 or self.currentRail == nil then 245c245 < if not railListContains(rails,data.currentRail) then --- > if not railListContains(rails,self.currentRail) then 247,248c247,248 < leftRails = getOverheadNeighboursFromRail(data.currentRail,-1) < rightRails = getOverheadNeighboursFromRail(data.currentRail,1) --- > leftRails = getOverheadNeighboursFromRail(self.currentRail,-1) > rightRails = getOverheadNeighboursFromRail(self.currentRail,1) 256,258c256,258 < --world.logInfo("LN: " .. data.railSearchOrder) < bestNeighbour = getBestNeighbour(data.currentRail.Left, data.railSearchOrder) < data.currentRail = leftRails[bestNeighbour.yOffset + 2] --- > --world.logInfo("LN: " .. self.railSearchOrder) > bestNeighbour = getBestNeighbour(self.currentRail.Left, self.railSearchOrder) > self.currentRail = leftRails[bestNeighbour.yOffset + 2] 265,267c265,267 < --world.logInfo("RN" .. data.railSearchOrder) < bestNeighbour = getBestNeighbour(data.currentRail.Right, data.railSearchOrder) < data.currentRail = rightRails[bestNeighbour.yOffset + 2] --- > --world.logInfo("RN" .. self.railSearchOrder) > bestNeighbour = getBestNeighbour(self.currentRail.Right, self.railSearchOrder) > self.currentRail = rightRails[bestNeighbour.yOffset + 2] 271c271 < local char = data.railSearchOrder:sub(1,1) --- > local char = self.railSearchOrder:sub(1,1) 273c273 < data.currentRail = rails[1] --- > self.currentRail = rails[1] 275c275 < data.currentRail = rails[math.ceil(nrails / 2)] --- > self.currentRail = rails[math.ceil(nrails / 2)] 277c277 < data.currentRail = rails[nrails] --- > self.currentRail = rails[nrails] 287,288c287,288 < if k=="maxSpeed" then data.maxspeed = v --Set max speed < elseif k=="acceleration" then data.acceleration = v --Set acceleration --- > if k=="maxSpeed" then self.maxspeed = v --Set max speed > elseif k=="acceleration" then self.acceleration = v --Set acceleration 290,291c290,291 < data.railSearchOrder = v --Set rail search order < data.resetRailSearchOrder = false --Prevent holding no keys from resetting SO --- > self.railSearchOrder = v --Set rail search order > self.resetRailSearchOrder = false --Prevent holding no keys from resetting SO 300c300 < data.speed = data.speed + (data.speed * v - data.speed) * args.dt --- > self.speed = self.speed + (self.speed * v - self.speed) * args.dt 302c302 < data.speed = data.speed * v --- > self.speed = self.speed * v 304c304 < if v[1] == data.direction then data.speed = data.speed * v[2] end --- > if v[1] == self.direction then self.speed = self.speed * v[2] end 306c306 < data.speed = dataspeed + v * args.dt --- > self.speed = dataspeed + v * args.dt 308c308 < data.speed = v --- > self.speed = v 310c310 < data.direction = v --- > self.direction = v 319c319 < data.speed = data.speed + acceleration * data.direction --- > self.speed = self.speed + acceleration * self.direction 321,323c321,323 < if data.speed < minspeed then < data.speed = minspeed < data.direction = -data.direction --- > if self.speed < minspeed then > self.speed = minspeed > self.direction = -self.direction 332c332 < local gravity = world.gravity(tech.position()); --- > local gravity = world.gravity(mcontroller.position()); 334c334 < local hookX = { tech.position()[1] + hookOffset[1], tech.position()[2] + hookOffset[2]} --- > local hookX = { mcontroller.position()[1] + hookOffset[1], mcontroller.position()[2] + hookOffset[2]} 337c337 < local grad = getRailGradient(data.currentRail,data.direction,data.railSearchOrder) --- > local grad = getRailGradient(self.currentRail,self.direction,self.railSearchOrder) 340c340 < data.speed = data.speed - gravity * grad * ir2 * args.dt --- > self.speed = self.speed - gravity * grad * ir2 * args.dt 343,346c343,346 < if data.speed < minspeed then < data.speed = minspeed < elseif data.speed > data.maxspeed then < data.speed = data.maxspeed --- > if self.speed < minspeed then > self.speed = minspeed > elseif self.speed > self.maxspeed then > self.speed = self.maxspeed 352,353c352,353 < tech.setXVelocity(data.speed * data.direction) < tech.setYVelocity(0) --- > mcontroller.setXVelocity(self.speed * self.direction) > mcontroller.setYVelocity(0) 355,356c355,356 < tech.setXVelocity(data.speed * data.direction * ir2) < tech.setYVelocity(data.speed * grad * ir2) --- > mcontroller.setXVelocity(self.speed * self.direction * ir2) > mcontroller.setYVelocity(self.speed * grad * ir2) 360,361c360,361 < local dx = hookX[1]- data.currentRail.Position[1] --sub-tile x position along railing < local ypos = data.currentRail.Position[2] - hookOffset[2] --y position for snapping to railing --- > local dx = hookX[1]- self.currentRail.Position[1] --sub-tile x position along railing > local ypos = self.currentRail.Position[2] - hookOffset[2] --y position for snapping to railing 363c363 < if data.direction < 0 then --- > if self.direction < 0 then 373c373 < tech.setPosition({tech.position()[1],ypos}) --- > mcontroller.setPosition({mcontroller.position()[1],ypos}) 388,391c388,391 < data.onRail = true < data.direction =0 < data.speed =0 < data.currentRail = rail --- > self.onRail = true > self.direction =0 > self.speed =0 > self.currentRail = rail 394c394 < local vel = tech.measuredVelocity() --- > local vel = mcontroller.measuredVelocity() 396c396 < data.direction = 1 --- > self.direction = 1 398c398 < data.direction = -1 --- > self.direction = -1 402c402 < local grad = getRailGradient(rail,data.direction,searchOrder) --- > local grad = getRailGradient(rail,self.direction,searchOrder) 405c405 < data.speed=math.abs(vel[1]) --- > self.speed=math.abs(vel[1]) 408c408 < data.speed= (math.abs(vel[1]) + vel[2] * grad) / math.sqrt(2) --- > self.speed= (math.abs(vel[1]) + vel[2] * grad) / math.sqrt(2) 410c410 < if data.speed < 0 then --- > if self.speed < 0 then 412,414c412,414 < data.speed = -data.speed < data.direction = -data.direction < elseif data.speed < 0.001 then --- > self.speed = -self.speed > self.direction = -self.direction > elseif self.speed < 0.001 then 416c416 < data.direction = 0 --- > self.direction = 0 421,423c421,423 < if data.direction == 0 then < data.speed = tech.parameter("minSpeed") < data.direction = tech.direction() --- > if self.direction == 0 then > self.speed = tech.parameter("minSpeed") > self.direction = mcontroller.direction() 429,430c429,430 < data.currentRail = nil < data.onRail = false --- > self.currentRail = nil > self.onRail = false tech\superjump\superjump.lua 2c2 < data.superJumpTimer = 0 --- > self.superJumpTimer = 0 6c6 < if args.moves["jump"] and args.moves["up"] and tech.onGround() then --- > if args.moves["jump"] and args.moves["up"] and mcontroller.onGround() then 22c22 < if args.actions["superjump"] and tech.onGround() and data.superJumpTimer <= 0 and args.availableEnergy > energyUsage then --- > if args.actions["superjump"] and mcontroller.onGround() and self.superJumpTimer <= 0 and args.availableEnergy > energyUsage then 24c24 < data.superJumpTimer = superJumpTime --- > self.superJumpTimer = superJumpTime 28,29c28,31 < if data.superJumpTimer > 0 then < tech.yControl(superJumpSpeed, superJumpControlForce) --- > tech.setFlipped(mcontroller.facingDirection() < 0) > > if self.superJumpTimer > 0 then > mcontroller.controlApproachYVelocity(superJumpSpeed, superJumpControlForce) 31c33 < data.superJumpTimer = data.superJumpTimer - args.dt --- > self.superJumpTimer = self.superJumpTimer - args.dt tiles\materials\reeds.material 2c2 < "materialId" : 112, --- > "materialId" : 114, treasure\common.treasurepools 401c401 < {"weight" : 0.0015, "item" : [ "generatedsword", 1, { "definition" : "teslastaff" } ]}, --- > {"weight" : 0.0015, "item" : [ "generatedsword", 1, { "definition" : "teslaspear" } ]},
Ohh..... Epic snowball fights will insue! (just one question, will this use energy or snowballs for ammo?)
So are varied status effect on nighlies already, or did you do that manually? I've seen they implemented the new stat system for poisoned and healing so far, but haven't found any others, are they ingame yet? Also does anyone know how to craft filled bottles? i've got empties but haven't found how to fill them with varied liquids...
That gif loop is tremendous... But anyway, this is cool. Glad to see that you guys aren't getting berated for doing work that you are enjoying.
Wouldn't recommend trying the current nightly. A LOT of items (eg. many food items) have yet to be moved to the new status system and will crash the game if used.
Just gotta point out: I thought the goggles were the character's eyes, and the actual eye pixel was it's mouth, small and concentrating. It looked like a long haired space biker
Snowball machine gun complete with accompanying perfectly looped gif? obligatory shut-up-and-take-my-money.jpg If you guys ever had competitors, you have long since left them in the star dust. Bravo.