v1.4.4
This commit is contained in:
commit
9c94d113d3
10260 changed files with 1237388 additions and 0 deletions
9
assets/devel/monsters/bugs/moondancer/body.monsterpart
Normal file
9
assets/devel/monsters/bugs/moondancer/body.monsterpart
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"name" : "body",
|
||||
"category" : "moondancer",
|
||||
"type" : "body",
|
||||
|
||||
"frames" : {
|
||||
"body" : "body.png"
|
||||
}
|
||||
}
|
BIN
assets/devel/monsters/bugs/moondancer/body.png
Normal file
BIN
assets/devel/monsters/bugs/moondancer/body.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.7 KiB |
9
assets/devel/monsters/bugs/moondancer/glow.monsterpart
Normal file
9
assets/devel/monsters/bugs/moondancer/glow.monsterpart
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"name" : "head",
|
||||
"category" : "moondancer",
|
||||
"type" : "head",
|
||||
|
||||
"frames" : {
|
||||
"head" : "glow.png"
|
||||
}
|
||||
}
|
BIN
assets/devel/monsters/bugs/moondancer/glow.png
Normal file
BIN
assets/devel/monsters/bugs/moondancer/glow.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.7 KiB |
67
assets/devel/monsters/bugs/moondancer/moondancer.animation
Normal file
67
assets/devel/monsters/bugs/moondancer/moondancer.animation
Normal file
|
@ -0,0 +1,67 @@
|
|||
{
|
||||
"animatedParts" : {
|
||||
"parts" : {
|
||||
"body" : {
|
||||
"zLevel" : 0,
|
||||
"properties" : {
|
||||
"rotationGroup" : "body",
|
||||
"image" : "<partImage>"
|
||||
}
|
||||
},
|
||||
"head" : {
|
||||
"zLevel" : 1,
|
||||
"properties" : {
|
||||
"rotationGroup" : "body",
|
||||
"image" : "<partImage>",
|
||||
"fullbright" : true
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"rotationGroups" : {
|
||||
"body" : {
|
||||
"rotationCenter" : [0, 0],
|
||||
"angularVelocity" : 5
|
||||
}
|
||||
},
|
||||
|
||||
"particleEmitters" : {
|
||||
"trail" : {
|
||||
"active" : true,
|
||||
"emissionRate" : 10.0,
|
||||
"particles" : [
|
||||
{
|
||||
"particle" : {
|
||||
"type" : "animated",
|
||||
"animation" : "/animations/fizz2/fizz2.animation",
|
||||
"size" : 0.5,
|
||||
"angularVelocity" : 20,
|
||||
"fade" : 1,
|
||||
"destructionTime" : 0,
|
||||
"position" : [0, 0],
|
||||
"initialVelocity" : [0, 0],
|
||||
"timeToLive" : 4,
|
||||
"layer" : "middle",
|
||||
"variance" : {
|
||||
"initialVelocity" : [1, 1]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
"effects" : {
|
||||
"blink" : {
|
||||
"type" : "flash",
|
||||
"time" : 0,
|
||||
"directives" : "fade=ffffff;0.5"
|
||||
}
|
||||
},
|
||||
|
||||
"sounds" : {
|
||||
"turnHostile" : [ ],
|
||||
"deathPuff" : [ "/sfx/npc/enemydeathpuff.ogg" ]
|
||||
}
|
||||
}
|
10
assets/devel/monsters/bugs/moondancer/moondancer.frames
Normal file
10
assets/devel/monsters/bugs/moondancer/moondancer.frames
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"frameGrid" : {
|
||||
"size" : [3, 3],
|
||||
"dimensions" : [1, 1],
|
||||
|
||||
"names" : [
|
||||
[ "idle" ]
|
||||
]
|
||||
}
|
||||
}
|
115
assets/devel/monsters/bugs/moondancer/moondancer.monstertype
Normal file
115
assets/devel/monsters/bugs/moondancer/moondancer.monstertype
Normal file
|
@ -0,0 +1,115 @@
|
|||
{
|
||||
"type" : "moondancer",
|
||||
|
||||
"categories" : [ "moondancer" ],
|
||||
"parts" : [ "body", "head" ],
|
||||
|
||||
"animation" : "moondancer.animation",
|
||||
|
||||
"dropPools" : [
|
||||
{
|
||||
"default" : "empty",
|
||||
"bugnet" : "butterbee"
|
||||
}
|
||||
],
|
||||
|
||||
"baseParameters" : {
|
||||
"scripts" : [
|
||||
"/monsters/bugs/bug.lua",
|
||||
"/scripts/util.lua",
|
||||
"/scripts/vec2.lua"
|
||||
],
|
||||
|
||||
"buzzing" : {
|
||||
"riseSpeed" : 2,
|
||||
"minGroundDistance" : 2,
|
||||
"fallSpeed" : 3,
|
||||
"maxGroundDistance" : 5,
|
||||
"changeDirSpeed" : 2,
|
||||
"wanderDistance" : 5,
|
||||
|
||||
"rotationSpeed" : 2,
|
||||
"rotationChangeInterval" : 1
|
||||
},
|
||||
|
||||
"metaBoundBox" : [-0.5, -0.5, 0.5, 0.5],
|
||||
"scale" : 1.0,
|
||||
|
||||
"movementSettings" : {
|
||||
"collisionPoly" : [ [-0.5, -0.5], [0.5, -0.5], [0.5, 0.5], [-0.5, 0.5] ],
|
||||
|
||||
"mass" : 1,
|
||||
"walkSpeed" : 10,
|
||||
"runSpeed" : 10,
|
||||
"jumpSpeed" : 5,
|
||||
"flySpeed" : 3,
|
||||
"airFriction" : 0,
|
||||
"airForce" : 100.0,
|
||||
"gravityEnabled" : false
|
||||
},
|
||||
|
||||
"bodyMaterialKind" : "organic",
|
||||
|
||||
"knockoutTime" : 0.1,
|
||||
"knockoutEffect" : "",
|
||||
|
||||
"damageTeamType" : "passive",
|
||||
|
||||
"statusSettings" : {
|
||||
"statusProperties" : {
|
||||
"targetMaterialKind" : "organic"
|
||||
},
|
||||
|
||||
"appliesEnvironmentStatusEffects" : false,
|
||||
"appliesWeatherStatusEffects" : false,
|
||||
"minimumLiquidStatusEffectPercentage" : 0.1,
|
||||
|
||||
"primaryScriptSources" : [
|
||||
"/stats/monster_primary.lua"
|
||||
],
|
||||
"primaryScriptDelta" : 5,
|
||||
|
||||
"stats" : {
|
||||
"knockbackStunTime" : {
|
||||
"baseValue" : 0.25
|
||||
},
|
||||
"knockbackThreshold" : {
|
||||
"baseValue" : 9
|
||||
},
|
||||
"maxHealth" : {
|
||||
"baseValue" : 1
|
||||
},
|
||||
"protection" : {
|
||||
"baseValue" : 0.0
|
||||
},
|
||||
"healthRegen" : {
|
||||
"baseValue" : 0.0
|
||||
},
|
||||
"wetImmunity" : {
|
||||
"baseValue" : 1.0
|
||||
},
|
||||
"powerMultiplier" : {
|
||||
"baseValue" : 1.0
|
||||
}
|
||||
},
|
||||
|
||||
"resources" : {
|
||||
"stunned" : {
|
||||
"deltaValue" : -1.0,
|
||||
"initialValue" : 0.0
|
||||
},
|
||||
"health" : {
|
||||
"maxStat" : "maxHealth",
|
||||
"deltaStat" : "healthRegen",
|
||||
"defaultPercentage" : 100
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"mouthOffset" : [0, 0],
|
||||
"feetOffset" : [0, -8],
|
||||
|
||||
"capturable" : false,
|
||||
"relocatable" : true
|
||||
}
|
||||
}
|
212
assets/devel/monsters/flyers/scandroid/orbitroid.monstertype
Normal file
212
assets/devel/monsters/flyers/scandroid/orbitroid.monstertype
Normal file
|
@ -0,0 +1,212 @@
|
|||
{
|
||||
"type" : "orbitroid",
|
||||
"shortdescription" : "Scandroid",
|
||||
"description" : "The Scandroid is on an endless search. No one knows what for.",
|
||||
|
||||
"categories" : [ "scandroid" ],
|
||||
"parts" : [ "body" ],
|
||||
|
||||
"animation" : "scandroid.animation",
|
||||
|
||||
"dropPools" : [],
|
||||
|
||||
"baseParameters" : {
|
||||
"scripts" : [
|
||||
"/monsters/monster.lua"
|
||||
],
|
||||
|
||||
"behavior" : "monster",
|
||||
|
||||
"seeThroughLiquid" : false,
|
||||
"behaviorConfig" : {
|
||||
"damageOnTouch" : true,
|
||||
|
||||
"targetQueryRange" : 50,
|
||||
"targetOnDamage" : true,
|
||||
"keepTargetInSight" : true,
|
||||
"keepTargetInRange" : 100,
|
||||
"targetOutOfSightTime" : 10.0,
|
||||
|
||||
"hurtWaitForGround" : false,
|
||||
|
||||
"foundTargetActions" : [
|
||||
{
|
||||
"name" : "action-animate",
|
||||
"parameters" : {
|
||||
"stateType" : "body",
|
||||
"state" : "aggro",
|
||||
"animationTime" : 0.6
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
"fleeActions" : [ ],
|
||||
|
||||
"hostileActions" : [ ],
|
||||
|
||||
"periodicActions" : [ ],
|
||||
|
||||
"approachActions" : [
|
||||
{
|
||||
"name" : "approach-orbit",
|
||||
"parameters" : {
|
||||
"approachSpeed" : 4
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
"followActions" : [
|
||||
{
|
||||
"name" : "approach-teleport",
|
||||
"parameters" : {
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "approach-orbit"
|
||||
}
|
||||
],
|
||||
|
||||
"wanderActions" : [],
|
||||
|
||||
"concurrentActions" : [
|
||||
{
|
||||
"name" : "action-globaltag",
|
||||
"parameters" : {
|
||||
"tagName" : "aggro",
|
||||
"tag" : ""
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
"concurrentHostileActions" : [
|
||||
{
|
||||
"name" : "action-globaltag",
|
||||
"parameters" : {
|
||||
"tagName" : "aggro",
|
||||
"tag" : "aggro"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
"touchDamage" : {
|
||||
"poly" : [ [0.625, 0.9375], [1.125, 0.4375], [1.125, -0.4375], [0.625, -0.9375], [-0.625, -0.9375], [-1.125, -0.4375], [-1.125, 0.4375], [-0.625, 0.9375] ],
|
||||
"damage" : 9,
|
||||
|
||||
"teamType" : "enemy",
|
||||
"damageSourceKind" : "lash",
|
||||
"knockback" : 20,
|
||||
"statusEffects" : [ ]
|
||||
},
|
||||
|
||||
"metaBoundBox" : [-4, -4, 4, 4],
|
||||
"scale" : 1.0,
|
||||
|
||||
"movementSettings" : {
|
||||
"collisionPoly" : [ [0.625, 0.9375], [1.125, 0.4375], [1.125, -0.4375], [0.625, -0.9375], [-0.625, -0.9375], [-1.125, -0.4375], [-1.125, 0.4375], [-0.625, 0.9375] ],
|
||||
|
||||
"mass" : 2.0,
|
||||
"walkSpeed" : 4,
|
||||
"runSpeed" : 12,
|
||||
"gravityEnabled" : false,
|
||||
|
||||
"bounceFactor" : 0.0,
|
||||
"groundFriction" : 10,
|
||||
|
||||
"airFriction" : 0,
|
||||
"airForce" : 32,
|
||||
"flySpeed" : 15
|
||||
},
|
||||
|
||||
"bodyMaterialKind" : "robotic",
|
||||
|
||||
"knockoutTime" : 0.3,
|
||||
"knockoutAnimationStates" : {
|
||||
"damage" : "stunned"
|
||||
},
|
||||
"deathParticles" : "deathPoof",
|
||||
"knockoutEffect" : "",
|
||||
|
||||
"statusSettings" : {
|
||||
"statusProperties" : {
|
||||
"targetMaterialKind" : "robotic"
|
||||
},
|
||||
|
||||
"appliesEnvironmentStatusEffects" : false,
|
||||
"appliesWeatherStatusEffects" : true,
|
||||
"minimumLiquidStatusEffectPercentage" : 0.1,
|
||||
|
||||
"primaryScriptSources" : [
|
||||
"/stats/monster_primary.lua"
|
||||
],
|
||||
"primaryScriptDelta" : 5,
|
||||
|
||||
"stats" : {
|
||||
"grit" : {
|
||||
"baseValue" : 0.25
|
||||
},
|
||||
"knockbackStunTime" : {
|
||||
"baseValue" : 0.3
|
||||
},
|
||||
"knockbackThreshold" : {
|
||||
"baseValue" : 9
|
||||
},
|
||||
"maxHealth" : {
|
||||
"baseValue" : 30
|
||||
},
|
||||
"protection" : {
|
||||
"baseValue" : 0.0
|
||||
},
|
||||
"healthRegen" : {
|
||||
"baseValue" : 0.0
|
||||
},
|
||||
"powerMultiplier" : {
|
||||
"baseValue" : 1.0
|
||||
},
|
||||
"physicalResistance" : {
|
||||
"baseValue" : 0.0
|
||||
},
|
||||
"fireResistance" : {
|
||||
"baseValue" : 0.0
|
||||
},
|
||||
"fireStatusImmunity" : {
|
||||
"baseValue" : 0.0
|
||||
},
|
||||
"iceResistance" : {
|
||||
"baseValue" : 0.0
|
||||
},
|
||||
"iceStatusImmunity" : {
|
||||
"baseValue" : 0.0
|
||||
},
|
||||
"electricResistance" : {
|
||||
"baseValue" : -0.5
|
||||
},
|
||||
"electricStatusImmunity" : {
|
||||
"baseValue" : 0.0
|
||||
},
|
||||
"poisonResistance" : {
|
||||
"baseValue" : 0.5
|
||||
},
|
||||
"poisonStatusImmunity" : {
|
||||
"baseValue" : 1.0
|
||||
}
|
||||
},
|
||||
|
||||
"resources" : {
|
||||
"stunned" : {
|
||||
"deltaValue" : -1.0,
|
||||
"initialValue" : 0.0
|
||||
},
|
||||
"health" : {
|
||||
"maxStat" : "maxHealth",
|
||||
"deltaStat" : "healthRegen",
|
||||
"defaultPercentage" : 100
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"mouthOffset" : [0, 0],
|
||||
"feetOffset" : [0, -8],
|
||||
"capturable" : false
|
||||
}
|
||||
}
|
247
assets/devel/monsters/flyers/scandroid/swarpdroid.monstertype
Normal file
247
assets/devel/monsters/flyers/scandroid/swarpdroid.monstertype
Normal file
|
@ -0,0 +1,247 @@
|
|||
{
|
||||
"type" : "swarpdroid",
|
||||
"shortdescription" : "Scandroid",
|
||||
"description" : "The Scandroid is on an endless search. No one knows what for.",
|
||||
|
||||
"categories" : [ "scandroid" ],
|
||||
"parts" : [ "body" ],
|
||||
|
||||
"animation" : "scandroid.animation",
|
||||
|
||||
"dropPools" : [],
|
||||
|
||||
"baseParameters" : {
|
||||
"scripts" : [
|
||||
"/monsters/monster.lua"
|
||||
],
|
||||
|
||||
"behavior" : "monster",
|
||||
|
||||
"seeThroughLiquid" : false,
|
||||
"behaviorConfig" : {
|
||||
"damageOnTouch" : true,
|
||||
|
||||
"targetQueryRange" : 50,
|
||||
"targetOnDamage" : true,
|
||||
"keepTargetInSight" : true,
|
||||
"keepTargetInRange" : 100,
|
||||
"targetOutOfSightTime" : 10.0,
|
||||
|
||||
"hurtWaitForGround" : false,
|
||||
|
||||
"foundTargetActions" : [
|
||||
{
|
||||
"name" : "action-animate",
|
||||
"parameters" : {
|
||||
"stateType" : "body",
|
||||
"state" : "aggro",
|
||||
"animationTime" : 0.6
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
"fleeActions" : [ ],
|
||||
|
||||
"hostileActions" : [
|
||||
{
|
||||
"name" : "action-fire",
|
||||
"cooldown" : 2,
|
||||
"parameters" : {
|
||||
"requireLineOfSight" : true,
|
||||
"maximumRange" : 25,
|
||||
"minimumRange" : 15,
|
||||
"windupStopForce" : 50,
|
||||
"windupState" : "fire",
|
||||
"windupTime" : 0.4,
|
||||
|
||||
"projectileType" : "energycrystal",
|
||||
"projectileParameters" : {
|
||||
"speed" : 25
|
||||
},
|
||||
"fireOffset" : [0, 0],
|
||||
"aimAtTarget" : true,
|
||||
"onGround" : false,
|
||||
"fireState" : "",
|
||||
"fireSound" : "",
|
||||
|
||||
"winddownStopForce" : 50,
|
||||
"winddownState" : "",
|
||||
"winddownTime" : 0.5
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "approach-swarm",
|
||||
"cooldown" : 2,
|
||||
"parameters" : {
|
||||
"maxRange" : 20,
|
||||
"minMoveDistance" : 15,
|
||||
"idleTime" : 0.0
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
"periodicActions" : [ ],
|
||||
|
||||
"approachActions" : [
|
||||
],
|
||||
|
||||
"followActions" : [
|
||||
{
|
||||
"name" : "approach-teleport",
|
||||
"parameters" : {
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "approach-swarm",
|
||||
"parameters" : {
|
||||
"maxRange" : 20,
|
||||
"minMoveDistance" : 12,
|
||||
"idleTime" : 0.0
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
"wanderActions" : [],
|
||||
|
||||
"concurrentActions" : [
|
||||
{
|
||||
"name" : "action-globaltag",
|
||||
"parameters" : {
|
||||
"tagName" : "aggro",
|
||||
"tag" : ""
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
"concurrentHostileActions" : [
|
||||
{
|
||||
"name" : "action-globaltag",
|
||||
"parameters" : {
|
||||
"tagName" : "aggro",
|
||||
"tag" : "aggro"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
"touchDamage" : {
|
||||
"poly" : [ [0.625, 0.9375], [1.125, 0.4375], [1.125, -0.4375], [0.625, -0.9375], [-0.625, -0.9375], [-1.125, -0.4375], [-1.125, 0.4375], [-0.625, 0.9375] ],
|
||||
"damage" : 9,
|
||||
|
||||
"teamType" : "enemy",
|
||||
"damageSourceKind" : "lash",
|
||||
"knockback" : 20,
|
||||
"statusEffects" : [ ]
|
||||
},
|
||||
|
||||
"metaBoundBox" : [-4, -4, 4, 4],
|
||||
"scale" : 1.0,
|
||||
|
||||
"movementSettings" : {
|
||||
"collisionPoly" : [ [0.625, 0.9375], [1.125, 0.4375], [1.125, -0.4375], [0.625, -0.9375], [-0.625, -0.9375], [-1.125, -0.4375], [-1.125, 0.4375], [-0.625, 0.9375] ],
|
||||
|
||||
"mass" : 2.0,
|
||||
"walkSpeed" : 4,
|
||||
"runSpeed" : 12,
|
||||
"gravityEnabled" : false,
|
||||
|
||||
"bounceFactor" : 0.0,
|
||||
"groundFriction" : 10,
|
||||
|
||||
"airFriction" : 0,
|
||||
"airForce" : 100,
|
||||
"flySpeed" : 20
|
||||
},
|
||||
|
||||
"bodyMaterialKind" : "robotic",
|
||||
|
||||
"knockoutTime" : 0.3,
|
||||
"knockoutAnimationStates" : {
|
||||
"damage" : "stunned"
|
||||
},
|
||||
"deathParticles" : "deathPoof",
|
||||
"knockoutEffect" : "",
|
||||
|
||||
"statusSettings" : {
|
||||
"statusProperties" : {
|
||||
"targetMaterialKind" : "robotic"
|
||||
},
|
||||
|
||||
"appliesEnvironmentStatusEffects" : false,
|
||||
"appliesWeatherStatusEffects" : true,
|
||||
"minimumLiquidStatusEffectPercentage" : 0.1,
|
||||
|
||||
"primaryScriptSources" : [
|
||||
"/stats/monster_primary.lua"
|
||||
],
|
||||
"primaryScriptDelta" : 5,
|
||||
|
||||
"stats" : {
|
||||
"grit" : {
|
||||
"baseValue" : 0.25
|
||||
},
|
||||
"knockbackStunTime" : {
|
||||
"baseValue" : 0.3
|
||||
},
|
||||
"knockbackThreshold" : {
|
||||
"baseValue" : 9
|
||||
},
|
||||
"maxHealth" : {
|
||||
"baseValue" : 30
|
||||
},
|
||||
"protection" : {
|
||||
"baseValue" : 0.0
|
||||
},
|
||||
"healthRegen" : {
|
||||
"baseValue" : 0.0
|
||||
},
|
||||
"powerMultiplier" : {
|
||||
"baseValue" : 1.0
|
||||
},
|
||||
"physicalResistance" : {
|
||||
"baseValue" : 0.0
|
||||
},
|
||||
"fireResistance" : {
|
||||
"baseValue" : 0.0
|
||||
},
|
||||
"fireStatusImmunity" : {
|
||||
"baseValue" : 0.0
|
||||
},
|
||||
"iceResistance" : {
|
||||
"baseValue" : 0.0
|
||||
},
|
||||
"iceStatusImmunity" : {
|
||||
"baseValue" : 0.0
|
||||
},
|
||||
"electricResistance" : {
|
||||
"baseValue" : -0.5
|
||||
},
|
||||
"electricStatusImmunity" : {
|
||||
"baseValue" : 0.0
|
||||
},
|
||||
"poisonResistance" : {
|
||||
"baseValue" : 0.5
|
||||
},
|
||||
"poisonStatusImmunity" : {
|
||||
"baseValue" : 1.0
|
||||
}
|
||||
},
|
||||
|
||||
"resources" : {
|
||||
"stunned" : {
|
||||
"deltaValue" : -1.0,
|
||||
"initialValue" : 0.0
|
||||
},
|
||||
"health" : {
|
||||
"maxStat" : "maxHealth",
|
||||
"deltaStat" : "healthRegen",
|
||||
"defaultPercentage" : 100
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"mouthOffset" : [0, 0],
|
||||
"feetOffset" : [0, -8],
|
||||
"capturable" : false
|
||||
}
|
||||
}
|
216
assets/devel/monsters/flyers/scandroid/turndroid.monstertype
Normal file
216
assets/devel/monsters/flyers/scandroid/turndroid.monstertype
Normal file
|
@ -0,0 +1,216 @@
|
|||
{
|
||||
"type" : "turndroid",
|
||||
"shortdescription" : "Scandroid",
|
||||
"description" : "The Scandroid is on an endless search. No one knows what for.",
|
||||
|
||||
"categories" : [ "scandroid" ],
|
||||
"parts" : [ "body" ],
|
||||
|
||||
"animation" : "scandroid.animation",
|
||||
|
||||
"dropPools" : [],
|
||||
|
||||
"baseParameters" : {
|
||||
"scripts" : [
|
||||
"/monsters/monster.lua"
|
||||
],
|
||||
|
||||
"behavior" : "monster",
|
||||
|
||||
"seeThroughLiquid" : false,
|
||||
"behaviorConfig" : {
|
||||
"damageOnTouch" : true,
|
||||
|
||||
"targetQueryRange" : 50,
|
||||
"targetOnDamage" : true,
|
||||
"keepTargetInSight" : true,
|
||||
"keepTargetInRange" : 100,
|
||||
"targetOutOfSightTime" : 10.0,
|
||||
|
||||
"hurtWaitForGround" : false,
|
||||
|
||||
"foundTargetActions" : [
|
||||
{
|
||||
"name" : "action-animate",
|
||||
"parameters" : {
|
||||
"stateType" : "body",
|
||||
"state" : "aggro",
|
||||
"animationTime" : 0.2
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
"fleeActions" : [ ],
|
||||
|
||||
"hostileActions" : [
|
||||
],
|
||||
|
||||
"periodicActions" : [ ],
|
||||
|
||||
"approachActions" : [
|
||||
{
|
||||
"name" : "approach-turn",
|
||||
"parameters" : {
|
||||
"turnSpeed" : 0.8
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
"followActions" : [
|
||||
{
|
||||
"name" : "approach-teleport",
|
||||
"parameters" : {
|
||||
}
|
||||
},
|
||||
{
|
||||
"name" : "approach-turn",
|
||||
"parameters" : {
|
||||
"turnSpeed" : 1.6
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
"wanderActions" : [],
|
||||
|
||||
"concurrentActions" : [
|
||||
{
|
||||
"name" : "action-globaltag",
|
||||
"parameters" : {
|
||||
"tagName" : "aggro",
|
||||
"tag" : ""
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
"concurrentHostileActions" : [
|
||||
{
|
||||
"name" : "action-globaltag",
|
||||
"parameters" : {
|
||||
"tagName" : "aggro",
|
||||
"tag" : "aggro"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
"touchDamage" : {
|
||||
"poly" : [ [0.625, 0.9375], [1.125, 0.4375], [1.125, -0.4375], [0.625, -0.9375], [-0.625, -0.9375], [-1.125, -0.4375], [-1.125, 0.4375], [-0.625, 0.9375] ],
|
||||
"damage" : 9,
|
||||
|
||||
"teamType" : "enemy",
|
||||
"damageSourceKind" : "lash",
|
||||
"knockback" : 20,
|
||||
"statusEffects" : [ ]
|
||||
},
|
||||
|
||||
"metaBoundBox" : [-4, -4, 4, 4],
|
||||
"scale" : 1.0,
|
||||
|
||||
"movementSettings" : {
|
||||
"collisionPoly" : [ [0.625, 0.9375], [1.125, 0.4375], [1.125, -0.4375], [0.625, -0.9375], [-0.625, -0.9375], [-1.125, -0.4375], [-1.125, 0.4375], [-0.625, 0.9375] ],
|
||||
|
||||
"mass" : 2.0,
|
||||
"walkSpeed" : 4,
|
||||
"runSpeed" : 12,
|
||||
"gravityEnabled" : false,
|
||||
|
||||
"bounceFactor" : 0.0,
|
||||
"groundFriction" : 10,
|
||||
|
||||
"airFriction" : 0,
|
||||
"airForce" : 100,
|
||||
"flySpeed" : 8
|
||||
},
|
||||
|
||||
"bodyMaterialKind" : "robotic",
|
||||
|
||||
"knockoutTime" : 0.3,
|
||||
"knockoutAnimationStates" : {
|
||||
"damage" : "stunned"
|
||||
},
|
||||
"deathParticles" : "deathPoof",
|
||||
"knockoutEffect" : "",
|
||||
|
||||
"statusSettings" : {
|
||||
"statusProperties" : {
|
||||
"targetMaterialKind" : "robotic"
|
||||
},
|
||||
|
||||
"appliesEnvironmentStatusEffects" : false,
|
||||
"appliesWeatherStatusEffects" : true,
|
||||
"minimumLiquidStatusEffectPercentage" : 0.1,
|
||||
|
||||
"primaryScriptSources" : [
|
||||
"/stats/monster_primary.lua"
|
||||
],
|
||||
"primaryScriptDelta" : 5,
|
||||
|
||||
"stats" : {
|
||||
"grit" : {
|
||||
"baseValue" : 0.25
|
||||
},
|
||||
"knockbackStunTime" : {
|
||||
"baseValue" : 0.3
|
||||
},
|
||||
"knockbackThreshold" : {
|
||||
"baseValue" : 9
|
||||
},
|
||||
"maxHealth" : {
|
||||
"baseValue" : 30
|
||||
},
|
||||
"protection" : {
|
||||
"baseValue" : 0.0
|
||||
},
|
||||
"healthRegen" : {
|
||||
"baseValue" : 0.0
|
||||
},
|
||||
"powerMultiplier" : {
|
||||
"baseValue" : 1.0
|
||||
},
|
||||
"physicalResistance" : {
|
||||
"baseValue" : 0.0
|
||||
},
|
||||
"fireResistance" : {
|
||||
"baseValue" : 0.0
|
||||
},
|
||||
"fireStatusImmunity" : {
|
||||
"baseValue" : 0.0
|
||||
},
|
||||
"iceResistance" : {
|
||||
"baseValue" : 0.0
|
||||
},
|
||||
"iceStatusImmunity" : {
|
||||
"baseValue" : 0.0
|
||||
},
|
||||
"electricResistance" : {
|
||||
"baseValue" : -0.5
|
||||
},
|
||||
"electricStatusImmunity" : {
|
||||
"baseValue" : 0.0
|
||||
},
|
||||
"poisonResistance" : {
|
||||
"baseValue" : 0.5
|
||||
},
|
||||
"poisonStatusImmunity" : {
|
||||
"baseValue" : 1.0
|
||||
}
|
||||
},
|
||||
|
||||
"resources" : {
|
||||
"stunned" : {
|
||||
"deltaValue" : -1.0,
|
||||
"initialValue" : 0.0
|
||||
},
|
||||
"health" : {
|
||||
"maxStat" : "maxHealth",
|
||||
"deltaStat" : "healthRegen",
|
||||
"defaultPercentage" : 100
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"mouthOffset" : [0, 0],
|
||||
"feetOffset" : [0, -8],
|
||||
"capturable" : false
|
||||
}
|
||||
}
|
95
assets/devel/monsters/pathState.lua
Normal file
95
assets/devel/monsters/pathState.lua
Normal file
|
@ -0,0 +1,95 @@
|
|||
pathState = {
|
||||
moveToTargetMinDistance = 3,
|
||||
maxYDistanceFromSpawnPoint = 5,
|
||||
defaultIndoorSearchRadius = 30
|
||||
}
|
||||
|
||||
function pathState.enter()
|
||||
local targetPosition,targetBeacon = pathState.findGoal()
|
||||
local desiredDistance = config.getParameter("pathing.desiredDistance", 2)
|
||||
|
||||
if not targetPosition then
|
||||
return nil
|
||||
elseif world.magnitude(world.distance(targetPosition, mcontroller.position())) < desiredDistance then
|
||||
return nil
|
||||
end
|
||||
|
||||
return {
|
||||
targetPosition = targetPosition,
|
||||
targetBeacon = targetBeacon,
|
||||
desiredDistance = desiredDistance,
|
||||
pather = Pather:new({run = config.getParameter("pathing.run", true)})
|
||||
}
|
||||
end
|
||||
|
||||
function pathState.enteringState(stateData)
|
||||
local position = mcontroller.position()aa
|
||||
|
||||
script.setUpdateDelta(1)
|
||||
end
|
||||
|
||||
function pathState.update(dt, stateData)
|
||||
local position = mcontroller.position()
|
||||
|
||||
-- Find goal position
|
||||
if not stateData.targetPosition then
|
||||
return true
|
||||
end
|
||||
|
||||
local toTarget = world.distance(stateData.targetPosition, position)
|
||||
local moved = pather.move(stateData.targetPosition, dt)
|
||||
if moved == "running" then
|
||||
mcontroller.controlFace(pather.deltaX)
|
||||
setMovementState()
|
||||
elseif moved == false then
|
||||
-- Stay in pathing state even when stuck
|
||||
setIdleState()
|
||||
return false
|
||||
elseif moved == true then
|
||||
-- Reached the target
|
||||
return true
|
||||
end
|
||||
|
||||
if world.magnitude(toTarget) <= stateData.desiredDistance then
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
function pathState.leavingState(stateData)
|
||||
world.debugText("leavingPathState", mcontroller.position(), "red")
|
||||
|
||||
local position = mcontroller.position()
|
||||
if stateData.targetBeacon ~= nil then
|
||||
local distance = world.magnitude(world.distance(stateData.targetPosition, position))
|
||||
if distance < stateData.desiredDistance then
|
||||
world.callScriptedEntity(stateData.targetBeacon, "onInteraction")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function pathState.findGoal()
|
||||
local nearObjects = world.entityQuery(mcontroller.position(), 100, {
|
||||
includedTypes = { "object"},
|
||||
withoutEntityId = entity.id(),
|
||||
boundMode = "Position",
|
||||
order = "nearest"
|
||||
})
|
||||
local targetPosition
|
||||
for _,objectId in pairs(nearObjects) do
|
||||
if world.entityName(objectId) == "apexstatue3" then
|
||||
local targetPosition = world.entityPosition(objectId)
|
||||
targetPosition[2] = targetPosition[2] - pathState.collisionBottom()
|
||||
return targetPosition, objectId
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function pathState.collisionBottom()
|
||||
local lowest = 0
|
||||
for _,point in pairs(mcontroller.collisionPoly()) do
|
||||
if point[2] < lowest then
|
||||
lowest = point[2]
|
||||
end
|
||||
end
|
||||
return lowest
|
||||
end
|
183
assets/devel/monsters/pets/cat/pathdebugcat.monstertype
Normal file
183
assets/devel/monsters/pets/cat/pathdebugcat.monstertype
Normal file
|
@ -0,0 +1,183 @@
|
|||
{
|
||||
"type" : "pathdebugcat",
|
||||
|
||||
"categories" : [ "petcat" ],
|
||||
"parts" : [ "body" ],
|
||||
|
||||
"animation" : "petcat.animation",
|
||||
|
||||
"dropPools" : [ "basicMonsterTreasure" ],
|
||||
|
||||
"baseParameters" : {
|
||||
"scripts" : [
|
||||
"/scripts/stateMachine.lua",
|
||||
"/scripts/util.lua",
|
||||
"/scripts/vec2.lua",
|
||||
|
||||
"/monsters/pets/groundPet.lua",
|
||||
"/monsters/pets/cat/catBehavior.lua",
|
||||
"/monsters/pathState.lua"
|
||||
],
|
||||
|
||||
"skills" : [],
|
||||
|
||||
"pathing": {
|
||||
"desiredDistance": 2,
|
||||
"run" : true
|
||||
},
|
||||
|
||||
"behavior" : "catBehavior",
|
||||
"behaviorParams" : {
|
||||
"food" : {},
|
||||
"monsters" : {
|
||||
}
|
||||
},
|
||||
|
||||
"petResources" : {
|
||||
"sleepy" : 10,
|
||||
"hunger" : 10,
|
||||
"playful" : 60,
|
||||
"curiosity" : 60
|
||||
},
|
||||
"petResourceDeltas" : {
|
||||
"sleepy" : 0.5,
|
||||
"hunger" : 0.5,
|
||||
"playful" : 1,
|
||||
"curiosity" : 1
|
||||
},
|
||||
|
||||
"actionCooldowns" : {
|
||||
"inspect" : 20,
|
||||
"play" : 2,
|
||||
"pounce" : 5,
|
||||
"eat" : 5,
|
||||
"beg" : 20,
|
||||
"follow" : 0
|
||||
},
|
||||
|
||||
"territoryDistance" : 40.0,
|
||||
"territorialTargetRadius" : 20.0,
|
||||
"minimalTargetRadius" : 6.0,
|
||||
"targetSearchTime" : 0.5,
|
||||
"targetHoldTime" : 5,
|
||||
|
||||
"metaBoundBox" : [-1.625, -2.375, 1.75, 2.0],
|
||||
"scale" : 1.0,
|
||||
|
||||
"querySurroundingsCooldown" : 1,
|
||||
|
||||
"wander" : {
|
||||
"wanderTime" : [5, 10],
|
||||
"changeDirectionTime" : [5, 10],
|
||||
"changeDirectionWait" : [1, 3]
|
||||
},
|
||||
|
||||
"follow" : {
|
||||
"startDistance" : 15,
|
||||
"stopDistance" : 10,
|
||||
"runDistance" : 20,
|
||||
"targetMoveDistance" : 5
|
||||
},
|
||||
|
||||
"pounce" : {
|
||||
"maxRange" : 10,
|
||||
"minRange" : 5
|
||||
},
|
||||
|
||||
"idle" : {
|
||||
"idleTime" : [2, 4]
|
||||
},
|
||||
|
||||
"movementSettings" : {
|
||||
"collisionPoly" : [ [-0.75, -1], [0.75, -1], [0.75, 0.5], [-0.75, 0.5] ],
|
||||
|
||||
"mass" : 1.0,
|
||||
"gravityMultiplier" : 1.5,
|
||||
"walkSpeed" : 4,
|
||||
"runSpeed" : 14,
|
||||
"flySpeed" : 15,
|
||||
"airForce" : 50.0
|
||||
},
|
||||
|
||||
"bodyMaterialKind" : "organic",
|
||||
|
||||
"knockoutTime" : 0.3,
|
||||
"knockoutEffect" : "blink",
|
||||
"deathParticles" : "deathPoof",
|
||||
|
||||
"touchDamage" : {
|
||||
"poly" : [ [-1.625, -2.375], [1.75, -2.375], [1.75, 2.0], [-1.625, 2.0] ],
|
||||
"damage" : 15,
|
||||
|
||||
"teamType" : "enemy",
|
||||
"damageSourceKind" : "lash",
|
||||
"statusEffects" : [ ]
|
||||
},
|
||||
|
||||
"dropPools" : [ "potreasure" ],
|
||||
|
||||
"statusSettings" : {
|
||||
"statusProperties" : {
|
||||
"targetMaterialKind" : "organic"
|
||||
},
|
||||
|
||||
"appliesEnvironmentStatusEffects" : false,
|
||||
"appliesWeatherStatusEffects" : false,
|
||||
"minimumLiquidStatusEffectPercentage" : 0.1,
|
||||
|
||||
"primaryScriptSources" : [
|
||||
"/stats/monster_primary.lua"
|
||||
],
|
||||
"primaryScriptDelta" : 5,
|
||||
|
||||
"stats" : {
|
||||
"knockbackStunTime" : {
|
||||
"baseValue" : 0.25
|
||||
},
|
||||
"knockbackThreshold" : {
|
||||
"baseValue" : 10
|
||||
},
|
||||
"maxHealth" : {
|
||||
"baseValue" : 72
|
||||
},
|
||||
"protection" : {
|
||||
"baseValue" : 1.0
|
||||
},
|
||||
"healthRegen" : {
|
||||
"baseValue" : 0.0
|
||||
}
|
||||
},
|
||||
|
||||
"resources" : {
|
||||
"stunned" : {
|
||||
"deltaValue" : -1.0,
|
||||
"initialValue" : 0.0
|
||||
},
|
||||
"health" : {
|
||||
"maxStat" : "maxHealth",
|
||||
"deltaStat" : "healthRegen",
|
||||
"defaultPercentage" : 100
|
||||
},
|
||||
"sleepy" : {
|
||||
"maxValue" : 100,
|
||||
"defaultPercentage" : 10
|
||||
},
|
||||
"hunger" : {
|
||||
"maxValue" : 100,
|
||||
"defaultPercentage" : 10
|
||||
},
|
||||
"playful" : {
|
||||
"maxValue" : 100,
|
||||
"defaultPercentage" : 10
|
||||
},
|
||||
"curiosity" : {
|
||||
"maxValue" : 100,
|
||||
"defaultPercentage" : 10
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"mouthOffset" : [0, 0],
|
||||
"feetOffset" : [0, -8]
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue