FILES ----- default_configuration.config [NEW] behaviors\npc\accuse.behavior behaviors\npc\merchant.behavior behaviors\npc\tracking.behavior behaviors\npc\villageguard.behavior behaviors\npc\villager.behavior behaviors\npc\reactions\follow.behavior damage\bow.damage damage\electricbow.damage damage\firebow.damage damage\icebow.damage damage\poisonbow.damage dialog\converse.config interface\chatbubbles\portraitbubblemore.png [NEW] interface\scripted\vehiclerepair\body.png [NEW] interface\scripted\vehiclerepair\cards.png [NEW] interface\scripted\vehiclerepair\durability.png [NEW] interface\scripted\vehiclerepair\durabilityempty.png [NEW] interface\scripted\vehiclerepair\emptyprogress.png [NEW] interface\scripted\vehiclerepair\footer.png [NEW] interface\scripted\vehiclerepair\header.png [NEW] interface\scripted\vehiclerepair\listitem.frames [NEW] interface\scripted\vehiclerepair\listitem.png [NEW] interface\scripted\vehiclerepair\vehiclerepairgui.config [NEW] interface\scripted\vehiclerepair\vehiclerepairgui.lua items\active\weapons\protectorate\titaniumspear.activeitem items\armors\backerhats\phoenixhat\head.png items\armors\backerhats\phoenixhat\phoenixhat.head monsters\boss\penguin\rockettrooper.monstertype monsters\boss\penguin\trooper.monstertype monsters\boss\penguin\animation\rockettrooper.animation monsters\boss\penguin\animation\trooper.animation monsters\boss\penguinminiufo\penguinminiufo.animation monsters\boss\penguinminiufo\penguinminiufo.monstertype monsters\boss\penguintank\penguintank.animation monsters\boss\penguintank\penguintank.monstertype monsters\boss\penguinufo\penguinufo.animation monsters\boss\penguinufo\penguinufo.monstertype monsters\boss\penguinufo\skills\ufomovefireattack.monsterskill monsters\boss\penguinufo\skills\ufopulsecannonattack.monsterskill monsters\boss\penguinufo\skills\uforeinforcementsattack.monsterskill monsters\boss\penguinufo\skills\ufoslamattack.lua monsters\boss\penguinufo\skills\ufospawntanksattack.monsterskill monsters\boss\penguinufo\skills\ufoteleportattack.lua npcs\merchant.npctype npcs\villageguard.npctype npcs\villager.npctype objects\ancient\challengedoor\challengedoor.lua objects\farmables\mothtrap\mothtrap.object objects\mission\lunarquestturnin\drillmachine.object objects\outpost\infinityexpress\infinityexpress.object objects\outpost\repairo\repairo.lua objects\outpost\repairo\repairo.object objects\outpost\shipyardcaptain\shipyardcaptain.object objects\protectorate\09\09back.png [NEW] objects\wired\smallwallswitch\smallwallswitchboss.frames [NEW] objects\wired\smallwallswitch\smallwallswitchboss.object [NEW] objects\wired\smallwallswitch\smallwallswitchboss.png projectiles\activeitems\staff\elementorb\electricorb.projectile scripts\actions\dialog.lua scripts\actions\notification.lua [NEW] sfx\gun\tank_shot.ogg [NEW] sfx\npc\boss\ufo_mini_hover_loop.ogg [NEW] sfx\npc\boss\ufo_stunned.ogg [NEW] sfx\npc\boss\ufo_teleport_appear.ogg [NEW] sfx\npc\boss\ufo_teleport_disappear.ogg [NEW] sfx\npc\monsters\penguintank_idle.ogg [NEW] sfx\npc\monsters\penguintank_move.ogg [NEW] sfx\npc\monsters\penguintank_move2.ogg [NEW] stagehands\objecttracker.lua [NEW] stagehands\objecttracker.stagehand DIFFS ----- default_configuration.config 2c2 < "configurationVersion" : 427, --- > "configurationVersion" : 428, 17a18 > 18a20,23 > "scriptRecursionLimit" : 0, > "scriptInstructionLimit" : 0, > "scriptProfilingEnabled" : false, > "scriptInstructionMeasureInterval" : 1000, behaviors\npc\merchant.behavior 2a3 > "description": "", 119a121,126 > "parameters": {} > }, > { > "title": "accuse", > "type": "module", > "name": "accuse", behaviors\npc\tracking.behavior 188,197c188,217 < "title": "receivedNotification", < "type": "action", < "name": "receivedNotification", < "parameters": { < "type": "attack" < }, < "output": { < "source": "notificationSource", < "target": "notificationTarget" < } --- > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "receivedNotification", > "type": "action", > "name": "receivedNotification", > "parameters": { > "type": "attack" > }, > "output": { > "source": "notificationSource", > "target": "notificationTarget" > } > }, > { > "title": "receivedNotification", > "type": "action", > "name": "receivedNotification", > "parameters": { > "type": "attackThief" > }, > "output": { > "source": "notificationSource", > "target": "notificationTarget" > } > } > ] behaviors\npc\villageguard.behavior 2a3 > "description": "", 4c5,7 < "/scripts/actions/math.lua", --- > "/scripts/actions/notification.lua", > "/scripts/actions/position.lua", > "/scripts/actions/sensor.lua", 6a10,11 > "/scripts/actions/time.lua", > "/scripts/actions/math.lua", 22a28,233 > }, > { > "title": "failer", > "type": "decorator", > "name": "failer", > "parameters": {}, > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "receivedNotification", > "type": "action", > "name": "receivedNotification", > "parameters": { > "type": "objectBroken" > }, > "output": { > "target": "thiefTarget", > "targetPosition": "objectPosition" > } > }, > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "distance", > "type": "action", > "name": "distance", > "parameters": { > "from": "self", > "to": "objectPosition" > }, > "output": { > "vector": "toObject" > } > }, > { > "title": "lineTileCollision", > "type": "action", > "name": "lineTileCollision", > "parameters": { > "position": "self", > "offset": "toObject", > "collisionType": [ > "Null", > "Block", > "Dynamic" > ] > } > } > ] > }, > { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "entityPosition", > "type": "action", > "name": "entityPosition", > "parameters": { > "entity": "thiefTarget" > }, > "output": { > "position": "thiefPosition" > } > }, > { > "title": "distance", > "type": "action", > "name": "distance", > "parameters": { > "from": "self", > "to": "thiefPosition" > }, > "output": { > "vector": "toThief" > } > }, > { > "title": "lineTileCollision", > "type": "action", > "name": "lineTileCollision", > "parameters": { > "position": "self", > "offset": "toThief", > "collisionType": [ > "Null", > "Block", > "Dynamic" > ] > } > } > ] > } > ] > } > }, > { > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "limiter", > "type": "decorator", > "name": "limiter", > "parameters": { > "limit": 2 > }, > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "sayToEntity", > "type": "action", > "name": "sayToEntity", > "parameters": { > "dialogType": "dialog.accuse", > "entity": "thiefTarget", > "tags": {}, > "static": false > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 2 > } > } > ] > } > }, > { > "title": "cooldown", > "type": "decorator", > "name": "cooldown", > "parameters": { > "cooldown": 1, > "onFail": false, > "onSuccess": true > }, > "child": { > "title": "broadcastNotification", > "type": "action", > "name": "broadcastNotification", > "parameters": { > "position": "self", > "range": 40, > "entityTypes": [ > "npc" > ], > "type": "attackThief", > "target": "reactTarget" > } > } > } > ] > } > ] > } behaviors\npc\villager.behavior 2a3 > "description": "", 5c6 < "play" : true --- > "play": true 21a23,28 > "parameters": {} > }, > { > "title": "accuse", > "type": "module", > "name": "accuse", behaviors\npc\reactions\follow.behavior 3d2 < "description": "", 11c10,13 < "parameters": {}, --- > "parameters": { > "creepy": false, > "duration": 3 > }, damage\bow.damage 256c256 < "sounds" : [ "/sfx/gun/impact_robotic1.ogg", "/sfx/gun/impact_robotic2.ogg", "/sfx/gun/impact_robotic3.ogg", "/sfx/gun/impact_robotic4.ogg", "/sfx/gun/impact_robotic5.ogg" ], --- > "sounds" : [ "/sfx/melee/sword_hit_metal1.ogg", "/sfx/melee/sword_hit_metal2.ogg", "/sfx/melee/sword_hit_metal3.ogg", "/sfx/melee/sword_hit_metal4.ogg", "/sfx/melee/sword_hit_metal5.ogg", "/sfx/melee/sword_hit_metal6.ogg" ], damage\electricbow.damage 260c260 < "sounds" : [ "/sfx/gun/impact_robotic1.ogg", "/sfx/gun/impact_robotic2.ogg", "/sfx/gun/impact_robotic3.ogg", "/sfx/gun/impact_robotic4.ogg", "/sfx/gun/impact_robotic5.ogg" ], --- > "sounds" : [ "/sfx/melee/sword_hit_metal1.ogg", "/sfx/melee/sword_hit_metal2.ogg", "/sfx/melee/sword_hit_metal3.ogg", "/sfx/melee/sword_hit_metal4.ogg", "/sfx/melee/sword_hit_metal5.ogg", "/sfx/melee/sword_hit_metal6.ogg" ], damage\firebow.damage 260c260 < "sounds" : [ "/sfx/gun/impact_robotic1.ogg", "/sfx/gun/impact_robotic2.ogg", "/sfx/gun/impact_robotic3.ogg", "/sfx/gun/impact_robotic4.ogg", "/sfx/gun/impact_robotic5.ogg" ], --- > "sounds" : [ "/sfx/melee/sword_hit_metal1.ogg", "/sfx/melee/sword_hit_metal2.ogg", "/sfx/melee/sword_hit_metal3.ogg", "/sfx/melee/sword_hit_metal4.ogg", "/sfx/melee/sword_hit_metal5.ogg", "/sfx/melee/sword_hit_metal6.ogg" ], damage\icebow.damage 260c260 < "sounds" : [ "/sfx/gun/impact_robotic1.ogg", "/sfx/gun/impact_robotic2.ogg", "/sfx/gun/impact_robotic3.ogg", "/sfx/gun/impact_robotic4.ogg", "/sfx/gun/impact_robotic5.ogg" ], --- > "sounds" : [ "/sfx/melee/sword_hit_metal1.ogg", "/sfx/melee/sword_hit_metal2.ogg", "/sfx/melee/sword_hit_metal3.ogg", "/sfx/melee/sword_hit_metal4.ogg", "/sfx/melee/sword_hit_metal5.ogg", "/sfx/melee/sword_hit_metal6.ogg" ], damage\poisonbow.damage 260c260 < "sounds" : [ "/sfx/gun/impact_robotic1.ogg", "/sfx/gun/impact_robotic2.ogg", "/sfx/gun/impact_robotic3.ogg", "/sfx/gun/impact_robotic4.ogg", "/sfx/gun/impact_robotic5.ogg" ], --- > "sounds" : [ "/sfx/melee/sword_hit_metal1.ogg", "/sfx/melee/sword_hit_metal2.ogg", "/sfx/melee/sword_hit_metal3.ogg", "/sfx/melee/sword_hit_metal4.ogg", "/sfx/melee/sword_hit_metal5.ogg", "/sfx/melee/sword_hit_metal6.ogg" ], dialog\converse.config 1a2,21 > "accuse" : { > "default" : { > "default" : [ > "Hey, that doesn't belong to you!", > "Please don't take our stuff", > "That's not yours", > "Wow, I can't believe you've done this." > ] > } > }, > "alert" : { > "default" : { > "default" : [ > "Guards! There is a criminal here!", > "This is the last straw. Guards!", > "Your actions are inexcusable.", > "I will see to it that you are punished." > ] > } > }, items\active\weapons\protectorate\titaniumspear.activeitem 35c35 < "fireTime" : 0.9, --- > "fireTime" : 0.95, items\armors\backerhats\phoenixhat\phoenixhat.head 17,18c17,18 < // BONE < { "ffca8a" : "eceacc", "e0975c" : "cbbd9d", "a85636" : "84795c", "6f2919" : "504b3d" }, --- > // YELLOW > { "ffca8a" : "ffffa7", "e0975c" : "e2c344", "a85636" : "a46e06", "6f2919" : "642f00" }, monsters\boss\penguin\rockettrooper.monstertype 74c74 < "baseValue" : 8 --- > "baseValue" : 32 77c77 < "baseValue" : 1.0 --- > "baseValue" : 25.0 83a84,86 > }, > "specialStatusImmunity" : { > "baseValue" : 1.0 123c126,134 < "power" : 25 --- > "power" : 15, > "periodicActions" : [ > { > "time" : 0, > "repeat" : false, > "action" : "sound", > "options" : [ "/sfx/gun/rocket2.ogg" ] > } > ] monsters\boss\penguin\trooper.monstertype 74c74 < "baseValue" : 100 --- > "baseValue" : 32 77c77 < "baseValue" : 1.0 --- > "baseValue" : 25.0 83a84,86 > }, > "specialStatusImmunity" : { > "baseValue" : 1.0 107c110,118 < "power" : 4 --- > "power" : 5, > "periodicActions" : [ > { > "time" : 0, > "repeat" : false, > "action" : "sound", > "options" : [ "/sfx/gun/ar3.ogg" ] > } > ] monsters\boss\penguin\animation\rockettrooper.animation 426a427,430 > }, > > "sounds" : { > "deathPuff" : [ "/sfx/npc/enemydeathpuff.ogg" ] monsters\boss\penguin\animation\trooper.animation 392a393,396 > }, > > "sounds" : { > "deathPuff" : [ "/sfx/npc/enemydeathpuff.ogg" ] monsters\boss\penguinminiufo\penguinminiufo.animation 12c12,16 < "mode" : "loop" --- > "mode" : "loop", > "properties" : { > "persistentSound" : "/sfx/npc/boss/ufo_mini_hover_loop.ogg", > "persistentSoundRangeMultiplier" : 0.75 > } 221a226,229 > }, > > "sounds" : { > "deathPuff" : [ "/sfx/npc/enemydeathpuff.ogg" ] monsters\boss\penguinminiufo\penguinminiufo.monstertype 10c10 < "dropPools" : [ "serpentdroidTreasure" ], --- > "dropPools" : [ "money" ], 75c75 < "baseValue" : 12 --- > "baseValue" : 48 78c78 < "baseValue" : 1.0 --- > "baseValue" : 50.0 107c107,115 < "power" : 20 --- > "power" : 5, > "periodicActions" : [ > { > "time" : 0, > "repeat" : false, > "action" : "sound", > "options" : [ "/sfx/gun/plasma_mp2.ogg" ] > } > ] monsters\boss\penguintank\penguintank.animation 11c11,16 < "transition" : "idle" --- > "transition" : "idle", > "properties" : { > "persistentSound" : "/sfx/npc/monsters/penguintank_idle.ogg", > "persistentSoundRangeMultiplier" : 0.75, > "persistentSoundStopTime" : 0.15 > } 15c20,25 < "mode" : "loop" --- > "mode" : "loop", > "properties" : { > "persistentSound" : "/sfx/npc/monsters/penguintank_idle.ogg", > "persistentSoundRangeMultiplier" : 0.75, > "persistentSoundStopTime" : 0.15 > } 19c29,34 < "mode" : "loop" --- > "mode" : "loop", > "properties" : { > "persistentSound" : "/sfx/npc/monsters/penguintank_move2.ogg", > "persistentSoundRangeMultiplier" : 0.75, > "persistentSoundStopTime" : 0.15 > } 24c39,46 < "transition" : "idle" --- > "transition" : "idle", > "properties" : { > "immediateSound" : "/sfx/gun/tank_shot.ogg", > "immediateSoundRangeMultiplier" : 1.5, > "persistentSound" : "/sfx/npc/monsters/penguintank_idle.ogg", > "persistentSoundRangeMultiplier" : 0.75, > "persistentSoundStopTime" : 0.15 > } 426a449,452 > }, > > "sounds" : { > "deathPuff" : [ "/sfx/npc/enemydeathpuff.ogg" ] monsters\boss\penguintank\penguintank.monstertype 26c26 < "mass" : 1.6, --- > "mass" : 5, 64a65,67 > "grit" : { > "baseValue" : 1.0 > }, 75c78 < "baseValue" : 2.0 --- > "baseValue" : 50.0 81a85,90 > }, > "specialStatusImmunity" : { > "baseValue" : 1.0 > }, > "stunImmunity" : { > "baseValue" : 1.0 109c118 < "power" : 20 --- > "power" : 15 monsters\boss\penguinufo\penguinufo.animation 377c377,386 < "landing" : [ "/sfx/gun/grenadeblast2.ogg" ] --- > "landing" : [ "/sfx/gun/grenadeblast2.ogg" ], > "stunned" : [ "/sfx/npc/boss/ufo_stunned.ogg" ], > "teleportIn" : { > "pool" : [ "/sfx/npc/boss/ufo_teleport_appear.ogg" ], > "rangeMultiplier" : 1.5 > }, > "teleportOut" : { > "pool" : [ "/sfx/npc/boss/ufo_teleport_disappear.ogg" ], > "rangeMultiplier" : 1.5 > } monsters\boss\penguinufo\penguinufo.monstertype 40c40 < "healthPercentage" : 0.33, --- > "healthPercentage" : 0.4, 70c70 < "damage" : 25, --- > "damage" : 20, 98c98 < "baseValue" : 250 --- > "baseValue" : 1000 101c101 < "baseValue" : 40.0 --- > "baseValue" : 50.0 monsters\boss\penguinufo\skills\ufomovefireattack.monsterskill 20c20,28 < "power" : 4 --- > "power" : 5, > "periodicActions" : [ > { > "time" : 0, > "repeat" : false, > "action" : "sound", > "options" : [ "/sfx/gun/plasma_mp2.ogg" ] > } > ] monsters\boss\penguinufo\skills\ufopulsecannonattack.monsterskill 16c16 < "power" : 30, --- > "power" : 25, 22a23,26 > }, > { > "action" : "sound", > "options" : [ "/sfx/gun/plasma_ar1.ogg" ] monsters\boss\penguinufo\skills\uforeinforcementsattack.monsterskill 22a23,30 > "periodicActions" : [ > { > "time" : 0.1, > "repeat" : false, > "action" : "sound", > "options" : [ "/sfx/gun/plasma_shotgun2.ogg" ] > } > ], 53a62,65 > }, > { > "action" : "sound", > "options" : [ "/sfx/gun/pulsecannon_blast1.ogg" ] 66a79,86 > "periodicActions" : [ > { > "time" : 0.1, > "repeat" : false, > "action" : "sound", > "options" : [ "/sfx/gun/plasma_shotgun2.ogg" ] > } > ], 97a118,121 > }, > { > "action" : "sound", > "options" : [ "/sfx/gun/pulsecannon_blast1.ogg" ] monsters\boss\penguinufo\skills\ufoslamattack.lua 77a78 > animator.playSound("stunned", -1) 100a102 > animator.stopAllSounds("stunned") monsters\boss\penguinufo\skills\ufospawntanksattack.monsterskill 21a22,29 > "periodicActions" : [ > { > "time" : 0.1, > "repeat" : false, > "action" : "sound", > "options" : [ "/sfx/gun/plasma_shotgun2.ogg" ] > } > ], 52a61,64 > }, > { > "action" : "sound", > "options" : [ "/sfx/gun/pulsecannon_blast1.ogg" ] monsters\boss\penguinufo\skills\ufoteleportattack.lua 7a8 > animator.playSound("teleportOut") 36a38 > animator.playSound("teleportIn") npcs\merchant.npctype 62a63,66 > "flee" : { > "helpme" : "/dialog/flee.config:helpme", > "safe" : "/dialog/flee.config:safe" > }, 75c79,81 < } --- > }, > "accuse" : "/dialog/converse.config:accuse", > "alert" : "/dialog/converse.config:alert" npcs\villageguard.npctype 41c41,43 < "weaponSheathed" : "/dialog/guard.config:weaponSheathed" --- > "weaponSheathed" : "/dialog/guard.config:weaponSheathed", > > "accuse" : "/dialog/converse.config:accuse" npcs\villager.npctype 69,70d68 < "helpthem" : "/dialog/flee.config:helpthem", < "encourage" : "/dialog/flee.config:encourage", 72a71 > "breakObject" : "/dialog/converse.config:breakObject", 74c73,75 < "converse" : "/dialog/converse.config:converse" --- > "converse" : "/dialog/converse.config:converse", > "accuse" : "/dialog/converse.config:accuse", > "alert" : "/dialog/converse.config:alert" objects\ancient\challengedoor\challengedoor.lua 23c23,24 < self.radioMessage = util.interval(config.getParameter("messagePlayerInterval"), function() --- > if config.getParameter("messagePlayerInterval") then > self.radioMessage = util.interval(config.getParameter("messagePlayerInterval"), function() 29a31 > end 33c35,37 < self.radioMessage(dt) --- > if self.radioMessage ~= nil then > self.radioMessage(dt) > end objects\farmables\mothtrap\mothtrap.object 65c65 < "duration" : [215, 235] --- > "duration" : [85, 95] 68c68 < "duration" : [215, 235] --- > "duration" : [85, 95] objects\mission\lunarquestturnin\drillmachine.object 63a64,65 > > "questIndicatorPosition" : [-9.75, -8], objects\outpost\infinityexpress\infinityexpress.object 42c42,46 < { "item" : "teddybearplush" } --- > { "item" : "fabric", "count" : 1 }, > { "item" : "leather", "count" : 1 }, > { "item" : "silk", "count" : 1 }, > { "item" : "canvas", "count" : 1 }, > { "item" : "syntheticmaterial", "count" : 1 } objects\outpost\repairo\repairo.lua 19,46c19 < < local chips = world.containerItemAt(entity.id(), 0) < local controller = world.containerItemAt(entity.id(), 1) < if chips and chips.name == "autochip" and controller and root.itemHasTag(controller.name, "vehiclecontroller") then < local healthFactor = controller.parameters.vehicleStartHealthFactor < if controller.parameters.filled == false then healthFactor = 0 end < if healthFactor and healthFactor < 1.0 then < if consumeChip() then < healthFactor = math.min(healthFactor + config.getParameter("chipRepairFactor", 1.0), 1.0) < setControllerHealthFactor(healthFactor) < end < end < end < end < < function consumeChip() < local consumed = world.containerConsumeAt(entity.id(), 0, 1) < return consumed < end < < function setControllerHealthFactor(healthFactor) < local controller = world.containerItemAt(entity.id(), 1) < if controller and root.itemHasTag(controller.name, "vehiclecontroller") then < controller.parameters.filled = true < controller.parameters.vehicleStartHealthFactor = healthFactor < world.containerSwapItemsNoCombine(entity.id(), controller, 1) < end < end --- > end \ No newline at end of file objects\outpost\repairo\repairo.object 8d7 < "objectType" : "container", 37a37,39 > "interactAction" : "ScriptPane", > "interactData" : "/interface/scripted/vehiclerepair/vehiclerepairgui.config", > 49,55c51 < ], < < "openSounds" : [ "/sfx/objects/gunchest_open.ogg" ], < "slotCount" : 2, < "uiConfig" : "/interface/objectcrafting/repairo.config", < "frameCooldown" : 5, < "autoCloseCooldown" : 3600 --- > ] objects\outpost\shipyardcaptain\shipyardcaptain.object 37,38c37,38 < "mouthPosition" : [-2.5, -4.5], < "questIndicatorPosition" : [-2.5, -4.5] --- > "mouthPosition" : [-2.5, -5], > "questIndicatorPosition" : [-2.5, -5] projectiles\activeitems\staff\elementorb\electricorb.projectile 9c9 < "periodicActions" : [ --- > "periodicActions" : [ scripts\actions\dialog.lua 4a5,14 > function entityVariant() > if entity.entityType() == "monster" then > return monster.type() > elseif entity.entityType() == "npc" then > return npc.npcType() > elseif entity.entityType() == "object" then > return world.entityName(entity.id()) > end > end > 83a94,98 > > if dialog == nil then > error(string.format("Dialog type %s not specified in %s", args.dialogType, entityVariant())) > end > scripts\actions\notification.lua 11a12 > if notification.targetPosition then BData:setPosition(output.targetPosition, notification.targetPosition) end