From 758a3324a79193a7586ba125d667ba3df1f3d9eb Mon Sep 17 00:00:00 2001 From: Frykas <80992171+Frykas@users.noreply.github.com> Date: Tue, 20 Jun 2023 02:10:01 -0400 Subject: [PATCH] Tanglevine Reanimator Added the Tanglevine Reanimator, along its figurine and coresponding collection entries updated the wither splinter projectile so it does wither damage added a withersmoke projectile Changed the witherlord radio message from mission to tutorial, so that the player only sees it once --- collections/actionfigures.collection.patch | 5 +- collections/monsters.collection.patch | 11 + .../tanglevinereanimator/body.monsterpart | 9 + .../tanglevinereanimator/default.frames | 11 + monsters/flyers/tanglevinereanimator/icon.png | Bin 0 -> 561 bytes .../tanglevinereanimator.animation | 160 ++++++++++++ .../tanglevinereanimator.monstertype | 231 ++++++++++++++++++ .../tanglevinereanimator.pdn | Bin 0 -> 12376 bytes .../tanglevinereanimator.png | Bin 0 -> 1857 bytes .../progenitorslither.animation | 8 - .../tanglevinereanimatoraf.frames | 10 + .../tanglevinereanimatoraf.object | 33 +++ .../tanglevinereanimatoraf.png | Bin 0 -> 303 bytes .../withersplinter.projectile | 2 +- .../Withersmoke/withersmoke.frames | 10 + .../uniquemonster/Withersmoke/withersmoke.png | Bin 0 -> 482 bytes .../Withersmoke/withersmoke.projectile | 15 ++ radiomessages/witherlord.radiomessages | 2 +- treasure/starforgemonster.treasurepools | 14 ++ 19 files changed, 509 insertions(+), 12 deletions(-) create mode 100644 monsters/flyers/tanglevinereanimator/body.monsterpart create mode 100644 monsters/flyers/tanglevinereanimator/default.frames create mode 100644 monsters/flyers/tanglevinereanimator/icon.png create mode 100644 monsters/flyers/tanglevinereanimator/tanglevinereanimator.animation create mode 100644 monsters/flyers/tanglevinereanimator/tanglevinereanimator.monstertype create mode 100644 monsters/flyers/tanglevinereanimator/tanglevinereanimator.pdn create mode 100644 monsters/flyers/tanglevinereanimator/tanglevinereanimator.png create mode 100644 objects/actionfigure/tanglevinereanimatorAF/tanglevinereanimatoraf.frames create mode 100644 objects/actionfigure/tanglevinereanimatorAF/tanglevinereanimatoraf.object create mode 100644 objects/actionfigure/tanglevinereanimatorAF/tanglevinereanimatoraf.png create mode 100644 projectiles/uniquemonster/Withersmoke/withersmoke.frames create mode 100644 projectiles/uniquemonster/Withersmoke/withersmoke.png create mode 100644 projectiles/uniquemonster/Withersmoke/withersmoke.projectile diff --git a/collections/actionfigures.collection.patch b/collections/actionfigures.collection.patch index 5e736c04..d9fbd0e3 100644 --- a/collections/actionfigures.collection.patch +++ b/collections/actionfigures.collection.patch @@ -1,7 +1,7 @@ [ {"op":"add","path":"/collectables/starforge-cacochiusaf","value":{"order":104,"item":"starforge-cacochiusaf"}} -,{"op":"add","path":"/collectables/starforge-centurionaf","value":{"order":120,"item":"starforge-centurionaf"}} -,{"op":"add","path":"/collectables/starforge-ancientcephalowormaf","value":{"order":121,"item":"starforge-ancientcephalowormaf"}} +,{"op":"add","path":"/collectables/starforge-centurionaf","value":{"order":130,"item":"starforge-centurionaf"}} +,{"op":"add","path":"/collectables/starforge-ancientcephalowormaf","value":{"order":131,"item":"starforge-ancientcephalowormaf"}} ,{"op":"add","path":"/collectables/starforge-florantaf","value":{"order":102,"item":"starforge-florantaf"}} ,{"op":"add","path":"/collectables/starforge-jootyfishaf","value":{"order":100,"item":"starforge-jootyfishaf"}} ,{"op":"add","path":"/collectables/starforge-novalimeaf","value":{"order":103,"item":"starforge-novalimeaf"}} @@ -21,5 +21,6 @@ ,{"op":"add","path":"/collectables/starforge-mothonaf","value":{"order":113,"item":"starforge-mothonaf"}} ,{"op":"add","path":"/collectables/starforge-starmiteaf","value":{"order":118,"item":"starforge-starmiteaf"}} ,{"op":"add","path":"/collectables/starforge-progenitorslitheraf","value":{"order":119,"item":"starforge-progenitorslitheraf"}} +,{"op":"add","path":"/collectables/starforge-progenitorslitheraf","value":{"order":120,"item":"starforge-tanglevinereanimatoraf"}} ] //SILBR SOKLOVA PATCH!!!!!! diff --git a/collections/monsters.collection.patch b/collections/monsters.collection.patch index b6152031..dcd75e4f 100644 --- a/collections/monsters.collection.patch +++ b/collections/monsters.collection.patch @@ -120,6 +120,17 @@ } }, + { + "op": "add", + "path": "/collectables/tanglevinereanimator", + "value": + { + "order" : 112, + "monsterType" : "starforge-tanglevinereanimator", + "icon" : "/monsters/flyers/tanglevinereanimator/icon.png" + } + }, + { "op": "add", "path": "/collectables/mothon", diff --git a/monsters/flyers/tanglevinereanimator/body.monsterpart b/monsters/flyers/tanglevinereanimator/body.monsterpart new file mode 100644 index 00000000..1c0d0c4b --- /dev/null +++ b/monsters/flyers/tanglevinereanimator/body.monsterpart @@ -0,0 +1,9 @@ +{ + "name" : "tanglevinereanimator", + "category" : "tanglevinereanimator", + "type" : "body", + + "frames" : { + "body" : "tanglevinereanimator.png" + } +} diff --git a/monsters/flyers/tanglevinereanimator/default.frames b/monsters/flyers/tanglevinereanimator/default.frames new file mode 100644 index 00000000..2b67f1fe --- /dev/null +++ b/monsters/flyers/tanglevinereanimator/default.frames @@ -0,0 +1,11 @@ +{ + "frameGrid" : { + "size" : [35, 35], + "dimensions" : [7, 3], + + "names" : [ + [ null, "fly.1", "fly.2", "fly.3", "fly.4", null, "hurt.1"], + [ null, "fire.1", "fire.2", "fire.3", "fire.4"] + ] + } +} \ No newline at end of file diff --git a/monsters/flyers/tanglevinereanimator/icon.png b/monsters/flyers/tanglevinereanimator/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0787954ddf04cb8434b684205199fe4629006956 GIT binary patch literal 561 zcmeAS@N?(olHy`uVBq!ia0vp^${@_a3?wz#owI=yV{wqX6T`Z5GB1G~mUKs7M+SzC z{oH>NS%G}Z0G|+7EqyIpC!4^qz@qY^Sbvk=>IidpO(_-W=lA#erF!pK+i>f~+tQYd zV@uEe|Nq~XOR?YFDp^4ZsQdRkrvE@nxFpCg7$}7X7&g`3;Q&f=7I;J!GcfQS24TkI z`72U@j!N=$aSXBWKRWqk(IEq#me30iXB7PWE5B{`Cgx=mUd}&Pa?;}9uM(HAC4bk| zC%Kf#Jj->EH+)m;`1pQ0kF-*|@=iX#DXVs_{uXn`PR2aoi0z>(TPien*fR0=EznO4 z`%t_-P1w2f#>kis{?Ty@XlxeN!M*SS#*DqOSnl_cO zw|UK&AY#(d%P6#O-50;j+g`u5>o_yjXA48K#Ey*pb`xhhZaR}>cvJJ*8-BKc&^ccX z_#WP!zSVfeEkO?1L)v%OGdC>xu4dh}JL#ZB%e}Z6ZTkdY^5-O$)|;`:fly." + } + }, + "fly" : { + "properties" : { + "image" : ":fly." + } + }, + "firewindup" : { + "properties" : { + "image" : ":fire." + } + }, + "fire" : { + "properties" : { + "image" : ":fire." + } + } + }, + "damage" : { + "stunned" : { + "properties" : { + "image" : ":hurt." + } + } + } + } + } + } + }, + + "transformationGroups" : { + "body" : { "interpolated" : true } + }, + + + "particleEmitters" : { + "deathPoof" : { + "particles" : [ + { "particle" : "deathfizz1left" }, + { "particle" : "deathfizz1right" }, + { "particle" : "deathfizz2left" }, + { "particle" : "deathfizz2right" }, + { "particle" : "deathfizz3left" }, + { "particle" : "deathfizz3right" }, + { "particle" : "deathfizz4left" }, + { "particle" : "deathfizz4right" } + ] + }, + "captureParticles" : { + "particles" : [ + { "particle" : "monstercapture" } + ] + }, + "releaseParticles" : { + "particles" : [ + { "particle" : "monsterrelease" } + ] + }, + "teleportOut" : { + "particles" : [ + { "particle" : "monstercapture" } + ] + }, + "teleportIn" : { + "particles" : [ + { "particle" : "monsterrelease" } + ] + }, + "levelUp" : { + "particles" : [ + { "particle" : "monsterlevelup" } + ] + } + }, + + "sounds" : { + "aggroHop" : [ "/sfx/npc/monsters/monster_surprise.ogg" ], + "deathPuff" : [ "/sfx/npc/enemydeathpuff.ogg" ] + } +} diff --git a/monsters/flyers/tanglevinereanimator/tanglevinereanimator.monstertype b/monsters/flyers/tanglevinereanimator/tanglevinereanimator.monstertype new file mode 100644 index 00000000..0e4722a0 --- /dev/null +++ b/monsters/flyers/tanglevinereanimator/tanglevinereanimator.monstertype @@ -0,0 +1,231 @@ +{ + "type" : "starforge-tanglevinereanimator", + "shortdescription" : "Tanglevine Reanimator", + "description" : "This Tanglevine from the Progenitor strand reanimates corpses and uses them to move around.", + + "categories" : [ "tanglevinereanimator" ], + "parts" : [ "body" ], + + "animation" : "tanglevinereanimator.animation", + + "dropPools" : [ "tanglevinereanimatorTreasure" ], + + "animationCustom" : { + "particleEmitters" : { + "smoke" : { + "active" : true, + "burstCount" : 15, + "emissionRate" : 15, + "offsetRegion" : [ -0.625, -2.25, 0.625, 0.25 ], + "particles" : [ + { "particle" : "starforge-withersmoke" } + ] + } + } + }, + "baseParameters" : { + "scripts" : [ + "/monsters/monster.lua" + ], + + "behavior" : "monster", + + "seeThroughLiquid" : false, + "behaviorConfig" : { + "damageOnTouch" : true, + + "targetQueryRange" : 20, + "targetOnDamage" : true, + "keepTargetInSight" : true, + "keepTargetInRange" : 50, + "targetOutOfSightTime" : 5.0, + + "hurtWaitForGround" : false, + + + "fleeActions" : [ ], + + "hostileActions" : [ + { + "name" : "action-fire", + "cooldown" : 1.0, + "parameters" : { + "requireLineOfSight" : true, + "maximumRange" : 20, + "minimumRange" : 4, + "onGround" : false, + "windupStopForce" : 50, + "windupTime" : 0.8, + + "projectileType" : "starforge-withersmoke", + "projectileParameters" : { + "speed" : 15 + }, + "fireOffset" : [0.0, 0.0], + "projectileCount" : 6, + "projectileInterval" : 0.05, + "aimAtTarget" : true, + "rotateToTarget" : false, + "inaccuracy" : 0.0, + "fireState" : "fire", + "fireDelay" : 0.1, + "fireSound" : "", + + "winddownState" : "", + "winddownTime" : 0.5 + } + } + ], + + "periodicActions" : [ + ], + + "approachActions" : [ + { + "name" : "approach-fly" + } + ], + + "followActions" : [ + { + "name" : "approach-teleport", + "parameters" : { + } + }, + { + "name" : "approach-fly" + } + ], + + "wanderActions" : [ + { + "name" : "wander-fly", + "parameters" : { + "wanderTime" : [2,4], + "groundDistance" : 8, + "ceilingDistance" : 8, + "xVelocity" : 4, + "yVelocity" : 12 + } + } + ] + }, + + "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" : "slash", + "knockback" : 20, + "statusEffects" : ["starforge-wither"] + }, + + "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" : 0.5, + "walkSpeed" : 4, + "runSpeed" : 12, + "gravityEnabled" : false, + + "airFriction" : 4, + "airForce" : 40, + "flySpeed" : 15 + }, + + "bodyMaterialKind" : "organic", + + "knockoutTime" : 0.3, + "knockoutAnimationStates" : { + "damage" : "stunned" + }, + "deathParticles" : "deathPoof", + "knockoutEffect" : "", + + "statusSettings" : { + "statusProperties" : { + "targetMaterialKind" : "organic" + }, + + "appliesEnvironmentStatusEffects" : false, + "appliesWeatherStatusEffects" : true, + "minimumLiquidStatusEffectPercentage" : 0.1, + + "primaryScriptSources" : [ + "/stats/monster_primary.lua" + ], + "primaryScriptDelta" : 5, + + "stats" : { + "knockbackStunTime" : { + "baseValue" : 0.5 + }, + "knockbackThreshold" : { + "baseValue" : 9 + }, + "maxHealth" : { + "baseValue" : 90 + }, + "protection" : { + "baseValue" : 0.0 + }, + "healthRegen" : { + "baseValue" : 3.0 + }, + "powerMultiplier" : { + "baseValue" : 2.5 + }, + "physicalResistance" : { + "baseValue" : 0.0 + }, + "fireResistance" : { + "baseValue" : 0.98 + }, + "fireStatusImmunity" : { + "baseValue" : 1.0 + }, + "iceResistance" : { + "baseValue" : -0.6 + }, + "iceStatusImmunity" : { + "baseValue" : 0.0 + }, + "electricResistance" : { + "baseValue" : -0.3 + }, + "electricStatusImmunity" : { + "baseValue" : 0.0 + }, + "poisonResistance" : { + "baseValue" : -0.3 + }, + "poisonStatusImmunity" : { + "baseValue" : 0.0 + } + }, + + "resources" : { + "stunned" : { + "deltaValue" : -1.0, + "initialValue" : 0.0 + }, + "health" : { + "maxStat" : "maxHealth", + "deltaStat" : "healthRegen", + "defaultPercentage" : 100 + } + } + }, + + "mouthOffset" : [0, 0], + "feetOffset" : [0, -8], + "capturable" : true, + "captureHealthFraction" : 0.3, + "nametagColor" : [64, 200, 255], + "captureCollectables" : { "monsters" : "tanglevinereanimator" } + } +} diff --git a/monsters/flyers/tanglevinereanimator/tanglevinereanimator.pdn b/monsters/flyers/tanglevinereanimator/tanglevinereanimator.pdn new file mode 100644 index 0000000000000000000000000000000000000000..e24f3b9380795021df2a3907c99b1bfe0b377fe5 GIT binary patch literal 12376 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 Kw5fpmk^TY019jQ} literal 0 HcmV?d00001 diff --git a/monsters/walkers/progenitorslither/progenitorslither.animation b/monsters/walkers/progenitorslither/progenitorslither.animation index 8d328153..223c2712 100644 --- a/monsters/walkers/progenitorslither/progenitorslither.animation +++ b/monsters/walkers/progenitorslither/progenitorslither.animation @@ -189,14 +189,6 @@ "deathPoof" : { "particles" : [ { "particle" : "monstersplosion" }, - { "particle" : "deathember" }, - { "particle" : "deathember" }, - { "particle" : "deathember" }, - { "particle" : "deathember" }, - { "particle" : "deathember" }, - { "particle" : "deathember" }, - { "particle" : "deathember" }, - { "particle" : "deathember" }, { "particle" : "deathfizz1left" }, { "particle" : "deathfizz1right" }, { "particle" : "deathfizz2left" }, diff --git a/objects/actionfigure/tanglevinereanimatorAF/tanglevinereanimatoraf.frames b/objects/actionfigure/tanglevinereanimatorAF/tanglevinereanimatoraf.frames new file mode 100644 index 00000000..101c733b --- /dev/null +++ b/objects/actionfigure/tanglevinereanimatorAF/tanglevinereanimatoraf.frames @@ -0,0 +1,10 @@ +{ + + "frameGrid" : { + "size" : [12, 12], + "dimensions" : [1, 1], + "names" : [ + [ "default" ] + ] + } +} diff --git a/objects/actionfigure/tanglevinereanimatorAF/tanglevinereanimatoraf.object b/objects/actionfigure/tanglevinereanimatorAF/tanglevinereanimatoraf.object new file mode 100644 index 00000000..92f31b50 --- /dev/null +++ b/objects/actionfigure/tanglevinereanimatorAF/tanglevinereanimatoraf.object @@ -0,0 +1,33 @@ +{ + "objectName" : "starforge-tanglevinereanimatoraf", + "colonyTags" : ["pretty"], + "rarity" : "Legendary", + "category" : "actionFigure", + "price" : 5000, + "printable" : false, + "description" : "The label reads, \"This Tanglevine from the Progenitor strand reanimates corpses and uses them to move around.\"", + "shortdescription" : "Tanglevine Reanimator Figurine", + "collectablesOnPickup" : { "actionfigures" : "starforge-tanglevinereanimatoraf" }, + + + "inventoryIcon" : "tanglevinereanimatoraf.png", + "orientations" : [ + { + "image" : "tanglevinereanimatoraf.png:", + "imagePosition" : [-2, 0], + "direction" : "left", + "flipImages" : true, + + "spaces" : [ [0, 0], [0, 1] ], + "anchors" : [ "bottom" ] + }, + { + "image" : "tanglevinereanimatoraf.png:", + "imagePosition" : [-2, 0], + "direction" : "right", + + "spaces" : [ [0, 0], [0, 1] ], + "anchors" : [ "bottom" ] + } + ] +} diff --git a/objects/actionfigure/tanglevinereanimatorAF/tanglevinereanimatoraf.png b/objects/actionfigure/tanglevinereanimatorAF/tanglevinereanimatoraf.png new file mode 100644 index 0000000000000000000000000000000000000000..d69ccd6211630a0faacb2933f3eca386d5edd9ce GIT binary patch literal 303 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$3?vg*uel1O7>k44ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0J2Ka=y+B(^2>1*{?N93u7*DY&JY|Be6Rn?(^GNtDkxKF8k-4 a3da6+HZIYnYhM8EV(@hJb6Mw<&;$VOCvx=w literal 0 HcmV?d00001 diff --git a/projectiles/other/starforge-withersplinter/withersplinter.projectile b/projectiles/other/starforge-withersplinter/withersplinter.projectile index 2a7716f5..3c1e2622 100644 --- a/projectiles/other/starforge-withersplinter/withersplinter.projectile +++ b/projectiles/other/starforge-withersplinter/withersplinter.projectile @@ -21,7 +21,7 @@ "power": 3.0, "speed": 80.0, "physics": "arrow", - "damageKind": "default", + "damageKind": "starforge-wither", "controlForce": 150, "maxSpeed": 150 diff --git a/projectiles/uniquemonster/Withersmoke/withersmoke.frames b/projectiles/uniquemonster/Withersmoke/withersmoke.frames new file mode 100644 index 00000000..cc39481a --- /dev/null +++ b/projectiles/uniquemonster/Withersmoke/withersmoke.frames @@ -0,0 +1,10 @@ +{ + "frameGrid" : { + "size" : [19, 17], + "dimensions" : [5, 1], + + "names" : [ + [ "0", "1", "2", "3", "4" ] + ] + } +} diff --git a/projectiles/uniquemonster/Withersmoke/withersmoke.png b/projectiles/uniquemonster/Withersmoke/withersmoke.png new file mode 100644 index 0000000000000000000000000000000000000000..ecc2e556d3d658d115168456df69483fcb5fa434 GIT binary patch literal 482 zcmV<80UiE{P)Px#1ZP1_K>z@;j|==^1poj53{Xr|MLj}1QC3kZFDd{402*&zOaK4?1awkPQ~&?} z06;3K^Z)<=32;bRa{vGi!vFvd!vV){sAK>D0Z&OpK~y+Tt&$6l#2^eq1Kj`4Yda1p z9U;v~YgHu#cn+Uf|ExHPKk#FWIobA_aNO+*PJzZy^F1GUeENA&u&;<|wzF|D7RT=V zn5uRQ2mz_eU`L83Mif-p64_Ti%bZ;3KEjC}(sT2p4x{JQ-by#V@B%uq)I-Iz$&Bbd zVe7qz)HzYrisl6P>@$VWxvV3DXU+k%vt5?dv^Hpd1FExqTH;lbhw(I+IOSCFO$X=6 z!Xiz8xpH*dOZX-nz4?oLop(((nDR1)8iH!^!QcyU^gbUIq-xDa7tbYKldItzw9YG( zI`bOLw|Kn3@C`6RMj_gCqmVAgYCj!Qz>(H#)4+V0Za)7tFHdf$PYb6%#Cy|~RQ=At z)#cOB_b_=@dm@xn{%?Hp9F*i|-%QvD!cG*XVF|rE{~~$p*nyrO+vkPrGJfWNFQC`@ Y1E!k}?2os9n*aa+07*qoM6N<$f~P6b9{>OV literal 0 HcmV?d00001 diff --git a/projectiles/uniquemonster/Withersmoke/withersmoke.projectile b/projectiles/uniquemonster/Withersmoke/withersmoke.projectile new file mode 100644 index 00000000..584895e9 --- /dev/null +++ b/projectiles/uniquemonster/Withersmoke/withersmoke.projectile @@ -0,0 +1,15 @@ +{ + "projectileName" : "starforge-withersmoke", + "image" : "withersmoke.png", + "physics" : "gas", + "animationCycle" : 1, + "damageKindImage" : "icon.png", + "frameNumber" : 5, + "power" : 100, + "speed" : 25, + "timeToLive" : 0.95, + "bounces" : 4, + "piercing" : true, + "damagePoly" : [ [-4.5, 0], [-3, -3], [0, -4.5], [3, -3], [4.5, 0], [3, 3], [0, 4.5], [-3, 3] ], + "damageKind" : "starforge-wither" +} diff --git a/radiomessages/witherlord.radiomessages b/radiomessages/witherlord.radiomessages index 8dfe8619..769065f3 100644 --- a/radiomessages/witherlord.radiomessages +++ b/radiomessages/witherlord.radiomessages @@ -1,7 +1,7 @@ { //Starforge - The Witherlord "witherlord-firstcontact" : { - "type" : "mission", + "type" : "tutorial", "senderName" : "The Witherlord", "portraitImage" : "/interface/chatbubbles/witherlord.png:", "text" : "-.-. --- -. ... ..- -- . --..-- .-. . ..- ... . --..-- .-. . .- -. .. -- .- - .", diff --git a/treasure/starforgemonster.treasurepools b/treasure/starforgemonster.treasurepools index c05f2e88..01f885d5 100644 --- a/treasure/starforgemonster.treasurepools +++ b/treasure/starforgemonster.treasurepools @@ -192,6 +192,20 @@ }] ], + "tanglevinereanimatorTreasure" : [ + [1, { + "pool" : [ + {"weight" : 0.99, "pool" : "progenitormaterialTreasure"}, + {"weight" : 0.01, "item" : "starforge-tanglevinereanimatoraf"} + ], + "poolRounds" : [ + [0.60, 1], + [0.40, 0] + ], + "allowDuplication" : false + }] + ], + "mothonTreasure" : [ [1, { "pool" : [