FILES ----- dungeon_worlds.config player.config [NEW] animations\sparkles\sparkleloop1.animation [NEW] animations\sparkles\sparkleloop2.animation [NEW] animations\sparkles\sparkleloop3.animation [NEW] animations\sparkles\sparkleloop4.animation [NEW] animations\sparkles\sparkleloop5.animation [NEW] animations\sparkles\sparkleloop6.animation behaviors\monsters\boss\dragonboss\dragonboss.behavior [NEW] behaviors\monsters\boss\dragonboss\dragonbreath.behavior behaviors\monsters\mission\cultistballista.behavior behaviors\npc\unique\cultistinvader.behavior dungeons\floran\floranhutvillage\floranburriedhut1.json dungeons\floran\floranhutvillage\floranburriedhut2.json dungeons\floran\floranhutvillage\floranburriedhut3.json dungeons\floran\floranhutvillage\floranflat2.json dungeons\floran\floranhutvillage\floranhut10.json dungeons\floran\floranhutvillage\floranhut11.json dungeons\floran\floranhutvillage\floranhut12.json dungeons\floran\floranhutvillage\floranhut13.json dungeons\floran\floranhutvillage\floranhut2.json dungeons\floran\floranhutvillage\floranhutvillage.dungeon [NEW] dungeons\floran\floranhutvillage\floranhutvillageendhillleft1.json [NEW] dungeons\floran\floranhutvillage\floranhutvillageendhillright1.json dungeons\floran\floranhutvillage\floranhutvillageendleft1.json dungeons\floran\floranhutvillage\floranhutvillageendright1.json dungeons\missions\glitchmissions\glitchmission1.json dungeons\other\arena\arena2.json interface\windowconfig\playerinventory.config items\active\effects\chain.lua items\active\effects\laserbeam.lua items\active\weapons\weapon.lua items\active\weapons\arena\bruisersword\bruisersword.activeitem items\active\weapons\arena\firesword\firesword.activeitem items\active\weapons\arena\flamethrowerblade\flamethrowerblade.activeitem items\active\weapons\arena\hunterrifle\hunterrifle.activeitem items\active\weapons\arena\hunterrifle\hunterrifle.png items\active\weapons\melee\axe\axenames.config items\active\weapons\melee\broadsword\astrosabredeluxe.activeitem items\active\weapons\melee\broadsword\astrosabredeluxe.animation items\active\weapons\melee\broadsword\swordnames.config items\active\weapons\melee\broadsword\timepierce.activeitem items\active\weapons\melee\cultistshortsword\cultistshortswordnames.config items\active\weapons\melee\dagger\daggernames.config items\active\weapons\melee\hammer\hammernames.config items\active\weapons\melee\pickaxe\energypickaxe.animation items\active\weapons\melee\shortsword\daggernames.config items\active\weapons\melee\shortsword\shortswordnames.config items\active\weapons\melee\spear\spearnames.config [NEW] items\active\weapons\other\exmachina\exmachina.activeitem [NEW] items\active\weapons\other\exmachina\exmachina.png [NEW] items\active\weapons\other\exmachina\exmachinaunlit.png [NEW] items\active\weapons\other\fireworkgun\fireworkgun.activeitem [NEW] items\active\weapons\other\fireworkgun\fireworkgun.animation [NEW] items\active\weapons\other\fireworkgun\fireworkgun.frames [NEW] items\active\weapons\other\fireworkgun\fireworkgun.png [NEW] items\active\weapons\other\flamingdemonsword\default.frames [NEW] items\active\weapons\other\flamingdemonsword\flamingdemonsword.activeitem [NEW] items\active\weapons\other\flamingdemonsword\flamingdemonsword.animation [NEW] items\active\weapons\other\flamingdemonsword\flamingdemonsword.png [NEW] items\active\weapons\other\flamingdemonsword\flamingdemonswordfullbright.png items\active\weapons\other\magnorbs\magnorbs.activeitem items\active\weapons\other\magnorbs\magnorbs.animation items\active\weapons\other\magnorbs\magnorbs.lua [NEW] items\active\weapons\other\magnorbs\orb.frames items\active\weapons\other\magnorbs\orb.png items\active\weapons\ranged\altabilities\sparkles\sparkles.altability items\active\weapons\ranged\assaultrifle\assaultnames.config items\active\weapons\ranged\deadbeatassaultrifle\deadbeatassaultnames.config items\active\weapons\ranged\grenadelauncher\glaunchernames.config items\active\weapons\ranged\machinepistol\mpistolnames.config items\active\weapons\ranged\pistol\pistolnames.config items\active\weapons\ranged\rocketlauncher\rlaunchernames.config items\active\weapons\ranged\shotgun\shotgunnames.config items\active\weapons\ranged\sniperrifle\snipernames.config items\active\weapons\whip\energywhip.activeitem items\active\weapons\whip\ropewhip.activeitem items\active\weapons\whip\vinewhip.activeitem [NEW] monsters\flyers\tentaclegnat\body.monsterpart [NEW] monsters\flyers\tentaclegnat\tentaclegnat.animation [NEW] monsters\flyers\tentaclegnat\tentaclegnat.frames [NEW] monsters\flyers\tentaclegnat\tentaclegnat.monstertype [NEW] monsters\flyers\tentaclegnat\tentaclegnat.png [NEW] monsters\flyers\tentaclegnatslow\body.monsterpart [NEW] monsters\flyers\tentaclegnatslow\tentaclegnatslow.animation [NEW] monsters\flyers\tentaclegnatslow\tentaclegnatslow.frames [NEW] monsters\flyers\tentaclegnatslow\tentaclegnatslow.monstertype [NEW] monsters\flyers\tentaclegnatslow\tentaclegnatslow.png [NEW] monsters\flyers\tentaclegnatslower\body.monsterpart [NEW] monsters\flyers\tentaclegnatslower\tentaclegnatslower.animation [NEW] monsters\flyers\tentaclegnatslower\tentaclegnatslower.frames [NEW] monsters\flyers\tentaclegnatslower\tentaclegnatslower.monstertype [NEW] monsters\flyers\tentaclegnatslower\tentaclegnatslower.png [NEW] monsters\generated\skills\ranged\tentacleshotattack.monsterskill [NEW] monsters\ghosts\tentacleghost\body.monsterpart [NEW] monsters\ghosts\tentacleghost\tentacleghost.animation [NEW] monsters\ghosts\tentacleghost\tentacleghost.frames [NEW] monsters\ghosts\tentacleghost\tentacleghost.monstertype [NEW] monsters\ghosts\tentacleghost\tentacleghost.png npcs\arena\arenaadvisor2.npctype npcs\arena\arenabuiser.npctype npcs\arena\arenahunter.npctype npcs\arena\arenashooter.npctype npcs\mission\cultistknight.npctype objects\apex\apexfridge\apexfridge.object objects\biome\scorchedcity\scorchedcitybrokenfridge\scorchedcitybrokenfridge.object objects\biome\scorchedcity\scorchedcityfridge\scorchedcityfridge.object [NEW] objects\generic\minifridge\minifridge.object [NEW] objects\generic\minifridge\minifridgeicon.png [NEW] objects\generic\minifridge\minifridgeleft.frames [NEW] objects\generic\minifridge\minifridgeleft.png [NEW] objects\generic\minifridge\minifridgeright.frames [NEW] objects\generic\minifridge\minifridgeright.png objects\human\fridge\fridge.object objects\outpost\outpostfridge\outpostfridge.object objects\wired\logic\timer.object objects\wired\logic\timer1s.object objects\wired\logic\timer2s.object objects\wired\logic\timer3s.object objects\wired\logic\timer4s.object objects\wired\logic\timer5s.object objects\wired\persistentswitch\persistentswitch.object [NEW] particles\energyblade.particle [NEW] particles\eneryblade2.particle projectiles\activeitems\magnorb\magnorb.png projectiles\activeitems\magnorb\magnorb.projectile projectiles\explosions\regularexplosion\ballistaexplosion.config projectiles\guns\arrows\harpoon\harpoon.projectile [NEW] projectiles\guns\bullets\huntingbullet\huntingbullet.frames [NEW] projectiles\guns\bullets\huntingbullet\huntingbullet.png [NEW] projectiles\guns\bullets\huntingbullet\huntingbullet.projectile [NEW] projectiles\guns\bullets\huntingbullet\icon.png projectiles\npcs\dragonprojectile\dragonprojectile.projectile [NEW] projectiles\npcs\firelasershot\firelasershot.frames [NEW] projectiles\npcs\firelasershot\firelasershot.png [NEW] projectiles\npcs\firelasershot\firelasershot.projectile [NEW] projectiles\npcs\firelasershot\icon.png projectiles\throwable\firework\firework.png projectiles\throwable\fireworkgun\fireworkgun.png projectiles\throwable\fireworkgun\fireworkgun.projectile projectiles\throwable\fireworkgun2\fireworkgun2.projectile projectiles\throwable\molotovflame\molotovflamemonster.projectile quests\outpost\floranarena1.questtemplate quests\outpost\floranarena2.questtemplate quests\outpost\floranarena3.questtemplate [NEW] recipes\furniture1\storage\minifridge.recipe [NEW] sfx\gun\fireworkgun_blast1.ogg [NEW] sfx\gun\fireworkgun_blast2.ogg [NEW] sfx\gun\fireworkgun_large1.ogg [NEW] sfx\gun\fireworkgun_large2.ogg [NEW] sfx\gun\fireworkgun_large3.ogg [NEW] sfx\gun\fireworkgun_small1.ogg [NEW] sfx\gun\fireworkgun_small2.ogg [NEW] sfx\melee\energywhip_impact1.ogg [NEW] sfx\melee\energywhip_impact2.ogg [NEW] sfx\melee\energywhip_impact3.ogg [NEW] sfx\melee\energywhip_swing1.ogg [NEW] sfx\melee\energywhip_swing2.ogg [NEW] sfx\melee\energywhip_swing3.ogg [NEW] sfx\melee\whip_impact.ogg [NEW] sfx\melee\whip_impact1.ogg [NEW] sfx\melee\whip_impact2.ogg [NEW] sfx\melee\whip_impact3.ogg [NEW] sfx\melee\whip_swing1.ogg [NEW] sfx\melee\whip_swing2.ogg [NEW] sfx\melee\whip_swing3.ogg stagehands\mission\glitchmissionmanager.lua stagehands\mission\glitchmissionmanager.stagehand [NEW] stats\effects\timeslow\timeslow.animation [NEW] stats\effects\timeslow\timeslow.lua [NEW] stats\effects\timeslow\timeslow.statuseffect DIFFS ----- dungeon_worlds.config 57c57 < "musicTrack" : "/music/i-was-the-sun.ogg", --- > "musicTrack" : "/music/gravitational-collapse.ogg", 70c70 < "musicTrack" : "/music/i-was-the-sun.ogg", --- > "musicTrack" : "/music/event-horizon.ogg", player.config 113a114 > { "item" : "minifridge" }, behaviors\monsters\boss\dragonboss\dragonboss.behavior 2a3 > "description": "", 9,11c10 < "/scripts/actions/sensor.lua", < "/scripts/actions/math.lua", < "/scripts/actions/projectiles.lua" --- > "/scripts/actions/sensor.lua" 167c166 < "fail": -1, --- > "fail": 1, 237a237,297 > "title": "parallel", > "type": "composite", > "name": "parallel", > "parameters": { > "fail": 1, > "success": -1 > }, > "children": [ > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "entityInSight", > "type": "action", > "name": "entityInSight", > "parameters": { > "entity": "target" > } > } > }, > { > "title": "controlApproachVelocity", > "type": "action", > "name": "controlApproachVelocity", > "parameters": { > "velocity": [ > 0, > 0 > ], > "force": 20 > } > }, > { > "title": "repeater", > "type": "decorator", > "name": "repeater", > "parameters": { > "maxLoops": -1, > "untilSuccess": false > }, > "child": { > "title": "dragonboss-breath", > "type": "module", > "name": "dragonboss-breath", > "parameters": { > "headRotationCenter": [ > 5, > 5 > ], > "projectileSpawnOffset": [ > 3, > -6 > ] > } > } > } > ] > }, > { 392,398c452,479 < "title": "Reset", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "faceEntity", --- > "title": "dragonboss-breath", > "type": "module", > "name": "dragonboss-breath", > "parameters": { > "headRotationCenter": [ > 5, > 5 > ], > "projectileSpawnOffset": [ > 3, > -6 > ] > } > } > }, > { > "title": "Reset", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "entityInRange", 400c481 < "name": "faceEntity", --- > "name": "entityInRange", 402c483,485 < "entity": "target" --- > "entity": "target", > "xRange": 15, > "position": "self" 404,432c487,505 < }, < { < "title": "parallel", < "type": "composite", < "name": "parallel", < "parameters": { < "fail": -1, < "success": -1 < }, < "children": [ < { < "title": "controlApproachVelocity", < "type": "action", < "name": "controlApproachVelocity", < "parameters": { < "velocity": [ < 0, < 0 < ], < "force": 20 < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 0.5 < } --- > } > }, > { > "title": "parallel", > "type": "composite", > "name": "parallel", > "parameters": { > "fail": -1, > "success": 1 > }, > "children": [ > { > "title": "entityInRange", > "type": "action", > "name": "entityInRange", > "parameters": { > "entity": "target", > "xRange": 10, > "position": "self" 434,442d506 < ] < }, < { < "title": "entityDirection", < "type": "action", < "name": "entityDirection", < "parameters": { < "entity": "self", < "target": "target" 444,537c508,515 < "output": { < "vector": "aimVector" < } < }, < { < "title": "Reset", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "vecMultiply", < "type": "action", < "name": "vecMultiply", < "parameters": { < "first": "aimVector", < "second": [ < "facingDirection", < 1 < ] < }, < "output": { < "vector": "facingVector" < } < }, < { < "title": "vecAngle", < "type": "action", < "name": "vecAngle", < "parameters": { < "vector": "facingVector" < }, < "output": { < "angle": "targetAngle" < } < }, < { < "title": "multiply", < "type": "action", < "name": "multiply", < "parameters": { < "number": "targetAngle", < "factor": 0.35 < }, < "output": { < "result": "targetAngle" < } < } < ] < }, < { < "title": "Reset", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "vecRotate", < "type": "action", < "name": "vecRotate", < "parameters": { < "vector": "", < "angle": "targetAngle" < }, < "output": { < "vector": "projectileOffset" < } < }, < { < "title": "vecAdd", < "type": "action", < "name": "vecAdd", < "parameters": { < "first": "projectileOffset", < "second": "" < }, < "output": { < "vector": "projectileOffset" < } < }, < { < "title": "vecMultiply", < "type": "action", < "name": "vecMultiply", < "parameters": { < "first": "projectileOffset", < "second": [ < "facingDirection", < 1 < ] < }, < "output": { < "vector": "projectileOffset" < } --- > { > "title": "flyToPosition", > "type": "action", > "name": "flyToPosition", > "parameters": { > "position": "hoverPosition", > "tolerance": 1, > "speed": 10 539,620d516 < ] < }, < { < "title": "Reset", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "resetTransformationGroup", < "type": "action", < "name": "resetTransformationGroup", < "parameters": { < "transformationGroup": "head" < } < }, < { < "title": "vecMultiply", < "type": "action", < "name": "vecMultiply", < "parameters": { < "first": "", < "second": [ < "facingDirection", < 1 < ] < }, < "output": { < "vector": "headRotationCenter" < } < }, < { < "title": "rotateTransformationGroup", < "type": "action", < "name": "rotateTransformationGroup", < "parameters": { < "angle": "targetAngle", < "transformationGroup": "head", < "rotationCenter": "" < } < } < ] < }, < { < "title": "setAnimationState", < "type": "action", < "name": "setAnimationState", < "parameters": { < "state": "attack", < "type": "attack" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 0.5 < } < }, < { < "title": "spawnProjectile", < "type": "action", < "name": "spawnProjectile", < "parameters": { < "aimVector": "aimVector", < "offset": "projectileOffset", < "position": "self", < "power": 10, < "projectileConfig": {}, < "projectileType": "dragonprojectile", < "scalePower": true, < "sourceEntity": "self", < "trackSource": false < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 0.5 622,659c518,520 < }, < { < "title": "setAnimationState", < "type": "action", < "name": "setAnimationState", < "parameters": { < "state": "winddown", < "type": "attack" < } < }, < { < "title": "resetTransformationGroup", < "type": "action", < "name": "resetTransformationGroup", < "parameters": { < "transformationGroup": "head" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 0.5 < } < } < ] < } < }, < { < "title": "flyToPosition", < "type": "action", < "name": "flyToPosition", < "parameters": { < "position": "hoverPosition", < "tolerance": 1, < "speed": 10 < } --- > ] > } > ] behaviors\monsters\mission\cultistballista.behavior 2a3 > "description": "", 15d15 < "fireAngle": 0.5, 24c24,26 < "rotationSpeed": 0.05 --- > "rotationSpeed": 0.1, > "minFireAngle": 0.25, > "maxFireAngle": 0.9 404a407,418 > "title": "random", > "type": "action", > "name": "random", > "parameters": { > "max": "", > "min": "" > }, > "output": { > "number": "fireAngle" > } > }, > { 416c430 < "second": "" --- > "second": "fireAngle" 645a660,709 > ] > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 1 > }, > "output": { > "ratio": "" > } > }, > { > "title": "succeeder", > "type": "decorator", > "name": "succeeder", > "parameters": {}, > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "loadUniqueEntity", > "type": "action", > "name": "loadUniqueEntity", > "parameters": { > "uniqueId": "missionmanager" > }, > "output": { > "entity": "manager" > } > }, > { > "title": "sendEntityMessage", > "type": "action", > "name": "sendEntityMessage", > "parameters": { > "entity": "manager", > "message": "wallAttacked" > } > } behaviors\npc\unique\cultistinvader.behavior 6a7,8 > "/scripts/actions/notification.lua", > "/npcs/bmain.lua", 46a49,113 > { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "receivedNotification", > "type": "action", > "name": "receivedNotification", > "parameters": { > "type": "missionEnded" > } > }, > { > "title": "logInfo", > "type": "action", > "name": "logInfo", > "parameters": { > "text": "missionEnded triggered" > } > }, > { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "setDeathParticleBurst", > "type": "action", > "name": "setDeathParticleBurst", > "parameters": {} > }, > { > "title": "addEphemeralEffect", > "type": "action", > "name": "addEphemeralEffect", > "parameters": { > "name": "beamout" > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 0.7 > } > }, > { > "title": "suicide", > "type": "action", > "name": "suicide", > "parameters": {} > } > ] > } > ] > }, dungeons\floran\floranhutvillage\floranburriedhut1.json [TMX file differences are left out for huge size.] dungeons\floran\floranhutvillage\floranburriedhut2.json [TMX file differences are left out for huge size.] dungeons\floran\floranhutvillage\floranburriedhut3.json [TMX file differences are left out for huge size.] dungeons\floran\floranhutvillage\floranflat2.json [TMX file differences are left out for huge size.] dungeons\floran\floranhutvillage\floranhut10.json [TMX file differences are left out for huge size.] dungeons\floran\floranhutvillage\floranhut11.json [TMX file differences are left out for huge size.] dungeons\floran\floranhutvillage\floranhut12.json [TMX file differences are left out for huge size.] dungeons\floran\floranhutvillage\floranhut13.json [TMX file differences are left out for huge size.] dungeons\floran\floranhutvillage\floranhut2.json [TMX file differences are left out for huge size.] dungeons\floran\floranhutvillage\floranhutvillage.dungeon 7c7 < "anchor" : [ "floranhutvillageendleft1", "floranhutvillageendright1" ], --- > "anchor" : [ "floranflat2" ], 10c10 < "maxParts" : 25, --- > "maxParts" : 15, 18c18 < [ "maxSpawnCount", [6] ], --- > [ "maxSpawnCount", [3] ], 27c27 < [ "maxSpawnCount", [6] ], --- > [ "maxSpawnCount", [3] ], 36c36 < [ "maxSpawnCount", [6] ], --- > [ "maxSpawnCount", [3] ], 45c45 < [ "maxSpawnCount", [6] ], --- > [ "maxSpawnCount", [3] ], 54c54 < [ "maxSpawnCount", [6] ], --- > [ "maxSpawnCount", [3] ], 63c63 < [ "maxSpawnCount", [6] ], --- > [ "maxSpawnCount", [3] ], 72c72 < [ "maxSpawnCount", [6] ], --- > [ "maxSpawnCount", [3] ], 81c81 < [ "maxSpawnCount", [6] ], --- > [ "maxSpawnCount", [3] ], 90c90 < [ "maxSpawnCount", [6] ], --- > [ "maxSpawnCount", [3] ], 99c99 < [ "maxSpawnCount", [6] ], --- > [ "maxSpawnCount", [3] ], 108c108 < [ "maxSpawnCount", [6] ], --- > [ "maxSpawnCount", [3] ], 117c117 < [ "maxSpawnCount", [6] ], --- > [ "maxSpawnCount", [3] ], 182a183,198 > "chance" : 0 > }, > { > "name" : "floranhutvillageendhillleft1", > "rules" : [ > [ "ignorePartMaximumRule" ] > ], > "def" : [ "tmx", [ "floranhutvillageendhillleft1.json" ] ], > "chance" : 0 > }, > { > "name" : "floranhutvillageendhillright1", > "rules" : [ > [ "ignorePartMaximumRule" ] > ], > "def" : [ "tmx", [ "floranhutvillageendhillright1.json" ] ], dungeons\floran\floranhutvillage\floranhutvillageendleft1.json [TMX file differences are left out for huge size.] dungeons\floran\floranhutvillage\floranhutvillageendright1.json [TMX file differences are left out for huge size.] dungeons\missions\glitchmissions\glitchmission1.json [TMX file differences are left out for huge size.] dungeons\other\arena\arena2.json [TMX file differences are left out for huge size.] interface\windowconfig\playerinventory.config 14,15c14 < // Filters for item types/tags allowed in the different item bags < "itemSlotFilters" : { --- > "tabConfig" : { 16a16,19 > "tabButtonData" : "showMainGrid", > "itemGrid" : "mainItemGrid", > "newItemMarker" : "newGeneralItems", > 20a24,27 > "tabButtonData" : "showTileGrid", > "itemGrid" : "tileItemGrid", > "newItemMarker" : "newTileItems", > 23a31,34 > "tabButtonData" : "showObjectGrid", > "itemGrid" : "objectItemGrid", > "newItemMarker" : "newObjectItems", > 26a38,41 > "tabButtonData" : "showReagentGrid", > "itemGrid" : "reagentItemGrid", > "newItemMarker" : "newReagentItems", > items\active\effects\chain.lua 37c37 < image = image .. "?scale=1.0=" .. util.round(taperFactor, 5) --- > image = image .. "?scale=1.0=" .. util.round(taperFactor, 1) items\active\effects\laserbeam.lua 13a14,20 > local laserColor = activeItemAnimation.animationParameter("laserColor") or {255,255,255,255} > local maxLength = activeItemAnimation.animationParameter("laserLength") or 30 > local parts = activeItemAnimation.animationParameter("segments") or 1 > > if #laserColor == 3 then > laserColor[4] = 255 > end 20c27 < local lineEnd = vec2.mul(aimVector, 30) --- > local lineEnd = vec2.mul(aimVector, maxLength) 48c55,71 < return {{{line = {{0,0}, lineEnd}, width = 1, color = {255,255,255}, position = muzzlePosition, fullbright = true}}} --- > local segments = {} > > local unit = vec2.norm(lineEnd) > for i = 0, parts-1 do > if i * maxLength / parts >= vec2.mag(lineEnd) then > break > end > local startPosition = vec2.mul(unit, maxLength * i / parts) > local endPosition = vec2.mul(unit, math.min(vec2.mag(lineEnd), maxLength * (i+1) / parts)) > > local segmentColor = copy(laserColor) > segmentColor[4] = segmentColor[4] * (1 - i/parts) > > table.insert(segments, {{line = {startPosition, endPosition}, width = 1, color = segmentColor, position = muzzlePosition, fullbright = true}}) > end > > return segments items\active\weapons\weapon.lua 200a201,204 > for stateType, state in pairs(stance.animationStates or {}) do > animator.setAnimationState(stateType, state) > end > items\active\weapons\arena\bruisersword\bruisersword.activeitem 4c4 < "level" : 6, --- > "level" : 4, 6c6 < "rarity" : "common", --- > "rarity" : "rare", 36c36 < "baseDps" : 21.5, --- > "baseDps" : 13.5, items\active\weapons\arena\firesword\firesword.activeitem 82c82 < "altAbilitySource" : "/items/active/weapons/melee/altabilities/broadsword/spinslash/superspinslash.altability", --- > "altAbilitySource" : "/items/active/weapons/melee/altabilities/broadsword/travelingslash/travelingslash.altability", items\active\weapons\arena\flamethrowerblade\flamethrowerblade.activeitem 24,26c24,26 < "fireStart" : [ "/sfx/gun/flamethrower_start.ogg" ], < "fireLoop" : [ "/sfx/gun/flamethrower_loop.ogg" ], < "fireEnd" : [ "/sfx/gun/flamethrower_stop.ogg" ] --- > "fireStart" : [ "/sfx/melee/swing_spear_fire1.ogg", "/sfx/melee/swing_spear_fire2.ogg", "/sfx/melee/swing_spear_fire3.ogg" ], > "fireLoop" : [ "/sfx/melee/rocketspear_loop_fire.ogg" ], > "fireEnd" : [ "/sfx/melee/rocketspear_stop_fire.ogg" ] items\active\weapons\arena\hunterrifle\hunterrifle.activeitem 6,8c6,8 < "rarity" : "common", < "description" : "This gun is unbelievably powerful.", < "shortdescription" : "Hunter's Rifle", --- > "rarity" : "legendary", > "description" : "Harvests meat and other goods from monsters.", > "shortdescription" : "Hunting Rifle", 28c28 < "baseOffset" : [0.5, 0.0], --- > "baseOffset" : [0.9, 0.0], 47c47 < "projectileType" : "standardbullet", --- > "projectileType" : "huntingbullet", 49c49,51 < "knockback" : 20 --- > "knockback" : 0, > "power" : 5.0, > "speed" : 150 80,81d81 < < "altAbilitySource" : "/items/active/weapons/ranged/altabilities/piercingshot/piercingshot.altability", items\active\weapons\melee\axe\axenames.config 7c7 < [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Broken", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], --- > [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], items\active\weapons\melee\broadsword\astrosabredeluxe.activeitem 46,47c46,47 < "armRotation" : -90, < "weaponRotation" : -10, --- > "armRotation" : 0, > "weaponRotation" : 20, items\active\weapons\melee\broadsword\astrosabredeluxe.animation 86,141c86,248 < { "particle" : "shadowsmoke"}, < { "particle" : "sparkle5"}, < { "particle" : "sparkle3"} < ] < }, < "fireswoosh" : { < "active" : false, < "transformationGroups" : ["swoosh"], < "emissionRate" : 50, < "offsetRegion" : [0.75, 0.0, 4.25, 5.0], < "particles" : [ < { "particle" : "fireswoosh1"}, < { "particle" : "fireswoosh2"}, < { "particle" : "fireswoosh3"}, < { "particle" : "fireswoosh1"}, < { "particle" : "fireswoosh2"}, < { "particle" : "fireswoosh3"} < ] < }, < "electricswoosh" : { < "active" : false, < "transformationGroups" : ["swoosh"], < "emissionRate" : 50, < "offsetRegion" : [0.75, 0.0, 4.25, 5.0], < "particles" : [ < { "particle" : "electricswoosh1"}, < { "particle" : "electricswoosh2"}, < { "particle" : "electricswoosh2"} < ] < }, < "poisonswoosh" : { < "active" : false, < "transformationGroups" : ["swoosh"], < "emissionRate" : 50, < "offsetRegion" : [0.75, 0.0, 4.25, 5.0], < "particles" : [ < { "particle" : "poisonswoosh1"}, < { "particle" : "poisonswoosh2"}, < { "particle" : "fireswoosh2"}, < { "particle" : "poisonswoosh1"}, < { "particle" : "poisonswoosh2"}, < { "particle" : "fireswoosh2"} < ] < }, < "iceswoosh" : { < "active" : false, < "transformationGroups" : ["swoosh"], < "emissionRate" : 50, < "offsetRegion" : [0.75, 0.0, 4.25, 5.0], < "particles" : [ < { "particle" : "iceswoosh1"}, < { "particle" : "iceswoosh2"}, < { "particle" : "iceswoosh3"}, < { "particle" : "iceswoosh1"}, < { "particle" : "iceswoosh2"}, < { "particle" : "iceswoosh3"} --- > { "particle" : "shadowsmoke"} > ] > }, > "idleparticles1" : { > "active" : true, > "transformationGroups" : ["weapon"], > "emissionRate" : 10, > "emissionRateVariance" : 5, > "offsetRegion" : [0.0, 4.5, 0.0, 3.75], > "particles" : [ > { > "particle" : { > "type" : "animated", > "animation" : "/animations/sparkles/sparkleloop6.animation", > "position" : [0, 0], > "initialVelocity" : [0, 0], > "finalVelocity" : [0, -2.0], > "approach" : [0, 50], > "fade" : 0.5, > "destructionAction" : "shrink", > "destructionTime" : 1, > "size" : 1.0, > "timeToLive" : 1, > "variance" : { > "initialVelocity" : [1, 0] > } > } > } > ] > }, > "idleparticles2" : { > "active" : true, > "transformationGroups" : ["weapon"], > "emissionRate" : 10, > "emissionRateVariance" : 5, > "offsetRegion" : [0.0, 3.75, 0.0, 3.0], > "particles" : [ > { > "particle" : { > "type" : "animated", > "animation" : "/animations/sparkles/sparkleloop6.animation", > "position" : [0, 0], > "initialVelocity" : [0, 0], > "finalVelocity" : [0, -2.0], > "approach" : [0, 50], > "fade" : 0.5, > "destructionAction" : "shrink", > "destructionTime" : 1, > "size" : 1.0, > "timeToLive" : 1, > "variance" : { > "initialVelocity" : [1, 0] > } > } > } > ] > }, > "idleparticles3" : { > "active" : true, > "transformationGroups" : ["weapon"], > "emissionRate" : 10, > "emissionRateVariance" : 5, > "offsetRegion" : [0.0, 3.0, 0.0, 2.25], > "particles" : [ > { > "particle" : { > "type" : "animated", > "animation" : "/animations/sparkles/sparkleloop5.animation", > "position" : [0, 0], > "initialVelocity" : [0, 0], > "finalVelocity" : [0, -2.0], > "approach" : [0, 50], > "fade" : 0.5, > "destructionAction" : "shrink", > "destructionTime" : 1, > "size" : 1.0, > "timeToLive" : 1, > "variance" : { > "initialVelocity" : [1, 0] > } > } > } > ] > }, > "idleparticles4" : { > "active" : true, > "transformationGroups" : ["weapon"], > "emissionRate" : 10, > "emissionRateVariance" : 5, > "offsetRegion" : [0.0, 2.25, 0.0, 1.5], > "particles" : [ > { > "particle" : { > "type" : "animated", > "animation" : "/animations/sparkles/sparkleloop4.animation", > "position" : [0, 0], > "initialVelocity" : [0, 0], > "finalVelocity" : [0, -2.0], > "approach" : [0, 50], > "fade" : 0.5, > "destructionAction" : "shrink", > "destructionTime" : 1, > "size" : 1.0, > "timeToLive" : 1, > "variance" : { > "initialVelocity" : [1, 0] > } > } > } > ] > }, > "idleparticles5" : { > "active" : true, > "transformationGroups" : ["weapon"], > "emissionRate" : 10, > "emissionRateVariance" : 5, > "offsetRegion" : [0.0, 1.5, 0.0, 0.75], > "particles" : [ > { > "particle" : { > "type" : "animated", > "animation" : "/animations/sparkles/sparkleloop2.animation", > "position" : [0, 0], > "initialVelocity" : [0, 0], > "finalVelocity" : [0, -2.0], > "approach" : [0, 50], > "fade" : 0.5, > "destructionAction" : "shrink", > "destructionTime" : 1, > "size" : 1.0, > "timeToLive" : 1, > "variance" : { > "initialVelocity" : [1, 0] > } > } > } > ] > }, > "idleparticles6" : { > "active" : true, > "transformationGroups" : ["weapon"], > "emissionRate" : 10, > "emissionRateVariance" : 5, > "offsetRegion" : [0.0, 0.75, 0.0, 0.0], > "particles" : [ > { > "particle" : { > "type" : "animated", > "animation" : "/animations/sparkles/sparkleloop3.animation", > "position" : [0, 0], > "initialVelocity" : [0, 0], > "finalVelocity" : [0, -2.0], > "approach" : [0, 50], > "fade" : 0.5, > "destructionAction" : "shrink", > "destructionTime" : 1, > "size" : 1.0, > "timeToLive" : 1, > "variance" : { > "initialVelocity" : [1, 0] > } > } > } items\active\weapons\melee\broadsword\swordnames.config 7c7 < [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Broken", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], --- > [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], items\active\weapons\melee\broadsword\timepierce.activeitem 39c39 < "statusEffects" : [ ], --- > "statusEffects" : [ "timeslow" ], items\active\weapons\melee\cultistshortsword\cultistshortswordnames.config 7c7 < [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Broken", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], --- > [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], items\active\weapons\melee\dagger\daggernames.config 7c7 < [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Broken", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], --- > [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], items\active\weapons\melee\hammer\hammernames.config 7c7 < [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Broken", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], --- > [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], items\active\weapons\melee\pickaxe\energypickaxe.animation 18c18 < "cycle" : 0.5, --- > "cycle" : 0.4, 22c22,24 < "lightsOn" : ["blade"] --- > "lightsOn" : ["blade"], > "immediateSound" : "/sfx/melee/elemental_aura_activate.ogg", > "particleEmittersOn" : ["activeparticles"] 27c29 < "cycle" : 0.5, --- > "cycle" : 0.4, 30c32,34 < "lightsOn" : ["blade"] --- > "lightsOn" : ["blade"], > "persistentSound" : "/sfx/melee/elemental_aura.ogg", > "particleEmittersOn" : ["activeparticles"] 35c39 < "cycle" : 0.5, --- > "cycle" : 0.4, 39c43,45 < "lightsOn" : ["blade"] --- > "lightsOn" : ["blade"], > "immediateSound" : "/sfx/melee/elemental_aura_deactivate2.ogg", > "particleEmittersOff" : ["activeparticles"] 99a106,120 > "particleEmitters" : { > "activeparticles" : { > "active" : false, > "transformationGroups" : ["weapon"], > "emissionRate" : 3, > "offsetRegion" : [0.25, 3.5, 0.40, 0], > "particles" : [ > { "particle" : "energyblade"}, > { "particle" : "energyblade"}, > { "particle" : "energyblade2"}, > { "particle" : "energyblade2"} > ] > } > }, > 109c130 < "fire" : [ "/sfx/tools/pickaxe_hit.ogg" ], --- > "fire" : [ "/sfx/melee/charge_full_swing2.ogg" ], items\active\weapons\melee\shortsword\daggernames.config 7c7 < [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Broken", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], --- > [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], items\active\weapons\melee\shortsword\shortswordnames.config 7c7 < [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Broken", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], --- > [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], items\active\weapons\melee\spear\spearnames.config 7c7 < [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Broken", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], --- > [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], items\active\weapons\other\magnorbs\magnorbs.activeitem 35c35 < "pickupDistance" : 1.0, --- > "pickupDistance" : 1.5, 37a38 > 39a41,43 > "shieldKnockback" : 10, > "shieldEnergyCost" : 80, > 42a47,52 > "twoHanded" : false, > "allowRotate" : true, > "allowFlip" : true > }, > "shield" : { > "armRotation" : 0, items\active\weapons\other\magnorbs\magnorbs.animation 8c8 < "default" : "visible", --- > "default" : "orb", 10,11c10,22 < "visible" : {}, < "hidden" : {} --- > "orb" : {}, > "hidden" : {}, > "shield" : { > "cycle" : 0.2, > "frames" : 2, > "mode" : "end" > }, > "unshield" : { > "cycle" : 0.15, > "frames" : 1, > "mode" : "transition", > "transition" : "orb" > } 15c26 < "default" : "visible", --- > "default" : "orb", 17,18c28,40 < "visible" : {}, < "hidden" : {} --- > "orb" : {}, > "hidden" : {}, > "shield" : { > "cycle" : 0.2, > "frames" : 2, > "mode" : "end" > }, > "unshield" : { > "cycle" : 0.15, > "frames" : 1, > "mode" : "transition", > "transition" : "orb" > } 22c44 < "default" : "visible", --- > "default" : "orb", 24,25c46,58 < "visible" : {}, < "hidden" : {} --- > "orb" : {}, > "hidden" : {}, > "shield" : { > "cycle" : 0.2, > "frames" : 2, > "mode" : "end" > }, > "unshield" : { > "cycle" : 0.15, > "frames" : 1, > "mode" : "transition", > "transition" : "orb" > } 37c70,71 < "image" : ":" --- > "image" : ":", > "shieldPoly" : [ [-0.25, -1.75], [-0.25, 2.0], [0.75, 1.0], [0.75, -0.75] ] 45c79 < "transformationGroups" : [ "weapon", "orbs", "orb1" ] --- > "transformationGroups" : [ "weapon", "orb1", "orbs" ] 50c84,89 < "visible" : { --- > "orb" : { > "properties" : { > "image" : ":orb" > } > }, > "shield" : { 52c91,96 < "image" : "" --- > "image" : ":shield." > } > }, > "unshield" : { > "properties" : { > "image" : ":shield.1" 63c107 < "transformationGroups" : [ "weapon", "orbs", "orb2" ] --- > "transformationGroups" : [ "weapon", "orb2", "orbs" ] 68c112 < "visible" : { --- > "orb" : { 70c114,124 < "image" : "" --- > "image" : ":orb" > } > }, > "shield" : { > "properties" : { > "image" : ":shield." > } > }, > "unshield" : { > "properties" : { > "image" : ":shield.1" 81c135 < "transformationGroups" : [ "weapon", "orbs", "orb3" ] --- > "transformationGroups" : [ "weapon", "orb3", "orbs" ] 86c140,150 < "visible" : { --- > "orb" : { > "properties" : { > "image" : ":orb" > } > }, > "shield" : { > "properties" : { > "image" : ":shield." > } > }, > "unshield" : { 88c152 < "image" : "" --- > "image" : ":shield.1" 99,102c163,174 < "orbs" : {}, < "orb1" : {}, < "orb2" : {}, < "orb3" : {} --- > "orbs" : { > "interpolated" : true > }, > "orb1" : { > "interpolated" : true > }, > "orb2" : { > "interpolated" : true > }, > "orb3" : { > "interpolated" : true > } 106c178,183 < "fire" : [ "/sfx/melee/swing_dagger.ogg" ] --- > "fire" : [ "/sfx/melee/swing_dagger.ogg" ], > "shieldOn" : ["/sfx/melee/sword_guard.ogg"], > "shieldLoop" : ["/sfx/tech/tech_hoverloop.ogg"], > "shieldOff" : [], > "shieldBlock" : ["/sfx/melee/shield_block_metal.ogg"], > "shieldBreak" : ["/sfx/melee/shield_break_metal.ogg"] items\active\weapons\other\magnorbs\magnorbs.lua 2a3 > require "/scripts/status.lua" 5a7,8 > activeItem.setCursor("/cursors/reticle0.cursor") > 14c17 < storage.projectileIds = {false, false, false} --- > storage.projectileIds = storage.projectileIds or {false, false, false} 16a20,21 > self.orbitRate = config.getParameter("orbitRate", 1) * -2 * math.pi > 19c24,45 < animator.resetTransformationGroup("orb"..i) --- > animator.setAnimationState("orb"..i, storage.projectileIds[i] == false and "orb" or "hidden") > end > setOrbPosition(1) > > self.shieldActive = false > self.shieldTransformTimer = 0 > self.shieldTransformTime = config.getParameter("shieldTransformTime", 0.1) > self.shieldPoly = animator.partPoly("glove", "shieldPoly") > self.shieldEnergyCost = config.getParameter("shieldEnergyCost", 50) > self.shieldHealth = 1000 > self.shieldKnockback = config.getParameter("shieldKnockback", 0) > if self.shieldKnockback > 0 then > self.knockbackDamageSource = { > poly = self.shieldPoly, > damage = 0, > damageType = "Knockback", > sourceEntity = activeItem.ownerEntityId(), > team = activeItem.ownerTeam(), > knockback = self.shieldKnockback, > rayCheck = true, > damageRepeatTimeout = 0.5 > } 21,23d46 < self.orbitRate = config.getParameter("orbitRate", 1) * -2 * math.pi < animator.rotateTransformationGroup("orb2", math.pi * (2 / 3)) < animator.rotateTransformationGroup("orb3", math.pi * (4 / 3)) 36c59,72 < if fireMode == "primary" and self.lastFireMode ~= "primary" and self.cooldownTimer == 0 then --- > if fireMode == "alt" and availableOrbCount() == 3 and not status.resourceLocked("energy") and status.resourcePositive("shieldStamina") then > if self.shieldTransformTimer == 0 then > animator.resetTransformationGroup("orbs") > end > setOrbAnimationState("shield") > self.shieldTransformTimer = math.min(self.shieldTransformTime, self.shieldTransformTimer + dt) > else > self.shieldTransformTimer = math.max(0, self.shieldTransformTimer - dt) > if self.shieldTransformTimer > 0 then > setOrbAnimationState("unshield") > end > end > > if self.shieldTransformTimer == 0 and fireMode == "primary" and self.lastFireMode ~= "primary" and self.cooldownTimer == 0 then 44,45c80,86 < updateAim() < updateHand() --- > if self.shieldActive then > if not status.resourcePositive("shieldStamina") or not status.overConsumeResource("energy", self.shieldEnergyCost * dt) then > deactivateShield() > else > self.damageListener:update() > end > end 47,51c88,107 < animator.resetTransformationGroup("orbs") < animator.rotateTransformationGroup("orbs", -self.armAngle or 0) < for i = 1, 3 do < animator.rotateTransformationGroup("orb"..i, self.orbitRate * dt) < animator.setAnimationState("orb"..i, storage.projectileIds[i] == false and "visible" or "hidden") --- > if self.shieldTransformTimer > 0 then > if not self.shieldActive then > activateShield() > end > > local transformRatio = self.shieldTransformTimer / self.shieldTransformTime > setOrbPosition(1 - transformRatio * 0.7, transformRatio * 0.75) > animator.resetTransformationGroup("orbs") > animator.translateTransformationGroup("orbs", {transformRatio * -1.5, 0}) > else > if self.shieldActive then > deactivateShield() > end > > animator.resetTransformationGroup("orbs") > animator.rotateTransformationGroup("orbs", -self.armAngle or 0) > for i = 1, 3 do > animator.rotateTransformationGroup("orb"..i, self.orbitRate * dt) > animator.setAnimationState("orb"..i, storage.projectileIds[i] == false and "orb" or "hidden") > end 52a109,111 > > updateAim() > updateHand() 56c115,118 < --- > activeItem.setItemShieldPolys() > activeItem.setItemDamageSources() > status.clearPersistentEffects("magnorbShield") > animator.stopAllSounds("shieldLoop") 66a129,138 > function availableOrbCount() > local available = 0 > for i = 1, 3 do > if not storage.projectileIds[i] then > available = available + 1 > end > end > return available > end > 77c149,150 < if self.aimDirection < 0 then params.processing = "?flipx" end --- > local firePos = firePosition(orbIndex) > if world.lineCollision(mcontroller.position(), firePos) then return end 105a179,225 > end > end > > function activateShield() > self.shieldActive = true > animator.resetTransformationGroup("orbs") > animator.playSound("shieldOn") > animator.playSound("shieldLoop", -1) > setStance("shield") > activeItem.setItemShieldPolys({self.shieldPoly}) > activeItem.setItemDamageSources({self.knockbackDamageSource}) > status.setPersistentEffects("magnorbShield", {{stat = "shieldHealth", amount = self.shieldHealth}}) > self.damageListener = damageListener("damageTaken", function(notifications) > for _,notification in pairs(notifications) do > if notification.hitType == "ShieldHit" then > if status.resourcePositive("shieldStamina") then > animator.playSound("shieldBlock") > else > animator.playSound("shieldBreak") > end > return > end > end > end) > end > > function deactivateShield() > self.shieldActive = false > animator.playSound("shieldOff") > animator.stopAllSounds("shieldLoop") > setStance("idle") > activeItem.setItemShieldPolys() > activeItem.setItemDamageSources() > status.clearPersistentEffects("magnorbShield") > end > > function setOrbPosition(spaceFactor, distance) > for i = 1, 3 do > animator.resetTransformationGroup("orb"..i) > animator.translateTransformationGroup("orb"..i, {distance or 0, 0}) > animator.rotateTransformationGroup("orb"..i, 2 * math.pi * spaceFactor * ((i - 2) / 3)) > end > end > > function setOrbAnimationState(newState) > for i = 1, 3 do > animator.setAnimationState("orb"..i, newState) items\active\weapons\ranged\altabilities\sparkles\sparkles.altability 5c5 < "altFire" : [ "/sfx/projectiles/flame_burn.ogg" ] --- > "altFire" : [ "/sfx/gun/fireworkgun_small1.ogg" ] items\active\weapons\ranged\assaultrifle\assaultnames.config 7,8c7,8 < [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Broken", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], < [ { "mode" : "alts" }, "rifle", "gun", "sprayer", "stopper", "sprinkler", "blaster", "howitzer", "pitcher", "tosser", "phaser", "wrecker", "destroyer", "ruin", "sinner", "slayer", "plugger", "enforcer", "trigger", "pump", "expeller", "barrage", "terror" ] --- > [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], > [ { "mode" : "alts" }, "rifle", "gun", "sprayer", "stopper", "sprinkler", "blaster", "howitzer", "pitcher", "tosser", "phaser", "wrecker", "destroyer", "ruin", "sinner", "slayer", "plugger", "enforcer", "trigger", "pump", "expeller", "barrage", "terror" ] items\active\weapons\ranged\deadbeatassaultrifle\deadbeatassaultnames.config 7,8c7,8 < [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Broken", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], < [ { "mode" : "alts" }, "rifle", "gun", "sprayer", "stopper", "sprinkler", "blaster", "howitzer", "pitcher", "tosser", "phaser", "wrecker", "destroyer", "ruin", "sinner", "slayer", "plugger", "enforcer", "trigger", "pump", "expeller", "barrage", "terror" ] --- > [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], > [ { "mode" : "alts" }, "rifle", "gun", "sprayer", "stopper", "sprinkler", "blaster", "howitzer", "pitcher", "tosser", "phaser", "wrecker", "destroyer", "ruin", "sinner", "slayer", "plugger", "enforcer", "trigger", "pump", "expeller", "barrage", "terror" ] items\active\weapons\ranged\grenadelauncher\glaunchernames.config 7,8c7,8 < [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Broken", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], < [ { "mode" : "alts" }, "gun", "launcher", "stopper", "pitcher", "tosser", "thrower", "wrecker", "destroyer", "ruin", "sinner", "slayer", "plugger", "enforcer", "trigger", "pump", "expeller", "barrage", "terror" ] --- > [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], > [ { "mode" : "alts" }, "gun", "launcher", "stopper", "pitcher", "tosser", "thrower", "wrecker", "destroyer", "ruin", "sinner", "slayer", "plugger", "enforcer", "trigger", "pump", "expeller", "barrage", "terror" ] items\active\weapons\ranged\machinepistol\mpistolnames.config 7,8c7,8 < [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Broken", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], < [ { "mode" : "alts" }, "uzi", "pistol", "gun", "sprayer", "stopper", "sprinkler", "blaster", "howitzer", "pitcher", "tosser", "phaser", "wrecker", "destroyer", "ruin", "sinner", "slayer", "plugger", "enforcer", "trigger", "pump", "expeller", "barrage", "terror" ] --- > [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], > [ { "mode" : "alts" }, "uzi", "pistol", "gun", "sprayer", "stopper", "sprinkler", "blaster", "howitzer", "pitcher", "tosser", "phaser", "wrecker", "destroyer", "ruin", "sinner", "slayer", "plugger", "enforcer", "trigger", "pump", "expeller", "barrage", "terror" ] items\active\weapons\ranged\pistol\pistolnames.config 7,8c7,8 < [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Broken", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], < [ { "mode" : "alts" }, "pistol", "sprayer", "gun", "stopper", "sprinkler", "blaster", "howitzer", "pitcher", "tosser", "phaser", "wrecker", "destroyer", "ruin", "sinner", "slayer", "plugger", "enforcer", "trigger", "pump", "expeller", "barrage", "terror" ] --- > [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], > [ { "mode" : "alts" }, "pistol", "sprayer", "gun", "stopper", "sprinkler", "blaster", "howitzer", "pitcher", "tosser", "phaser", "wrecker", "destroyer", "ruin", "sinner", "slayer", "plugger", "enforcer", "trigger", "pump", "expeller", "barrage", "terror" ] items\active\weapons\ranged\rocketlauncher\rlaunchernames.config 7,8c7,8 < [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Broken", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], < [ { "mode" : "alts" }, "gun", "launcher", "stopper", "pitcher", "tosser", "thrower", "wrecker", "destroyer", "ruin", "sinner", "slayer", "plugger", "enforcer", "trigger", "pump", "expeller", "barrage", "terror" ] --- > [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], > [ { "mode" : "alts" }, "gun", "launcher", "stopper", "pitcher", "tosser", "thrower", "wrecker", "destroyer", "ruin", "sinner", "slayer", "plugger", "enforcer", "trigger", "pump", "expeller", "barrage", "terror" ] items\active\weapons\ranged\shotgun\shotgunnames.config 7,8c7,8 < [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Broken", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], < [ { "mode" : "alts" }, "shotty", "shotgun", "gun", "sprayer", "stopper", "sprinkler", "blaster", "howitzer", "pitcher", "tosser", "phaser", "wrecker", "destroyer", "ruin", "sinner", "slayer", "plugger", "enforcer", "trigger", "pump", "expeller", "barrage", "terror" ] --- > [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], > [ { "mode" : "alts" }, "shotty", "shotgun", "gun", "sprayer", "stopper", "sprinkler", "blaster", "howitzer", "pitcher", "tosser", "phaser", "wrecker", "destroyer", "ruin", "sinner", "slayer", "plugger", "enforcer", "trigger", "pump", "expeller", "barrage", "terror" ] items\active\weapons\ranged\sniperrifle\snipernames.config 7,8c7,8 < [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Broken", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], < [ { "mode" : "alts" }, "rifle", "gun", "sniper", "sprayer", "stopper", "sprinkler", "blaster", "howitzer", "pitcher", "tosser", "phaser", "wrecker", "destroyer", "ruin", "sinner", "slayer", "plugger", "enforcer", "trigger", "pump", "expeller", "barrage", "terror" ] --- > [ { "mode" : "alts" }, "Star", "Impact", "Psi", "Riot", "Skull", "Tsunami", "Force", "Galaxy", "Wave", "Moon", "Talon", "Focus", "Nexus", "Luna", "Poly", "Pixel", "Terra", "Solar", "Storm", "Planet", "Perfect", "Soul", "Heart", "Mountain", "Terror", "Nebula", "Nimbus", "Celestial", "Sky", "Ocean", "Ether", "Reality", "Matter", "Light", "Void", "Fusion", "Phase", "Dawn", "Dusk", "Flux", "Cyclone", "Atomic", "Astral", "Comet", "Warden", "Howl", "Pulse" ], > [ { "mode" : "alts" }, "rifle", "gun", "sniper", "sprayer", "stopper", "sprinkler", "blaster", "howitzer", "pitcher", "tosser", "phaser", "wrecker", "destroyer", "ruin", "sinner", "slayer", "plugger", "enforcer", "trigger", "pump", "expeller", "barrage", "terror" ] items\active\weapons\whip\energywhip.activeitem 27,28c27,28 < "swing" : [ "/sfx/melee/swing_dagger.ogg" ], < "crack" : [ "/sfx/melee/laser_weapon_hit.ogg" ] --- > "swing" : [ "/sfx/melee/energywhip_swing1.ogg", "/sfx/melee/energywhip_swing2.ogg", "/sfx/melee/energywhip_swing3.ogg" ], > "crack" : [ "/sfx/melee/energywhip_impact1.ogg", "/sfx/melee/energywhip_impact2.ogg", "/sfx/melee/energywhip_impact3.ogg" ] items\active\weapons\whip\ropewhip.activeitem 22,23c22,23 < "swing" : [ "/sfx/melee/swing_dagger.ogg" ], < "crack" : [ "/sfx/gun/pistol1.ogg" ] --- > "swing" : [ "/sfx/melee/whip_swing1.ogg", "/sfx/melee/whip_swing2.ogg", "/sfx/melee/whip_swing3.ogg" ], > "crack" : [ "/sfx/melee/whip_impact1.ogg", "/sfx/melee/whip_impact2.ogg", "/sfx/melee/whip_impact3.ogg" ] items\active\weapons\whip\vinewhip.activeitem 22,23c22,23 < "swing" : [ "/sfx/melee/swing_dagger.ogg" ], < "crack" : [ "/sfx/gun/pistol1.ogg" ] --- > "swing" : [ "/sfx/melee/whip_swing1.ogg", "/sfx/melee/whip_swing2.ogg", "/sfx/melee/whip_swing3.ogg" ], > "crack" : [ "/sfx/melee/whip_impact1.ogg", "/sfx/melee/whip_impact2.ogg", "/sfx/melee/whip_impact3.ogg" ] npcs\arena\arenaadvisor2.npctype 18c18,21 < "..." --- > "Shots from Volo's rifle will severely slow your movement, make sure to avoid getting hit.", > "Volo will attempt to stay behind her pets to attack from a distance, use the arena to protect yourself from her shots.", > "Volo's pets are weak compared to her. I recommend removing them from the fight first.", > "You can use ledges to lure Volo into closer range. That's the best time to strike!" npcs\arena\arenabuiser.npctype 80c80 < "runSpeed" : 6.0 --- > "runSpeed" : 5.0 102c102 < "baseValue" : 1.5 --- > "baseValue" : 5.5 npcs\arena\arenahunter.npctype 7,8c7 < "gender" : "female", < "race" : "floran" --- > "gender" : "female" 82,85c81,85 < "head" : [ { "name" : "vicioushead", "parameters" : { "colorIndex" : 0 } } ], < "chest" : [ { "name" : "hikerchest", "parameters" : { "colorIndex" : 11 } } ], < "legs" : [ { "name" : "toughlegs", "parameters" : { "colorIndex" : 6 } } ], < "primary" : [ "hunterrifle" ] --- > "head" : [ { "name" : "florantier5mhead", "parameters" : { "colorIndex" : 7 } } ], > "chest" : [ { "name" : "soldierchest", "parameters" : { "colorIndex" : 0 } } ], > "legs" : [ { "name" : "medicdemolegs", "parameters" : { "colorIndex" : 0 } } ], > "back" : [ { "name" : "hunterback", "parameters" : { "colorIndex" : 0 } } ], > "primary" : [ { "name" : "hunterrifle", "parameters" : { "primaryAbility" : { "projectileParameters" : { "statusEffects" : ["stun"] } } } } ] npcs\arena\arenashooter.npctype 84c84 < "primary" : [ { "name" : "novatier3rifle", "parameters" : { "elementaltype" : "electric", "primaryAbility" : { "baseDps" : 7.5, "projectileParameters" : { "statusEffects" : ["stun"] } } } } ] --- > "primary" : [ { "name" : "novatier3rifle", "parameters" : { "primaryAbility" : { "baseDps" : 7.5, "projectileParameters" : { "statusEffects" : ["stun"] } } } } ] npcs\mission\cultistknight.npctype 9c9 < "dropPools" : [ "cultisttreasure" ], --- > "dropPools" : [ ], objects\apex\apexfridge\apexfridge.object 36c36 < "slotCount" : 24, --- > "slotCount" : 32, 39c39,41 < "autoCloseCooldown" : 3600 --- > "autoCloseCooldown" : 3600, > > "itemAgeMultiplier" : 0.0 objects\biome\scorchedcity\scorchedcitybrokenfridge\scorchedcitybrokenfridge.object 10d9 < "lightColor" : [19, 27, 31], objects\biome\scorchedcity\scorchedcityfridge\scorchedcityfridge.object 11,12c11 < "price" : 110, < "lightColor" : [19, 27, 31], --- > "price" : 180, 37c36,38 < "slotCount" : 24, --- > "openSounds" : [ "/sfx/objects/fridge_open.ogg" ], > "closeSounds" : [ "/sfx/objects/fridge_close.ogg" ], > "slotCount" : 32, 40c41,43 < "autoCloseCooldown" : 3600 --- > "autoCloseCooldown" : 3600, > > "itemAgeMultiplier" : 0.0 objects\human\fridge\fridge.object 9,10c9,10 < "price" : 110, < "description" : "Ooh, snack time.", --- > "price" : 180, > "description" : "Perfect for storing a lot of food and keeping it fresh.", 48c48 < "slotCount" : 24, --- > "slotCount" : 32, objects\outpost\outpostfridge\outpostfridge.object 11c11 < "price" : 110, --- > "price" : 180, 57c57 < "slotCount" : 24, --- > "slotCount" : 32, 60a61,62 > > "itemAgeMultiplier" : 0.0, objects\wired\logic\timer.object 6c6 < "description" : "", --- > "description" : "The timer output alternates between on and off every 0.5 seconds.", 11a12,14 > > "floranDescription" : "Timer output alternatesss between on and off every 0.5 secondsss.", > "glitchDescription" : "Remark. The timer output alternates between on and off every 0.5 seconds.", objects\wired\logic\timer1s.object 6c6 < "description" : "", --- > "description" : "The timer output alternates between on and off every 1 second.", 11a12,14 > > "floranDescription" : "Timer output alternatesss between on and off every 1 secondsss.", > "glitchDescription" : "Remark. The timer output alternates between on and off every 1 seconds.", objects\wired\logic\timer2s.object 6c6 < "description" : "", --- > "description" : "The timer output alternates between on and off every 2 seconds.", 11a12,14 > > "floranDescription" : "Timer output alternatesss between on and off every 2 secondsss.", > "glitchDescription" : "Remark. The timer output alternates between on and off every 2 seconds.", objects\wired\logic\timer3s.object 6c6 < "description" : "", --- > "description" : "The timer output alternates between on and off every 3 seconds.", 11a12,14 > > "floranDescription" : "Timer output alternatesss between on and off every 3 secondsss.", > "glitchDescription" : "Remark. The timer output alternates between on and off every 3 seconds.", objects\wired\logic\timer4s.object 6c6 < "description" : "", --- > "description" : "The timer output alternates between on and off every 4 seconds.", 11a12,14 > > "floranDescription" : "Timer output alternatesss between on and off every 4 secondsss.", > "glitchDescription" : "Remark. The timer output alternates between on and off every 4 seconds.", objects\wired\logic\timer5s.object 6c6 < "description" : "", --- > "description" : "The timer output alternates between on and off every 5 seconds.", 11a12,14 > > "floranDescription" : "Timer output alternatesss between on and off every 5 secondsss.", > "glitchDescription" : "Remark. The timer output alternates between on and off every 5 seconds.", objects\wired\persistentswitch\persistentswitch.object 6c6 < "description" : "Switches and stays switched.", --- > "description" : "Once triggered this switch will remain in its switched state.", 11a12,14 > > "floranDescription" : "Once triggered this sswitch will remain in its sswitched ssstate.", > "glitchDescription" : "Remark. Once triggered this switch will remain in its switched state.", projectiles\activeitems\magnorb\magnorb.projectile 5c5 < "flippable" : false, --- > "flippable" : true, projectiles\explosions\regularexplosion\ballistaexplosion.config 130,132c130,132 < "foregroundRadius" : 6, < "backgroundRadius" : 0, < "explosiveDamageAmount" : 50, --- > "foregroundRadius" : 4, > "backgroundRadius" : 2, > "explosiveDamageAmount" : 100, projectiles\guns\arrows\harpoon\harpoon.projectile 7d6 < "damageKindImage" : "icon.png", projectiles\npcs\dragonprojectile\dragonprojectile.projectile 5a6,8 > "movementSettings" : { > "collisionPoly" : [ [1, -2], [-2, 0], [1, 2], [2, 0] ] > }, 17,21c20,37 < "action" : "projectile", < "type" : "molotovflame", < "fuzzAngle" : 0, < "inheritDamageFactor" : 1, < "angleAdjust" : 35 --- > "action" : "loop", > "count" : 7, > "body" : [ > { > "action" : "projectile", > "type" : "molotovflame", > "fuzzAngle" : 180, > "inheritDamageFactor" : 0.05, > "angleAdjust" : 0 > } > ] > }, > { > "action" : "explosion", > "foregroundRadius" : 4, > "backgroundRadius" : 0, > "explosiveDamageAmount" : 100, > "delaySteps" : 2 projectiles\throwable\fireworkgun\fireworkgun.projectile 15c15 < "options" : [ "/sfx/projectiles/firework_explode1.ogg" ] --- > "options" : [ "/sfx/gun/fireworkgun_blast1.ogg" ] 20c20 < "inheritDamageFactor" : 0.2, --- > "inheritDamageFactor" : 1.0, 28c28 < "inheritDamageFactor" : 0.2, --- > "inheritDamageFactor" : 1.0, 36c36 < "inheritDamageFactor" : 0.2, --- > "inheritDamageFactor" : 1.0, 44c44 < "inheritDamageFactor" : 0.2, --- > "inheritDamageFactor" : 1.0, 52c52 < "inheritDamageFactor" : 0.2, --- > "inheritDamageFactor" : 1.0, 60c60 < "inheritDamageFactor" : 0.2, --- > "inheritDamageFactor" : 1.0, 68c68 < "inheritDamageFactor" : 0.2, --- > "inheritDamageFactor" : 1.0, 76c76 < "inheritDamageFactor" : 0.2, --- > "inheritDamageFactor" : 1.0, projectiles\throwable\fireworkgun2\fireworkgun2.projectile 14a15,18 > "action" : "sound", > "options" : [ "/sfx/gun/fireworkgun_blast2.ogg" ] > }, > { projectiles\throwable\molotovflame\molotovflamemonster.projectile 11c11 < "emitters" : [ "fireplasma", "smoke", "flames" ], --- > "emitters" : [ "flames" ], quests\outpost\floranarena1.questtemplate 7a8 > "speaker" : "questGiver", 9c10 < [ [ "markerwallplaque1", 1 ] ] --- > [ [ "markerwallplaque1", 1 ], [ "rewardbag", 1 ] ] quests\outpost\floranarena2.questtemplate 7a8 > "speaker" : "questGiver", 9c10 < [ [ "markerwallplaque2", 1 ] ] --- > [ [ "markerwallplaque2", 1 ], [ "rewardbag", 1 ] ] quests\outpost\floranarena3.questtemplate 7a8 > "speaker" : "questGiver", 9c10 < [ [ "markerwallplaque3", 1 ] ] --- > [ [ "markerwallplaque3", 1 ], [ "rewardbag", 1 ] ] stagehands\mission\glitchmissionmanager.lua 5c5 < self.state = FSM:new() --- > self.coroutines = {} 7c7,15 < self.state:set(missionSequence) --- > table.insert(self.coroutines, coroutine.create(missionSequence)) > end) > > self.wallAttacked = false > message.setHandler("wallAttacked", function() > if not self.wallAttacked then > radioMessage("wallAttacked") > self.wallAttacked = true > end 37c45 < self.state:set(nil) --Reset --- > self.coroutines = {} 42c50,57 < self.state:update(dt) --- > for i,cor in pairs(self.coroutines) do > if coroutine.status(cor) ~= "dead" then > local status, result = coroutine.resume(cor) > if not status then error(result) end > else > table.remove(self.coroutines, i) > end > end 53,54c68,69 < local enemies = spawnWave("gatespawn", { { entityType = "cultist", count = 3} }) < radioMessage("gateCultists") --- > local enemies = spawnWave("campspawn", { { entityType = "cultist", count = 3} }) > radioMessage("firstWave") 56c71 < enemies = util.filter(enemies, function(enemyId) return world.entityExists(enemyId) end) --- > enemies = util.filter(enemies, world.entityExists) 59,64c74,76 < world.logInfo("Wave 1 dead") < < util.wait(5.0) < < enemies = spawnWave("campspawn", { { entityType = "cultist", count = 3} }) < radioMessage("campCultists") --- > util.wait(4.0) > util.appendLists(enemies, spawnWave("campspawn", { { entityType = "cultist", count = 2} })) > util.appendLists(enemies, spawnWave("midfieldspawn", { { entityType = "cultist", count = 2} })) 66c78,85 < enemies = util.filter(enemies, function(enemyId) return world.entityExists(enemyId) end) --- > enemies = util.filter(enemies, world.entityExists) > coroutine.yield() > end > util.wait(4.0) > util.appendLists(enemies, spawnWave("gatespawn", { { entityType = "cultist", count = 2} })) > util.appendLists(enemies, spawnWave("midfieldspawn", { { entityType = "cultist", count = 2} })) > while #enemies > 0 do > enemies = util.filter(enemies, world.entityExists) 69d87 < world.logInfo("Wave 2 dead") 71c89,93 < util.wait(5.0) --- > util.wait(4.0) > > -- Keep spawning ballistas for the rest of the fight > local ballistaCoroutine = coroutine.create(spawnBallistas) > table.insert(self.coroutines, ballistaCoroutine) 73d94 < enemies = spawnWave("ballistaspawn", { { entityType = "cultist", count = 2 }, { entityType = "ballista" } }) 74a96,97 > enemies = spawnWave("ballistaspawn", { { entityType = "cultist", count = 2 } }) > util.appendLists(enemies, spawnWave("campspawn", { { entityType = "cultist", count = 2} })) 76,82c99,105 < enemies = util.filter(enemies, function(enemyId) < -- Ballista can stay around for longer than one wave < if world.entityType(enemyId) == "monster" and world.monsterType(enemyId) == "ballista" then < return false < end < return world.entityExists(enemyId) < end) --- > enemies = util.filter(enemies, world.entityExists) > coroutine.yield() > end > util.wait(8.0) > util.appendLists(enemies, spawnWave("midfieldspawn", { { entityType = "cultist", count = 2} })) > while #enemies > 0 do > enemies = util.filter(enemies, world.entityExists) 85d107 < world.logInfo("Wave 3 dead") 87c109,113 < util.wait(5.0) --- > util.wait(4.0) > > -- Spawning helicultists should go on for the rest of the fight > local heliCoroutine = coroutine.create(spawnHelis) > table.insert(self.coroutines, heliCoroutine) 90d115 < spawnWave("helispawn", { { entityType = "helicultist", count = 2} }) 93c118 < enemies = util.filter(enemies, function(enemyId) return world.entityExists(enemyId) end) --- > enemies = util.filter(enemies, world.entityExists) 96d120 < world.logInfo("Wave 4 dead") 98c122 < util.wait(5.0) --- > util.wait(4.0) 100,101c124,139 < enemies = spawnWave("castlespawn", { { entityType = "cultist", count = 3} }) < radioMessage("castleCultists") --- > enemies = spawnWave("campspawn", { { entityType = "cultist", count = 7} }) > radioMessage("lastWave") > util.wait(6.0) > util.appendLists(enemies, spawnWave("midfieldspawn", { { entityType = "cultist", count = 3} })) > util.wait(6.0) > util.appendLists(enemies, spawnWave("gatespawn", { { entityType = "cultist", count = 3} })) > while #enemies > 0 do > enemies = util.filter(enemies, world.entityExists) > coroutine.yield() > end > util.wait(6.0) > util.appendLists(enemies, spawnWave("gatespawn", { { entityType = "cultist", count = 3} })) > util.wait(6.0) > util.appendLists(enemies, spawnWave("midfieldspawn", { { entityType = "cultist", count = 3} })) > util.wait(6.0) > util.appendLists(enemies, spawnWave("campspawn", { { entityType = "cultist", count = 3} })) 103c141 < enemies = util.filter(enemies, function(enemyId) return world.entityExists(enemyId) end) --- > enemies = util.filter(enemies, world.entityExists) 106c144,179 < world.logInfo("Wave 5 dead") --- > > -- Stop spawning helis and ballistas before the boss > self.coroutines = util.filter(self.coroutines, function(cor) > return cor ~= heliCoroutine and cor ~= ballistaCoroutine > end) > > -- Keep cultists spawning in all spawn points to discourage player from leaving the boss area > local spawnCultists = coroutine.create(function() > util.wait(8.0) > local cultists = {} > cultists["campspawn"], cultists["midfieldspawn"], cultists["gatespawn"] = {}, {}, {} > while true do > for spawnPoint,entities in pairs(cultists) do > entities = util.filter(entities, world.entityExists) > if #entities == 0 then > util.wait(6.0) > cultists[spawnPoint] = spawnWave(spawnPoint, { { entityType = "cultist", count = 3} }) > end > end > coroutine.yield() > end > end) > table.insert(self.coroutines, spawnCultists) > > enemies = spawnWave("bossposition", { { entityType = "dragonboss" } }) > radioMessage("bossWave") > while #enemies > 0 do > enemies = util.filter(enemies, world.entityExists) > coroutine.yield() > end > > world.entityQuery({self.missionArea[1], self.missionArea[2]}, {self.missionArea[3], self.missionArea[4]}, { > includedTypes = { "npc" }, > callScript = "notify", > callScriptArgs = { { type = "missionEnded", source = entity.id() } } > }) 109a183 > -- End of the mission 117c191,225 < self.state:set(nil) --- > self.coroutines = {} > end > > function spawnBallistas() > local ballistas = spawnWave("ballistaspawn", { { entityType = "ballista" } }) > -- Keep spawning ballistas forever > while true do > while #ballistas > 0 do > ballistas = util.filter(ballistas, world.entityExists) > coroutine.yield() > end > > util.wait(config.getParameter("ballistaSpawnDelay", 30)) > ballistas = spawnWave("ballistaspawn", { { entityType = "ballista" }, { entityType = "cultist" } }) > spawnWave("ballistaspawn", { { entityType = "cultist" } }) > radioMessage("additionalBallista") > end > end > > function spawnHelis() > local helis = spawnWave("helispawn", { { entityType = "helicultist", count = 2} }) > while true do > for i,entityId in pairs(helis) do > if not world.entityExists(entityId) then > table.remove(helis, i) > util.wait(config.getParameter("heliSpawnDelay", 20)) > local newHelis = spawnWave("helispawn", { { entityType = "helicultist", count = 1} }) > for _,entityId in pairs(newHelis) do > table.insert(helis, entityId) > end > end > end > > coroutine.yield() > end 134a243,244 > elseif spawn.entityType == "dragonboss" then > table.insert(enemies, world.spawnMonster("dragonboss", position, { aggressive = true, level = world.threatLevel() })) stagehands\mission\glitchmissionmanager.stagehand 13a14,16 > "ballistaSpawnDelay" : 30, > "heliSpawnDelay" : 20, > 17,18c20 < "gateCultists" : "Surprised! Some cultists have beamed down outside of our gates, kill them before they can breach it!", < "campCultists" : "Alarmed! A few of these scoundrels are approaching from a camp in the outskirts of the keep. Hunt them down and kill them!", --- > "firstWave" : "Alarmed! A few of these scoundrels are approaching from a camp in the outskirts of the keep. Hunt them down and kill them!", 19a22,23 > "wallAttacked" : "Oh no, my delicately constructed walls!", > "additionalBallista" : "Blast! Another wooden bringer of destruction has arrived. Wreck it before it wrecks us!", 21c25,26 < "castleCultists" : "Alert! More cultists have beamed directly into the keep. You must help defend it!", --- > "lastWave" : "Alert! More cultists are approaching. It seems to be quite a lot of them!", > "bossWave" : "They've brought a flying bone dragon! Wait what? There is no such thing as a dragon!",