FILES ----- system_objects.config behaviors\monsters\modular\actions\spawncompanions.behavior behaviors\monsters\modular\movement\turnapproach.behavior behaviors\npc\wander.behavior celestial\system\ships\shiphorizonright.png dungeons\glitch\glitchcastle\prisonroom10a-wires.png dungeons\glitch\glitchcastle\prisonroom9a-wires.png dungeons\glitch\glitchcastle\tower4a-wires.png dungeons\space\hazards\monstergroups\largegroup-high1.json dungeons\space\hazards\monstergroups\largegroup-high2.json dungeons\space\hazards\monstergroups\largegroup-high3.json dungeons\space\hazards\monstergroups\largegroup-high4.json dungeons\space\hazards\monstergroups\largegroup-high5.json dungeons\space\pirateship\backend1.json dungeons\space\pirateship\backend2.json dungeons\space\pirateship\backend3.json dungeons\space\pirateship\middle1a.json dungeons\space\pirateship\middle1b.json dungeons\space\pirateship\middle2a.json dungeons\space\pirateship\middle2b.json dungeons\space\pirateship\middle3a.json dungeons\space\pirateship\middle3b.json dungeons\space\pirateship\middle5a.json dungeons\space\pirateship\middle5b.json dungeons\space\pirateship\middle5c.json dungeons\space\pirateship\middle5d.json dungeons\space\pirateship\middle6a.json dungeons\space\pirateship\middle6b.json dungeons\space\pirateship\middle7a.json dungeons\space\pirateship\middle7b.json dungeons\space\playerstation\parts.config dungeons\space\playerstation\playerstation.dungeon dungeons\space\researchship\cockpit1.json dungeons\space\researchship\cockpit2.json dungeons\space\researchship\cockpit3.json dungeons\space\spacestation\spacestation_electronics.dungeon dungeons\space\spacestation\spacestation_food.dungeon dungeons\space\spacestation\spacestation_medical.dungeon dungeons\space\spacestation\spacestation_weapons.dungeon interface\cockpit\cockpit.config interface\cockpit\cockpit.lua interface\cockpit\cockpitview.lua interface\cockpit\nebula1.png interface\cockpit\positionmarker.png items\active\weapons\melee\abilities\spear\rocketspear\rocketspear.lua items\active\weapons\other\drillspear\drillcharge.lua [NEW] items\generic\mechparts\horn\mechhornlacucha.item [NEW] items\generic\mechparts\horn\mechhornlacucha.png [NEW] items\generic\mechparts\horn\mechhornsportshorn.item [NEW] items\generic\mechparts\horn\mechhornsportshorn.png [NEW] items\generic\mechparts\horn\mechhorntoy.item [NEW] items\generic\mechparts\horn\mechhorntoy.png [NEW] items\generic\mechparts\horn\mechhorntruck.item [NEW] items\generic\mechparts\horn\mechhorntruck.png items\tools\miningtools\beamaxe.beamaxe [NEW] items\tools\miningtools\beamaxe.lua items\tools\miningtools\beamaxeX.beamaxe leveling\levelingmultipliers.functions monsters\space\chiropterror\chiropterror.monstertype monsters\space\cosmostache\cosmostache.monstertype monsters\space\heavydrone\heavydrone.animation monsters\space\heavydrone\heavydrone.lua monsters\space\heavydrone\heavydrone.monstertype [NEW] monsters\space\heavydrone\body\body6.monsterpart [NEW] monsters\space\heavydrone\body\body6.png [NEW] monsters\space\heavydrone\body\body6front.png monsters\space\heavydrone\gun\gun1.png monsters\space\heavydrone\gun\gun1fullbright.png monsters\space\masteroid\masteroid.monstertype monsters\space\masteroidlarge\masteroidlarge.monstertype monsters\space\masteroidmid\masteroidmid.monstertype monsters\space\omnicannon\omnicannon.monstertype monsters\space\rustick\rustick.monstertype monsters\space\spinemine\spinemine.monstertype monsters\space\trifangle\trifangle.monstertype monsters\space\twigun\twigun.monstertype monsters\walkers\adultpoptop\motherpoptop.monstertype npcs\tenants\space\spaceguardtenant.npctype objects\generic\mechbeacon\mechbeacon.object objects\mission\redlight\redlight.object objects\ship\apexshiplight\apexshiplight.object objects\space\industrialcrate\industrialcrate.object objects\space\lunarlander\lunarlander.object [NEW] objects\space\solarpanel\default.frames [NEW] objects\space\solarpanel\lightsensor.animation [NEW] objects\space\solarpanel\lightsensor.lua [NEW] objects\space\solarpanel\solarpanel.object [NEW] objects\space\solarpanel\solarpanel.png [NEW] objects\space\solarpanel\solarpanelicon.png objects\space\spaceslideshow\spaceslideshow.object objects\space\telescope\telescope.object [NEW] particles\electriccloudpuff.particle [NEW] particles\mediumflame.particle [NEW] projectiles\explosions\clustermineexplosion\clustermineexplosion.config [NEW] projectiles\explosions\clustermineexplosion\clustermineexplosion.frames [NEW] projectiles\explosions\clustermineexplosion\clustermineexplosion.png [NEW] projectiles\explosions\clustermineexplosion\clustermineexplosion.projectile projectiles\mech\clustermine\clustermine.projectile projectiles\mech\energybeam\energybeam.projectile projectiles\mech\gravitysphere\gravitysphere.projectile projectiles\mech\mechplasmabullet\mechplasmabullet.projectile projectiles\mech\spikefistrocket\spikefistrocket.projectile quests\outpost\mechupgrade1.questtemplate recipes\mech\arm\mecharmbeamdrill.recipe recipes\mech\arm\mecharmbeamsniper.recipe recipes\mech\arm\mecharmcannon.recipe recipes\mech\arm\mecharmchainsaw.recipe recipes\mech\arm\mecharmclustermine.recipe recipes\mech\arm\mecharmdualrifle.recipe recipes\mech\arm\mecharmenergyblade.recipe recipes\mech\arm\mecharmenergyrifle.recipe recipes\mech\arm\mecharmgatling.recipe recipes\mech\arm\mecharmgravitymine.recipe recipes\mech\arm\mecharmguidedmissiles.recipe recipes\mech\arm\mecharmhomingmissile.recipe recipes\mech\arm\mecharmmultidrone.recipe recipes\mech\arm\mecharmplasmadrone.recipe recipes\mech\arm\mecharmshielddrone.recipe recipes\mech\arm\mecharmspikefist.recipe recipes\mech\arm\mecharmteslastream.recipe recipes\mech\arm\mecharmwobbleshot.recipe recipes\mech\body\mechbodyapex.recipe recipes\mech\body\mechbodyavian.recipe recipes\mech\body\mechbodycultist2.recipe recipes\mech\body\mechbodyexodus.recipe recipes\mech\body\mechbodyfloran.recipe recipes\mech\body\mechbodyglitch.recipe recipes\mech\body\mechbodyhero.recipe recipes\mech\body\mechbodyhuman.recipe recipes\mech\body\mechbodyhylotl.recipe recipes\mech\body\mechbodyiris.recipe recipes\mech\body\mechbodyminiknog.recipe recipes\mech\body\mechbodynovakid.recipe recipes\mech\body\mechbodyprotector.recipe recipes\mech\body\mechbodyshark.recipe recipes\mech\body\mechbodyskull.recipe recipes\mech\booster\mechboostergallant.recipe recipes\mech\booster\mechboosterhammer.recipe recipes\mech\booster\mechboostersleek.recipe recipes\mech\booster\mechboosterzero.recipe recipes\mech\legs\mechlegshermes.recipe recipes\mech\legs\mechlegsintrepid.recipe recipes\mech\legs\mechlegsronin.recipe recipes\mech\legs\mechlegssleek.recipe scripts\behavior.lua scripts\actions\flying.lua scripts\actions\movement.lua scripts\actions\tenant.lua [NEW] sfx\tech\mech_horn_lacucha.ogg [NEW] sfx\tech\mech_horn_sportshorn.ogg [NEW] sfx\tech\mech_horn_toy.ogg [NEW] sfx\tech\mech_horn_truck.ogg stats\spacemonster_primary.lua treasure\space.treasurepools vehicles\modularmech\mechparts_arm.config vehicles\modularmech\mechparts_horn.config vehicles\modularmech\modularmech.animation vehicles\modularmech\modularmech.lua vehicles\modularmech\modularmech.vehicle vehicles\modularmech\armscripts\base.lua vehicles\modularmech\armscripts\beamarm.lua vehicles\railplatform\compositerailplatform.vehicle vehicles\railplatform\railplatform.lua vehicles\railplatform\rustyrailplatform.vehicle vehicles\railplatform\solidrailplatform.vehicle vehicles\railtram\railtram.lua DIFFS ----- system_objects.config 5a6 > "threatLevel" : 1, 24,26c25 < "bookmarkIcon" : "spacestation", < < "hostile" : false --- > "bookmarkIcon" : "spacestation" 31a31 > "threatLevel" : 1, 50,52c50 < "bookmarkIcon" : "spacestation", < < "hostile" : false --- > "bookmarkIcon" : "spacestation" 57a56 > "threatLevel" : 1, 76,78c75 < "bookmarkIcon" : "spacestation", < < "hostile" : false --- > "bookmarkIcon" : "spacestation" 83a81 > "threatLevel" : 1, 102,104c100 < "bookmarkIcon" : "spacestation", < < "hostile" : false --- > "bookmarkIcon" : "spacestation" 109a106 > "threatLevel" : 1, 128,130c125 < "bookmarkIcon" : "spacestation", < < "hostile" : false --- > "bookmarkIcon" : "spacestation" 150,152c145 < "description" : "Whoever's flying this ship, we shouldn't get close without being prepared for a fight.", < < "hostile" : true --- > "description" : "Whoever's flying this ship, we shouldn't get close without being prepared for a fight." 171,173c164 < "description" : "Whoever's flying this ship, we shouldn't get close without being prepared for a fight.", < < "hostile" : true --- > "description" : "Whoever's flying this ship, we shouldn't get close without being prepared for a fight." 178a170 > "threatLevel" : 1, 192,194c184 < "description" : "This ship acknowledges our communications and her captain cordially invites us to pay a visit.", < < "hostile" : false --- > "description" : "This ship acknowledges our communications and her captain cordially invites us to pay a visit." 199a190 > "threatLevel" : 1, 213,215c204 < "description" : "This ship acknowledges our communications and her captain cordially invites us to pay a visit.", < < "hostile" : false --- > "description" : "This ship acknowledges our communications and her captain cordially invites us to pay a visit." 220a210 > "threatLevel" : 1, 234,236c224 < "description" : "This ship acknowledges our communications and her captain cordially invites us to pay a visit.", < < "hostile" : false --- > "description" : "This ship acknowledges our communications and her captain cordially invites us to pay a visit." 241a230 > "threatLevel" : 1, 255,257c244 < "description" : "This ship acknowledges our communications and her captain cordially invites us to pay a visit.", < < "hostile" : false --- > "description" : "This ship acknowledges our communications and her captain cordially invites us to pay a visit." 279,281c266 < "description" : "Celestial interference prevents a detailed scan, but there are anomalous energy readings here that warrant investigation.", < < "hostile" : true --- > "description" : "Celestial interference prevents a detailed scan, but there are anomalous energy readings here that warrant investigation." behaviors\monsters\modular\actions\spawncompanions.behavior 61,69c61,105 < "title": "listSize", < "type": "action", < "name": "listSize", < "parameters": { < "list": {"key": "companions"} < }, < "output": { < "number": "companionCount" < } --- > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "listSize", > "type": "action", > "name": "listSize", > "parameters": { > "list": {"key": "companions"} > }, > "output": { > "number": "companionCount" > } > }, > { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "listClear", > "type": "action", > "name": "listClear", > "parameters": {}, > "output": { > "list": "companions" > } > }, > { > "title": "listSize", > "type": "action", > "name": "listSize", > "parameters": { > "list": {"key": "companions"} > }, > "output": { > "number": "companionCount" > } > } > ] > } > ] 136,137c172,173 < "output" : { < "list" : "companions" --- > "output": { > "list": "companions" 159c195 < } --- > } \ No newline at end of file behaviors\monsters\modular\movement\turnapproach.behavior 114c114 < "state": {"value": ""}, --- > "state": {"value": ""}, 150c150 < "state": {"value": ""}, --- > "state": {"value": ""}, behaviors\npc\wander.behavior 9a10 > "/scripts/actions/math.lua", 136,137d136 < }, < "output": { 262,263c261 < }, < "output": {} --- > } 341,342c339 < }, < "output": {} --- > } 503c500 < "distance": {"value": 2} --- > "distance": {"value": 3} 523,580c520,526 < "title": "selector", < "type": "composite", < "name": "selector", < "parameters": {}, < "children": [ < { < "title": "", < "type": "action", < "name": "move", < "parameters": { < "direction": {"key": "direction"}, < "run": {"key": ""} < } < }, < { < "title": "failer", < "type": "decorator", < "name": "failer", < "parameters": {}, < "child": { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "lineTileCollision", < "type": "action", < "name": "lineTileCollision", < "parameters": { < "collisionType": {"value": ["Null", "Block", "Dynamic"]}, < "offset": {"value": ["direction", 0]}, < "position": {"key": "self"} < } < }, < { < "title": "reverseDirection", < "type": "action", < "name": "reverseDirection", < "parameters": { < "direction": {"key": "direction"} < }, < "output": { < "direction": "direction" < } < }, < { < "title": "faceDirection", < "type": "action", < "name": "faceDirection", < "parameters": { < "direction": {"key": "direction"} < } < } < ] < } < } < ] --- > "title": "", > "type": "action", > "name": "move", > "parameters": { > "direction": {"key": "direction"}, > "run": {"key": ""} > } 611a558,612 > "title": "succeeder", > "type": "decorator", > "name": "succeeder", > "parameters": {}, > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "multiply", > "type": "action", > "name": "multiply", > "parameters": { > "factor": {"value": 3}, > "number": {"key": "facingDirection"} > }, > "output": { > "result": "wallCheck" > } > }, > { > "title": "lineTileCollision", > "type": "action", > "name": "lineTileCollision", > "parameters": { > "collisionType": {"value": ["Null", "Block", "Dynamic"]}, > "offset": {"value": ["wallCheck", 0]}, > "position": {"key": "self"} > } > }, > { > "title": "reverseDirection", > "type": "action", > "name": "reverseDirection", > "parameters": { > "direction": {"key": "facingDirection"} > }, > "output": { > "direction": "back" > } > }, > { > "title": "faceDirection", > "type": "action", > "name": "faceDirection", > "parameters": { > "direction": {"key": "back"} > } > } > ] > } > }, > { 621c622 < } --- > } \ No newline at end of file dungeons\space\hazards\monstergroups\largegroup-high1.json [TMX file differences are left out for huge size.] dungeons\space\hazards\monstergroups\largegroup-high2.json [TMX file differences are left out for huge size.] dungeons\space\hazards\monstergroups\largegroup-high3.json [TMX file differences are left out for huge size.] dungeons\space\hazards\monstergroups\largegroup-high4.json [TMX file differences are left out for huge size.] dungeons\space\hazards\monstergroups\largegroup-high5.json [TMX file differences are left out for huge size.] dungeons\space\pirateship\backend1.json [TMX file differences are left out for huge size.] dungeons\space\pirateship\backend2.json [TMX file differences are left out for huge size.] dungeons\space\pirateship\backend3.json [TMX file differences are left out for huge size.] dungeons\space\pirateship\middle1a.json [TMX file differences are left out for huge size.] dungeons\space\pirateship\middle1b.json [TMX file differences are left out for huge size.] dungeons\space\pirateship\middle2a.json [TMX file differences are left out for huge size.] dungeons\space\pirateship\middle2b.json [TMX file differences are left out for huge size.] dungeons\space\pirateship\middle3a.json [TMX file differences are left out for huge size.] dungeons\space\pirateship\middle3b.json [TMX file differences are left out for huge size.] dungeons\space\pirateship\middle5a.json [TMX file differences are left out for huge size.] dungeons\space\pirateship\middle5b.json [TMX file differences are left out for huge size.] dungeons\space\pirateship\middle5c.json [TMX file differences are left out for huge size.] dungeons\space\pirateship\middle5d.json [TMX file differences are left out for huge size.] dungeons\space\pirateship\middle6a.json [TMX file differences are left out for huge size.] dungeons\space\pirateship\middle6b.json [TMX file differences are left out for huge size.] dungeons\space\pirateship\middle7a.json [TMX file differences are left out for huge size.] dungeons\space\pirateship\middle7b.json [TMX file differences are left out for huge size.] dungeons\space\playerstation\parts.config 476c476 < "description" : "A west-facing station entrace, suitable for landing mechs.", --- > "description" : "A west-facing station entrance, suitable for landing mechs.", 498c498 < "description" : "An east-facing station entrace, suitable for landing mechs.", --- > "description" : "An east-facing station entrance, suitable for landing mechs.", dungeons\space\playerstation\playerstation.dungeon 3a4 > "displayName" : "Personal Space Station", dungeons\space\researchship\cockpit1.json [TMX file differences are left out for huge size.] dungeons\space\researchship\cockpit2.json [TMX file differences are left out for huge size.] dungeons\space\researchship\cockpit3.json [TMX file differences are left out for huge size.] dungeons\space\spacestation\spacestation_electronics.dungeon 3a4 > "displayName" : "Electronics Station", 7c8 < "anchor" : [ --- > "anchor" : [ 304c305 < [ "doNotCombineWith", [ --- > [ "doNotCombineWith", [ 315c316 < [ "doNotCombineWith", [ --- > [ "doNotCombineWith", [ 326c327 < [ "doNotCombineWith", [ --- > [ "doNotCombineWith", [ 337c338 < [ "doNotCombineWith", [ --- > [ "doNotCombineWith", [ dungeons\space\spacestation\spacestation_food.dungeon 3a4 > "displayName" : "Food Distribution Station", 7c8 < "anchor" : [ --- > "anchor" : [ 304c305 < [ "doNotCombineWith", [ --- > [ "doNotCombineWith", [ 315c316 < [ "doNotCombineWith", [ --- > [ "doNotCombineWith", [ 326c327 < [ "doNotCombineWith", [ --- > [ "doNotCombineWith", [ 337c338 < [ "doNotCombineWith", [ --- > [ "doNotCombineWith", [ dungeons\space\spacestation\spacestation_medical.dungeon 3a4 > "displayName" : "Medical Research Station", 304c305 < [ "doNotCombineWith", [ --- > [ "doNotCombineWith", [ 315c316 < [ "doNotCombineWith", [ --- > [ "doNotCombineWith", [ 326c327 < [ "doNotCombineWith", [ --- > [ "doNotCombineWith", [ 337c338 < [ "doNotCombineWith", [ --- > [ "doNotCombineWith", [ dungeons\space\spacestation\spacestation_weapons.dungeon 3a4 > "displayName" : "Weapons Trade Station", 8c9 < "trade_weapons_bottom1a", "trade_weapons_bottom1b", "trade_weapons_top1a", "trade_weapons_top1b" --- > "trade_weapons_bottom1a", "trade_weapons_bottom1b", "trade_weapons_top1a", "trade_weapons_top1b" 304c305 < [ "doNotCombineWith", [ --- > [ "doNotCombineWith", [ 315c316 < [ "doNotCombineWith", [ --- > [ "doNotCombineWith", [ 326c327 < [ "doNotCombineWith", [ --- > [ "doNotCombineWith", [ 337c338 < [ "doNotCombineWith", [ --- > [ "doNotCombineWith", [ interface\cockpit\cockpit.config 14c14 < "captureKeyboardEvents" : true --- > "captureKeyboardEvents" : false 1392c1392 < "objectMinThreat" : 3, --- > "objectMinThreat" : 2, 1395c1395,1396 < "hostile" : [ --- > "available" : [ > [0, 213, 50], // ] 1407c1407,1408 < "hostile" : [ --- > "available" : [ > "None", // (View.settings.viewRadius) / View.systemCamera.scale --- > local zoomOut = planetDistance(planet, View:toSystem(View:mousePosition())) - 2 > (View.settings.viewRadius) / View.systemCamera.scale interface\cockpit\cockpitview.lua 512d511 < local hostile = false 516d514 < hostile = object.parameters.hostile or false 522,531c520,525 < if hostile then < local systemParameters = celestial.planetParameters(system) < local minThreat = config.getParameter("objectMinThreat") < local threatLevel = systemParameters.spaceThreatLevel or minThreat < widget.setFontColor("objectinfo.inner.threat", colors.hostile[threatLevel - minThreat + 1]) < widget.setText("objectinfo.inner.threat", string.format("%s%s", config.getParameter("threatTextPrefix"), threatText.hostile[threatLevel - minThreat + 1])) < else < widget.setFontColor("objectinfo.inner.threat", colors.friendly) < widget.setText("objectinfo.inner.threat", string.format("%s%s", config.getParameter("threatTextPrefix"), threatText.friendly)) < end --- > local systemParameters = celestial.planetParameters(system) > local minThreat = config.getParameter("objectMinThreat") > local threatLevel = celestial.objectTypeConfig(object.type).threatLevel or systemParameters.spaceThreatLevel > local index = math.max(1, threatLevel - minThreat + 1) > widget.setFontColor("objectinfo.inner.threat", colors.available[index]) > widget.setText("objectinfo.inner.threat", string.format("%s%s", config.getParameter("threatTextPrefix"), threatText.available[index])) items\active\weapons\melee\abilities\spear\rocketspear\rocketspear.lua 60c60,69 < mcontroller.controlApproachVelocityAlongAngle(boostAngle, self.boostSpeed, self.boostForce, true) --- > local vel = mcontroller.velocity() > local speed = vec2.mag(vel) > if speed <= self.boostSpeed then > mcontroller.controlApproachVelocity(vec2.withAngle(boostAngle, self.boostSpeed), self.boostForce) > else > local angleDiff = math.abs(util.angleDiff(boostAngle, vec2.angle(vel))) > local boostSpeedFactor = math.min(1, angleDiff / (math.pi * 0.5)) > local targetSpeed = boostSpeedFactor * self.boostSpeed + (1 - boostSpeedFactor) * speed > mcontroller.controlApproachVelocity(vec2.withAngle(boostAngle, targetSpeed), self.boostForce) > end items\active\weapons\other\drillspear\drillcharge.lua 55c55,64 < mcontroller.controlApproachVelocityAlongAngle(boostAngle, self.boostSpeed, self.boostForce, true) --- > local vel = mcontroller.velocity() > local speed = vec2.mag(vel) > if speed <= self.boostSpeed then > mcontroller.controlApproachVelocity(vec2.withAngle(boostAngle, self.boostSpeed), self.boostForce) > else > local angleDiff = math.abs(util.angleDiff(boostAngle, vec2.angle(vel))) > local boostSpeedFactor = math.min(1, angleDiff / (math.pi * 0.5)) > local targetSpeed = boostSpeedFactor * self.boostSpeed + (1 - boostSpeedFactor) * speed > mcontroller.controlApproachVelocity(vec2.withAngle(boostAngle, targetSpeed), self.boostForce) > end items\tools\miningtools\beamaxe.beamaxe 40c40,45 < "maxBeamLines" : 5 --- > "maxBeamLines" : 5, > > "scripts" : ["/items/tools/miningtools/beamaxe.lua"], > "scriptDelta" : 10, > > "notifyEntityTime" : 0.5 items\tools\miningtools\beamaxeX.beamaxe 41c41,46 < "maxBeamLines" : 5 --- > "maxBeamLines" : 5, > > "scripts" : ["/items/tools/miningtools/beamaxe.lua"], > "scriptDelta" : 10, > > "notifyEntityTime" : 0.5 leveling\levelingmultipliers.functions 135,138c135,138 < [4, 6.0], < [5, 8.0], < [6, 10.0], < [7, 14.0] --- > [4, 5.0], > [5, 7.0], > [6, 8.5], > [7, 12.0] 148c148 < [4, 7.00], --- > [4, 6.50], 150,151c150,151 < [6, 22.0], < [7, 40.0] --- > [6, 20.0], > [7, 36.0] monsters\space\chiropterror\chiropterror.monstertype 4c4 < "description" : "It's a chiropterror", --- > "description" : "Its internal nitrogen reactor is constantly overloading, causing it to trail explosive bolts.", 141a142,144 > "healthLevelFunction" : "spaceMonsterLevelHealthMultiplier", > "powerLevelFunction" : "spaceMonsterLevelPowerMultiplier", > 167c170 < "baseValue" : 100 --- > "baseValue" : 75 175a179,181 > "baseValue" : 1.0 > }, > "poisonStatusImmunity" : { monsters\space\cosmostache\cosmostache.monstertype 4c4 < "description" : "Weak against razors damage.", --- > "description" : "An irritable biomechanical lifeform. The bigger their moustaches, the older they are.", 97c97 < "airForce" : 28, --- > "airForce" : 15, 112a113,114 > "stunDamageSuppression" : 0.2, > 146a149,151 > "baseValue" : 1.0 > }, > "poisonStatusImmunity" : { monsters\space\heavydrone\heavydrone.animation 303a304,382 > { > "particle" : { > "type" : "animated", > "animation" : "/animations/puff2c/puff2c.animation", > "size" : 1, > "angularVelocity" : 35, > "fade" : 1, > "destructionTime" : 7, > "position" : [0, 0], > "initialVelocity" : [0, 0], > "finalVelocity" : [0, 0], > "approach" : [1, 1], > "timeToLive" : 0.4, > "layer" : "middle" > } > }, > { > "particle" : { > "type" : "animated", > "animation" : "/animations/puff2c/puff2c.animation", > "size" : 1, > "angularVelocity" : 35, > "fade" : 1, > "destructionTime" : 7, > "position" : [0, 0], > "initialVelocity" : [0, 0], > "finalVelocity" : [0, 0], > "approach" : [1, 1], > "timeToLive" : 0.4, > "layer" : "middle", > "variance" : { > "position" : [3, 3], > "initialVelocity" : [1, 1], > "rotation" : 180, > "size" : 0.25 > } > } > }, > { > "particle" : { > "type" : "animated", > "animation" : "/animations/puff2c/puff2c.animation", > "size" : 1, > "angularVelocity" : 35, > "fade" : 1, > "destructionTime" : 7, > "position" : [0, 0], > "initialVelocity" : [0, 0], > "finalVelocity" : [0, 0], > "approach" : [1, 1], > "timeToLive" : 0.4, > "layer" : "middle", > "variance" : { > "position" : [3, 3], > "initialVelocity" : [1, 1], > "rotation" : 180, > "size" : 0.25 > } > } > }, > > { "particle" : "mediumflame" }, > { "particle" : "mediumflame" }, > { "particle" : "mediumflame" }, > { "particle" : "mediumflame" }, > { "particle" : "mediumflame" }, > { "particle" : "mediumflame" }, > { "particle" : "mediumflame" }, > { "particle" : "mediumflame" }, > > { "particle" : "electriccloudpuff" }, > { "particle" : "electriccloudpuff" }, > { "particle" : "electriccloudpuff" }, > { "particle" : "electriccloudpuff" }, > { "particle" : "electriccloudpuff" }, > { "particle" : "electriccloudpuff" }, > { "particle" : "electriccloudpuff" }, > { "particle" : "electriccloudpuff" }, > monsters\space\heavydrone\heavydrone.lua 18a19 > self.outOfSight = {} 105c106,108 < table.insert(self.targets, entityId) --- > if entity.entityInSight(entityId) then > table.insert(self.targets, entityId) > end 109c112 < -- drop targets out of range, keep current target the top of the targets list --- > -- drop targets out of range and out of sight 114,115c117,119 < if not world.entityExists(self.target) or < world.magnitude(world.entityPosition(self.target), mcontroller.position()) > self.keepTargetInRange then --- > local target = self.target > if not world.entityExists(target) > or world.magnitude(world.entityPosition(target), mcontroller.position()) > self.keepTargetInRange then 118a123,137 > > if self.target and not entity.entityInSight(target) then > local timer = self.outOfSight[target] or 3.0 > timer = timer - dt > if timer <= 0 then > table.remove(self.targets, 1) > selftarget = nil > else > self.outOfSight[target] = timer > end > end > > if not self.target then > self.outOfSight[target] = nil > end 134a154,155 > else > mcontroller.controlApproachVelocity({0, 0}, mcontroller.baseParameters().airForce) 151,153d171 < if part == "frontgun" then < world.debugPoint(vec2.add(mcontroller.position(), center), "yellow") < end 181c199,205 < util.wait(cooldown - cooldownOffset, updateTargetPos) --- > util.wait(cooldown - cooldownOffset, function() > if self.target then > updateTargetPos() > else > return true > end > end) monsters\space\heavydrone\heavydrone.monstertype 4c4 < "description" : "-todo-", --- > "description" : "The pinnacle of automated defense technology. Their onboard AI is more cheerful than you may first assume.", 94a95,97 > "baseValue" : 1.0 > }, > "poisonStatusImmunity" : { monsters\space\masteroid\masteroid.monstertype 4c4 < "description" : "Don't get too close to this nastyroid", --- > "description" : "A boron-based creature that can split its body and consciousness when damaged.", 145a146,147 > > "stunDamageSuppression" : 0.2, monsters\space\masteroidlarge\masteroidlarge.monstertype 4c4 < "description" : "Looking at this abomination is gazing into a soulless void of infinite cosmic horror. Through the eyes shine a light that seems to emanate from a dimension out of both space and time. A thousand voices whisper in agony, 'Magh Ar Ang'lai Othap'.", --- > "description" : "A boron-based creature that can split its body and consciousness when damaged.", 109a110,111 > > "stunDamageSuppression" : 0.2, monsters\space\masteroidmid\masteroidmid.monstertype 4c4 < "description" : "This nastieroid drops a deuce when destroyed", --- > "description" : "A boron-based creature that can split its body and consciousness when damaged.", 109a110,111 > > "stunDamageSuppression" : 0.2, monsters\space\omnicannon\omnicannon.monstertype 4c4 < "description" : "An omni-directional point defence cannon", --- > "description" : "A hivemind of worm-like parasites interwoven into an old energy cannon.", 216a217,219 > "baseValue" : 1.0 > }, > "poisonStatusImmunity" : { monsters\space\rustick\rustick.monstertype 4c4 < "description" : "An omni-directional point defence cannon", --- > "description" : "If they don't make a connection with another Rustick, they can get quite lonely.", monsters\space\spinemine\spinemine.monstertype 4c4 < "description" : "Known to be the most explosive of vertebrates", --- > "description" : "Explodes whenever it meets someone new. No-one knows how they aren't extinct already.", 162a163,165 > "baseValue" : 1.0 > }, > "poisonStatusImmunity" : { monsters\space\trifangle\trifangle.monstertype 4c4 < "description" : "50% better than a bifangle.", --- > "description" : "An aggressive, pointy space machine. They do have individual personalities - they're just all uniquely angry.", 178a179,181 > "baseValue" : 1.0 > }, > "poisonStatusImmunity" : { monsters\space\twigun\twigun.monstertype 4c4 < "description" : "Most of the time its bullets never miss their mark", --- > "description" : "A mass-produced autonomous defense turret. It tries very hard not to miss.", 219a220,222 > "baseValue" : 1.0 > }, > "poisonStatusImmunity" : { monsters\walkers\adultpoptop\motherpoptop.monstertype 17a18,19 > "renderLayer" : "Monster+10", > npcs\tenants\space\spaceguardtenant.npctype 34c34 < { "name" : "pathfinderpants", "parameters" : { "colorIndex" : [0,1,3,5] } } --- > { "name" : "pathfinderlegs", "parameters" : { "colorIndex" : [0,1,3,5] } } objects\generic\mechbeacon\mechbeacon.object 56c56 < "interactive" : false, --- > // "interactive" : false, 70c70,77 < "uniqueId" : "mechbeacon" --- > "uniqueId" : "mechbeacon", > > "animationCustom" : { > "sounds" : { > "on" : [ "/sfx/objects/tinywallswitch.ogg" ], > "off" : [ "/sfx/objects/tinywallswitch.ogg" ] > } > } objects\mission\redlight\redlight.object 33,35d32 < < "soundEffect" : "/sfx/objects/fluorescent_light_quiet.ogg", < "soundEffectRangeMultiplier" : 0.5, objects\ship\apexshiplight\apexshiplight.object 32,34d31 < < "soundEffect" : "/sfx/objects/fluorescent_light_quiet.ogg", < "soundEffectRangeMultiplier" : 0.5, objects\space\industrialcrate\industrialcrate.object 7c7 < "description" : "A pressurised cargo crate, designed to withstand the harsh conditions of space travel.", --- > "description" : "A pressurised cargo crate, designed to withstand the conditions of space travel.", objects\space\lunarlander\lunarlander.object 4c4 < "rarity" : "Legendary", --- > "rarity" : "Rare", 9c9 < "price" : 900, --- > "price" : 1969, objects\space\spaceslideshow\spaceslideshow.object 3c3 < "colonyTags" : ["station","electronic"], --- > "colonyTags" : ["station","electronic","space"], 6c6 < "price" : 250, --- > "price" : 750, objects\space\telescope\telescope.object 3,4c3,4 < "colonyTags" : ["science"], < "rarity" : "Rare", --- > "colonyTags" : ["science","space"], > "rarity" : "Uncommon", 9c9 < "price" : 500, --- > "price" : 400, projectiles\mech\clustermine\clustermine.projectile 13c13 < "file" : "/projectiles/explosions/regularexplosion2/regularexplosionknockback.config" --- > "file" : "/projectiles/explosions/clustermineexplosion/clustermineexplosion.config" projectiles\mech\energybeam\energybeam.projectile 63a64 > "knockbackDirectional" : true, projectiles\mech\gravitysphere\gravitysphere.projectile 29,30c29,30 < "targetRadialVelocity" : -50, < "controlForce" : 200, --- > "targetRadialVelocity" : -15, > "controlForce" : 350, projectiles\mech\mechplasmabullet\mechplasmabullet.projectile 19c19,20 < "damageKind" : "plasmashotgun" --- > "damageKind" : "plasmashotgun", > "timeToLive" : 1.0 projectiles\mech\spikefistrocket\spikefistrocket.projectile 15c15 < "damageRepeatTimeout" : 0.5, --- > "damageRepeatTimeout" : 0.35, quests\outpost\mechupgrade1.questtemplate 5c5 < "text" : "I'm working on a shiny new mech weapon, but I need some help gathering some pieces. If you could ^green;go into space^white; and ^green;find me 10^orange; salvaged interface chips^white; and ^green;5 ^orange;salvaged power couplings^white;, I think that'll be enough to finish it!", --- > "text" : "I'm working on a shiny new mech weapon, but I need some help gathering some pieces. If you could ^green;go into space^white; and ^green;find me 5^orange; salvaged interface chips^white; and ^green;10 ^orange;salvaged power couplings^white;, I think that'll be enough to finish it!", recipes\mech\arm\mecharmbeamdrill.recipe 4,5c4,5 < { "item" : "salvagearm", "count" : 40 }, < { "item" : "salvagetier6", "count" : 20 } --- > { "item" : "salvagearm", "count" : 50 }, > { "item" : "salvagetier6", "count" : 25 } recipes\mech\arm\mecharmbeamsniper.recipe 4,5c4,5 < { "item" : "salvagearm", "count" : 40 }, < { "item" : "salvagetier6", "count" : 20 } --- > { "item" : "salvagearm", "count" : 50 }, > { "item" : "salvagetier6", "count" : 25 } recipes\mech\arm\mecharmcannon.recipe 4c4 < { "item" : "salvagearm", "count" : 20 }, --- > { "item" : "salvagearm", "count" : 25 }, recipes\mech\arm\mecharmchainsaw.recipe 4c4 < { "item" : "salvagearm", "count" : 20 }, --- > { "item" : "salvagearm", "count" : 25 }, recipes\mech\arm\mecharmclustermine.recipe 4c4 < { "item" : "salvagearm", "count" : 20 }, --- > { "item" : "salvagearm", "count" : 25 }, recipes\mech\arm\mecharmdualrifle.recipe 4,5c4,5 < { "item" : "salvagearm", "count" : 40 }, < { "item" : "salvagetier6", "count" : 20 } --- > { "item" : "salvagearm", "count" : 50 }, > { "item" : "salvagetier6", "count" : 25 } recipes\mech\arm\mecharmenergyblade.recipe 4,5c4,5 < { "item" : "salvagearm", "count" : 40 }, < { "item" : "salvagetier6", "count" : 20 } --- > { "item" : "salvagearm", "count" : 50 }, > { "item" : "salvagetier6", "count" : 25 } recipes\mech\arm\mecharmenergyrifle.recipe 4,5c4,5 < { "item" : "salvagearm", "count" : 40 }, < { "item" : "salvagetier6", "count" : 20 } --- > { "item" : "salvagearm", "count" : 50 }, > { "item" : "salvagetier6", "count" : 25 } recipes\mech\arm\mecharmgatling.recipe 4c4 < { "item" : "salvagearm", "count" : 20 }, --- > { "item" : "salvagearm", "count" : 25 }, recipes\mech\arm\mecharmgravitymine.recipe 4,5c4,5 < { "item" : "salvagearm", "count" : 40 }, < { "item" : "salvagetier6", "count" : 20 } --- > { "item" : "salvagearm", "count" : 50 }, > { "item" : "salvagetier6", "count" : 25 } recipes\mech\arm\mecharmguidedmissiles.recipe 4,5c4,5 < { "item" : "salvagearm", "count" : 40 }, < { "item" : "salvagetier6", "count" : 20 } --- > { "item" : "salvagearm", "count" : 50 }, > { "item" : "salvagetier6", "count" : 25 } recipes\mech\arm\mecharmhomingmissile.recipe 4c4 < { "item" : "salvagearm", "count" : 20 }, --- > { "item" : "salvagearm", "count" : 25 }, recipes\mech\arm\mecharmmultidrone.recipe 4,5c4,5 < { "item" : "salvagearm", "count" : 40 }, < { "item" : "salvagetier6", "count" : 20 } --- > { "item" : "salvagearm", "count" : 50 }, > { "item" : "salvagetier6", "count" : 25 } recipes\mech\arm\mecharmplasmadrone.recipe 4c4 < { "item" : "salvagearm", "count" : 20 }, --- > { "item" : "salvagearm", "count" : 25 }, recipes\mech\arm\mecharmshielddrone.recipe 4,5c4,5 < { "item" : "salvagearm", "count" : 40 }, < { "item" : "salvagetier6", "count" : 20 } --- > { "item" : "salvagearm", "count" : 50 }, > { "item" : "salvagetier6", "count" : 25 } recipes\mech\arm\mecharmspikefist.recipe 4,5c4,5 < { "item" : "salvagearm", "count" : 40 }, < { "item" : "salvagetier6", "count" : 20 } --- > { "item" : "salvagearm", "count" : 50 }, > { "item" : "salvagetier6", "count" : 25 } recipes\mech\arm\mecharmteslastream.recipe 4,5c4,5 < { "item" : "salvagearm", "count" : 40 }, < { "item" : "salvagetier6", "count" : 20 } --- > { "item" : "salvagearm", "count" : 50 }, > { "item" : "salvagetier6", "count" : 25 } recipes\mech\arm\mecharmwobbleshot.recipe 4c4 < { "item" : "salvagearm", "count" : 20 }, --- > { "item" : "salvagearm", "count" : 25 }, recipes\mech\body\mechbodyapex.recipe 4c4 < { "item" : "salvagebody", "count" : 20 }, --- > { "item" : "salvagebody", "count" : 25 }, recipes\mech\body\mechbodyavian.recipe 4c4 < { "item" : "salvagebody", "count" : 20 }, --- > { "item" : "salvagebody", "count" : 25 }, recipes\mech\body\mechbodycultist2.recipe 4,5c4,5 < { "item" : "salvagebody", "count" : 40 }, < { "item" : "salvagetier6", "count" : 20 } --- > { "item" : "salvagebody", "count" : 50 }, > { "item" : "salvagetier6", "count" : 25 } recipes\mech\body\mechbodyexodus.recipe 4,5c4,5 < { "item" : "salvagebody", "count" : 40 }, < { "item" : "salvagetier6", "count" : 20 } --- > { "item" : "salvagebody", "count" : 50 }, > { "item" : "salvagetier6", "count" : 25 } recipes\mech\body\mechbodyfloran.recipe 4c4 < { "item" : "salvagebody", "count" : 20 }, --- > { "item" : "salvagebody", "count" : 25 }, recipes\mech\body\mechbodyglitch.recipe 4c4 < { "item" : "salvagebody", "count" : 20 }, --- > { "item" : "salvagebody", "count" : 25 }, recipes\mech\body\mechbodyhero.recipe 4,5c4,5 < { "item" : "salvagebody", "count" : 40 }, < { "item" : "salvagetier6", "count" : 20 } --- > { "item" : "salvagebody", "count" : 50 }, > { "item" : "salvagetier6", "count" : 25 } recipes\mech\body\mechbodyhuman.recipe 4c4 < { "item" : "salvagebody", "count" : 20 }, --- > { "item" : "salvagebody", "count" : 25 }, recipes\mech\body\mechbodyhylotl.recipe 4c4 < { "item" : "salvagebody", "count" : 20 }, --- > { "item" : "salvagebody", "count" : 25 }, recipes\mech\body\mechbodyiris.recipe 4,5c4,5 < { "item" : "salvagebody", "count" : 40 }, < { "item" : "salvagetier6", "count" : 20 } --- > { "item" : "salvagebody", "count" : 50 }, > { "item" : "salvagetier6", "count" : 25 } recipes\mech\body\mechbodyminiknog.recipe 4,5c4,5 < { "item" : "salvagebody", "count" : 40 }, < { "item" : "salvagetier6", "count" : 20 } --- > { "item" : "salvagebody", "count" : 50 }, > { "item" : "salvagetier6", "count" : 25 } recipes\mech\body\mechbodynovakid.recipe 4c4 < { "item" : "salvagebody", "count" : 20 }, --- > { "item" : "salvagebody", "count" : 25 }, recipes\mech\body\mechbodyprotector.recipe 4,5c4,5 < { "item" : "salvagebody", "count" : 40 }, < { "item" : "salvagetier6", "count" : 20 } --- > { "item" : "salvagebody", "count" : 50 }, > { "item" : "salvagetier6", "count" : 25 } recipes\mech\body\mechbodyshark.recipe 4,5c4,5 < { "item" : "salvagebody", "count" : 40 }, < { "item" : "salvagetier6", "count" : 20 } --- > { "item" : "salvagebody", "count" : 50 }, > { "item" : "salvagetier6", "count" : 25 } recipes\mech\body\mechbodyskull.recipe 4,5c4,5 < { "item" : "salvagebody", "count" : 40 }, < { "item" : "salvagetier6", "count" : 20 } --- > { "item" : "salvagebody", "count" : 50 }, > { "item" : "salvagetier6", "count" : 25 } recipes\mech\booster\mechboostergallant.recipe 4,5c4,5 < { "item" : "salvagebooster", "count" : 40 }, < { "item" : "salvagetier6", "count" : 20 } --- > { "item" : "salvagebooster", "count" : 50 }, > { "item" : "salvagetier6", "count" : 25 } recipes\mech\booster\mechboosterhammer.recipe 4,5c4,5 < { "item" : "salvagebooster", "count" : 40 }, < { "item" : "salvagetier6", "count" : 20 } --- > { "item" : "salvagebooster", "count" : 50 }, > { "item" : "salvagetier6", "count" : 25 } recipes\mech\booster\mechboostersleek.recipe 4c4 < { "item" : "salvagebooster", "count" : 20 }, --- > { "item" : "salvagebooster", "count" : 30 }, recipes\mech\booster\mechboosterzero.recipe 4,5c4,5 < { "item" : "salvagebooster", "count" : 40 }, < { "item" : "salvagetier6", "count" : 20 } --- > { "item" : "salvagebooster", "count" : 50 }, > { "item" : "salvagetier6", "count" : 25 } recipes\mech\legs\mechlegshermes.recipe 4c4 < { "item" : "salvagelegs", "count" : 40 }, --- > { "item" : "salvagelegs", "count" : 50 }, recipes\mech\legs\mechlegsintrepid.recipe 4c4 < { "item" : "salvagelegs", "count" : 40 }, --- > { "item" : "salvagelegs", "count" : 50 }, recipes\mech\legs\mechlegsronin.recipe 4c4 < { "item" : "salvagelegs", "count" : 40 }, --- > { "item" : "salvagelegs", "count" : 50 }, recipes\mech\legs\mechlegssleek.recipe 4c4 < { "item" : "salvagelegs", "count" : 20 }, --- > { "item" : "salvagelegs", "count" : 30 }, scripts\behavior.lua 163c163 < if args[type] then --- > if args[type] ~= nil then scripts\actions\flying.lua 155c155,156 < local speed = ((1 - math.min(0.5, math.abs(diff / math.pi))) ^ 2) * mcontroller.baseParameters().flySpeed --- > local speedRatio = math.max(0.2, vec2.dot(vec2.norm(toTarget), vec2.withAngle(angle)) ^ 3) > local speed = speedRatio * mcontroller.baseParameters().flySpeed 156a158 > mcontroller.controlApproachVelocityAlongAngle(angle + math.pi * 0.5, 0, 50, false) 158c160 < coroutine.yield(nil, {angle = angle, direction = direction}) --- > coroutine.yield(nil, {angle = angle, direction = diff}) scripts\actions\movement.lua 259,261c259,263 < openDoorsAhead() < if args.closeDoors then < closeDoorsBehind() --- > if entity.entityType() == "npc" then > openDoorsAhead() > if args.closeDoors then > closeDoorsBehind() > end 446,448d447 < local direction = args.direction or -mcontroller.facingDirection() --Default to closing doors behind < < local position = mcontroller.position() 450,455c449,453 < local closed = true < if direction > 0 then < bounds[1] = bounds[3] < bounds[3] = bounds[3] + args.distance < else < bounds[3] = bounds[1] --- > bounds[2] = bounds[2] + 0.5 > bounds[4] = bounds[4] - 0.5 > local direction = args.direction or -mcontroller.facingDirection() > if direction < 0 then > bounds[3] = bounds[1] - 1 456a455,457 > else > bounds[1] = bounds[3] + 1 > bounds[3] = bounds[3] + args.distance 458,468c459,471 < local openDoors = world.entityQuery(rect.ll(bounds), rect.ur(bounds), { includedTypes = {"object"}, callScript = "hasCapability", callScriptArgs = { "openDoor" } }) < local npcs = world.entityQuery(rect.ll(bounds), rect.ur(bounds), { includedTypes = {"npc"}, withoutEntityId = entity.id() }) < util.debugRect(bounds, "blue") < < closed = (#openDoors == 0) < if not closed and config.getParameter("canOpenDoors", true) and #npcs == 0 then < for _, openDoorId in pairs(openDoors) do < local toDoor = world.distance(world.entityPosition(openDoorId), mcontroller.position()) < if toDoor[1] * direction > 0 then < world.callScriptedEntity(openDoorId, "closeDoor") < closed = true --- > if not world.rectTileCollision(bounds, {"Dynamic"}) then > local openDoorIds = world.entityQuery(rect.ll(bounds), rect.ur(bounds), { includedTypes = {"object"}, callScript = "hasCapability", callScriptArgs = { "openDoor" } }) > local closed = (#openDoorIds > 0) > if #openDoorIds == 0 then > return true > else > for _, openDoorId in pairs(openDoorIds) do > local doorBounds = objectBounds(openDoorId) > local npcs = world.entityQuery(rect.ll(doorBounds), rect.ur(doorBounds), {includedTypes = {"npc", "player"}}) > if #npcs == 0 then > world.sendEntityMessage(openDoorId, "closeDoor") > closed = true > end 470a474 > return closed 472,473c476 < < return closed --- > return true scripts\actions\tenant.lua 10c10 < return sayToEntity({ dialogType = "dialog.tenant.grumbles." .. grumble, entity = "self" }) --- > return sayToEntity({ dialogType = "dialog.tenant.grumbles." .. grumble, entity = entity.id(), tags = {} }) stats\spacemonster_primary.lua 11a12,14 > local reboundFactor = status.statusProperty("onHitReboundFactor", 0.65) > local minReboundSpeed = status.statusProperty("onHitMinReboundSpeed", 13) > 15,23c18,28 < local tarVel = vec2.mul(world.entityVelocity(notification.targetEntityId), 0.85) < local tarPos = world.entityPosition(notification.targetEntityId) < local relativeVelocity = vec2.sub(tarVel, mcontroller.velocity()) < local relativePosition = world.distance(mcontroller.position(), tarPos) < local angleDiff = util.angleDiff(vec2.angle(relativeVelocity), vec2.angle(relativePosition)) < if math.abs(angleDiff) < math.pi / 2 then < local normal = vec2.norm(relativePosition) < local bounceVelocity = vec2.mul(vec2.mul(normal, 2 * 0.75), vec2.dot(relativeVelocity, normal)) < mcontroller.setVelocity(vec2.add(mcontroller.velocity(), bounceVelocity)) --- > local entityVelocity = world.entityVelocity(notification.targetEntityId) > local entityPosition = world.entityPosition(notification.targetEntityId) > if entityVelocity and entityPosition then > local relativeVelocity = vec2.sub(vec2.mul(entityVelocity, 0.85), mcontroller.velocity()) > local relativePosition = world.distance(mcontroller.position(), entityPosition) > local angleDiff = util.angleDiff(vec2.angle(relativeVelocity), vec2.angle(relativePosition)) > if math.abs(angleDiff) < math.pi / 2 then > local reboundSpeed = math.max(minReboundSpeed, vec2.mag(relativeVelocity) * reboundFactor) > local bounceVelocity = vec2.add(relativeVelocity, vec2.withAngle(vec2.angle(relativePosition), reboundSpeed)) > mcontroller.setVelocity(vec2.add(mcontroller.velocity(), bounceVelocity)) > end treasure\space.treasurepools 6a7,14 > {"weight" : 1, "item" : "salvagearm"}, > {"weight" : 1, "item" : "salvagelegs"}, > {"weight" : 1, "item" : "salvagebody"}, > {"weight" : 1, "item" : "salvagebooster"} > ] > }], > [2.9, { > "pool" : [ 35a44,46 > "pool" : [] > }], > [2.9, { 126c137,141 < {"weight" : 1, "item" : "mechhorntrain"} --- > {"weight" : 1, "item" : "mechhorntrain"}, > {"weight" : 1, "item" : "mechhorntoy"}, > {"weight" : 1, "item" : "mechhornsportshorn"}, > {"weight" : 1, "item" : "mechhorntruck"}, > {"weight" : 1, "item" : "mechhornlacucha"} 151c166,167 < {"weight" : 1, "item" : "telescope"} --- > {"weight" : 1, "item" : "telescope"}, > {"weight" : 1, "item" : "solarpanel"} 156a173 > {"weight" : 1, "item" : "solarpanel"}, 215a233,251 > {"weight" : 0.10, "item" : ["slopedinsetpanel", 200]}, > {"weight" : 0.10, "item" : ["slopedhullpanel", 200]}, > {"weight" : 0.10, "item" : ["slopedscrappanel", 200]}, > {"weight" : 0.10, "item" : ["slopedrustypanel", 200]}, > {"weight" : 0.15, "item" : "techcard"}, > {"weight" : 0.10, "item" : "manipulatormodule"}, > {"weight" : 0.10, "item" : ["manipulatormodule", 2]}, > {"weight" : 0.10, "item" : "upgrademodule"}, > {"weight" : 0.05, "item" : "teleportercore"}, > {"weight" : 0.03, "pool" : "mechHorn"}, > {"weight" : 0.02, "pool" : "augments"}, > {"weight" : 0.02, "pool" : "spaceWeapon"}, > {"weight" : 0.01, "pool" : "spaceObject"}, > {"weight" : 0.01, "pool" : "spaceInstrument"}, > {"weight" : 0.01, "pool" : "spaceCostume"} > ] > }], > [2.9, { > "pool" : [ 232a269,289 > > "spaceTrash" : [ > [0, { > "poolRounds" : [ > [0.3, 0], > [0.4, 1], > [0.3, 2] > ], > "pool" : [ > {"weight" : 1, "item" : ["slopedinsetpanel", 25]}, > {"weight" : 1, "item" : ["slopedhullpanel", 25]}, > {"weight" : 1, "item" : ["slopedscrappanel", 25]}, > {"weight" : 1, "item" : ["slopedrustypanel", 25]}, > {"weight" : 1, "item" : ["meteoriterock", 25]}, > {"weight" : 1, "item" : ["moonrock", 25]}, > {"weight" : 1, "item" : ["moondust", 25]}, > {"weight" : 3, "item" : "soggypaper"}, > {"weight" : 3, "pool" : "money"} > ] > }] > ], vehicles\modularmech\mechparts_arm.config 160c160 < "fireTime" : 0.6, --- > "fireTime" : 0.58, 194c194 < "fireTime" : 1.2, --- > "fireTime" : 1.0, 198c198 < "power" : 320 --- > "power" : 300 234c234 < "projectileInaccuracy" : 0.065 --- > "projectileInaccuracy" : 0.05 318c318 < "projectileInaccuracy" : 0.05 --- > "projectileInaccuracy" : 0.04 405c405 < "projectileInaccuracy" : 0.035 --- > "projectileInaccuracy" : 0.03 565c565,567 < "power" : 27.5 --- > "power" : 32, > "knockback" : 3, > "knockbackDirectional" : true 620a623 > "lockAim" : true, 635c638 < "damage" : 350, --- > "damage" : 200, 637a641 > "damageRepeatGroup" : "Beam", 745a750 > "lockAim" : false, 760c765 < "damage" : 25, --- > "damage" : 28, 762a768 > "damageRepeatGroup" : "Beam", 880c886 < "power" : 45 --- > "power" : 40 961c967 < "cooldownTime" : 0.9, --- > "cooldownTime" : 1.0, 1011c1017 < "power" : 40 --- > "power" : 50 1015,1016c1021,1022 < "projectileSpread" : 0.05, < "projectileInaccuracy" : 0.05, --- > "projectileSpread" : 0.04, > "projectileInaccuracy" : 0.04, 1018c1024 < "projectileRandomSpeed" : [15, 25] --- > "projectileRandomSpeed" : [20, 28] 1058c1064 < "power" : 5 --- > "power" : 7 1100c1106,1107 < "power" : 300, --- > "speed" : 80, > "power" : 285, 1105c1112 < "controlForce" : 100, --- > "controlForce" : 120, 1157c1164,1165 < "power" : 200 --- > "power" : 220, > "knockback" : 25 1227c1235,1236 < "power" : 200 --- > "power" : 250, > "knockback" : 30 1401c1410 < "duration" : 20, --- > "duration" : 120, 1455c1464 < "duration" : 20, --- > "duration" : 120, 1458c1467 < "flatMaxHealth" : { "baseValue" : 1000 } --- > "flatMaxHealth" : { "baseValue" : 1500 } 1464c1473 < "fireTime" : 0.25, --- > "fireTime" : 0.3, 1469,1470c1478,1479 < "speed" : 60, < "power" : 25 --- > "speed" : 70, > "power" : 20 1528c1537 < "duration" : 20, --- > "duration" : 120, vehicles\modularmech\mechparts_horn.config 49a50,77 > }, > "toy" : { > "animationCustom" : { > "sounds" : { > "horn" : ["/sfx/tech/mech_horn_toy.ogg"] > } > } > }, > "sportshorn" : { > "animationCustom" : { > "sounds" : { > "horn" : ["/sfx/tech/mech_horn_sportshorn.ogg"] > } > } > }, > "lacucha" : { > "animationCustom" : { > "sounds" : { > "horn" : ["/sfx/tech/mech_horn_lacucha.ogg"] > } > } > }, > "truck" : { > "animationCustom" : { > "sounds" : { > "horn" : ["/sfx/tech/mech_horn_truck.ogg"] > } > } vehicles\modularmech\modularmech.animation 1226a1227,1238 > }, > "activeLight" : { > "active" : false, > "pointLight" : false, > "position" : [0, 0], > "color" : [100, 100, 100] > }, > "boostLight" : { > "active" : false, > "pointLight" : false, > "position" : [0, 0], > "color" : [60, 120, 155] vehicles\modularmech\modularmech.lua 432a433 > animator.setLightActive("activeLight", true) 437a439,440 > animator.setLightActive("activeLight", false) > animator.setLightActive("boostLight", false) 578a582 > animator.setLightActive("boostLight", false) 591a596 > animator.setLightActive("boostLight", true) vehicles\modularmech\modularmech.vehicle 116a117 > "cursorOverride" : "/cursors/reticle0.cursor", vehicles\modularmech\armscripts\base.lua 16a17 > newArm.aimLocked = false 52c53 < if aimPosition and facingDirection then --- > if aimPosition and facingDirection and not self.aimLocked then vehicles\modularmech\armscripts\beamarm.lua 15c15 < if self.fireTriggered then --- > if self.isFiring then 62a63,64 > self.aimLocked = self.lockAim > 80a83,84 > > self.aimLocked = false vehicles\railplatform\compositerailplatform.vehicle 43,44c43 < "popItem" : "compositerailplatform", < "popOnInteract" : true --- > "popItem" : "compositerailplatform" vehicles\railplatform\railplatform.lua 3a4,9 > message.setHandler("positionTileDamaged", function() > if not world.isTileProtected(mcontroller.position()) then > popVehicle() > end > end) > 12,17c18 < self.popOnInteract = config.getParameter("popOnInteract", true) < updateInteractive() < end < < function onInteraction(args) < popVehicle() --- > vehicle.setInteractive(false) 31d31 < updateInteractive() 43,46d42 < end < < function updateInteractive() < vehicle.setInteractive(self.popOnInteract and not world.isTileProtected(mcontroller.position())) vehicles\railplatform\rustyrailplatform.vehicle 40,41c40 < "popItem" : "rustyrailplatform", < "popOnInteract" : true --- > "popItem" : "rustyrailplatform" vehicles\railplatform\solidrailplatform.vehicle 41,44c41 < }, < < // "popItem" : "compositerailplatform", < "popOnInteract" : false --- > } vehicles\railtram\railtram.lua 3a4,9 > message.setHandler("positionTileDamaged", function() > if not world.isTileProtected(mcontroller.position()) then > popVehicle() > end > end) >