deploy: 64ac63b5efc01ae098938190a8f915d65ec25b76
This commit is contained in:
parent
6056ec6ee8
commit
7b5b01728b
@ -1,4 +1,4 @@
|
||||
import{u as We,G as te,v as re,x as Ve,l as se,M as g,E as u,e as D,y as ne,z as _,F as je,R as E,H as ae,I as ie,J as Ne,a as m,S as p,j as B,w as oe,K as $,L as $e,d as q,B as k,k as U,N as M,T as b,O as S,Q as qe,c as Ke,C as w,V as le,W as ue,X as de,Y as ce,Z as Ye,P as Je,h as Xe,b as K,D as he,_ as Y,$ as Qe,a0 as Ze,a1 as et}from"./index-WJSjzvvL.js";import{S as fe,T as J,B as tt,c as rt}from"./colorToUniform-Dzvfc6yy.js";const pe=class A extends We{constructor(e){e={...A.defaultOptions,...e},super(e),this.enabled=!0,this._state=fe.for2d(),this.blendMode=e.blendMode,this.padding=e.padding,typeof e.antialias=="boolean"?this.antialias=e.antialias?"on":"off":this.antialias=e.antialias,this.resolution=e.resolution,this.blendRequired=e.blendRequired,this.addResource("uTexture",0,1)}apply(e,t,r,n){e.applyFilter(this,t,r,n)}get blendMode(){return this._state.blendMode}set blendMode(e){this._state.blendMode=e}static from(e){const{gpu:t,gl:r,...n}=e;let a,i;return t&&(a=te.from(t)),r&&(i=re.from(r)),new A({gpuProgram:a,glProgram:i,...n})}};pe.defaultOptions={blendMode:"normal",resolution:1,padding:0,antialias:"off",blendRequired:!1};let st=pe;var nt=`in vec2 vMaskCoord;
|
||||
import{u as We,G as te,v as re,x as Ve,l as se,M as g,E as u,e as D,y as ne,z as _,F as je,R as E,H as ae,I as ie,J as Ne,a as m,S as p,j as B,w as oe,K as $,L as $e,d as q,B as k,k as U,N as M,T as b,O as S,Q as qe,c as Ke,C as w,V as le,W as ue,X as de,Y as ce,Z as Ye,P as Je,h as Xe,b as K,D as he,_ as Y,$ as Qe,a0 as Ze,a1 as et}from"./index-C74jkVpW.js";import{S as fe,T as J,B as tt,c as rt}from"./colorToUniform-BrndAOXx.js";const pe=class A extends We{constructor(e){e={...A.defaultOptions,...e},super(e),this.enabled=!0,this._state=fe.for2d(),this.blendMode=e.blendMode,this.padding=e.padding,typeof e.antialias=="boolean"?this.antialias=e.antialias?"on":"off":this.antialias=e.antialias,this.resolution=e.resolution,this.blendRequired=e.blendRequired,this.addResource("uTexture",0,1)}apply(e,t,r,n){e.applyFilter(this,t,r,n)}get blendMode(){return this._state.blendMode}set blendMode(e){this._state.blendMode=e}static from(e){const{gpu:t,gl:r,...n}=e;let a,i;return t&&(a=te.from(t)),r&&(i=re.from(r)),new A({gpuProgram:a,glProgram:i,...n})}};pe.defaultOptions={blendMode:"normal",resolution:1,padding:0,antialias:"off",blendRequired:!1};let st=pe;var nt=`in vec2 vMaskCoord;
|
||||
in vec2 vTextureCoord;
|
||||
|
||||
uniform sampler2D uTexture;
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,4 +1,4 @@
|
||||
import{T as _,a as M,n as g}from"./index-WJSjzvvL.js";const P={normal:0,add:1,multiply:2,screen:3,overlay:4,erase:5,"normal-npm":6,"add-npm":7,"screen-npm":8,min:9,max:10},u=0,h=1,c=2,d=3,f=4,p=5,x=class b{constructor(){this.data=0,this.blendMode="normal",this.polygonOffset=0,this.blend=!0,this.depthMask=!0}get blend(){return!!(this.data&1<<u)}set blend(t){!!(this.data&1<<u)!==t&&(this.data^=1<<u)}get offsets(){return!!(this.data&1<<h)}set offsets(t){!!(this.data&1<<h)!==t&&(this.data^=1<<h)}set cullMode(t){if(t==="none"){this.culling=!1;return}this.culling=!0,this.clockwiseFrontFace=t==="front"}get cullMode(){return this.culling?this.clockwiseFrontFace?"front":"back":"none"}get culling(){return!!(this.data&1<<c)}set culling(t){!!(this.data&1<<c)!==t&&(this.data^=1<<c)}get depthTest(){return!!(this.data&1<<d)}set depthTest(t){!!(this.data&1<<d)!==t&&(this.data^=1<<d)}get depthMask(){return!!(this.data&1<<p)}set depthMask(t){!!(this.data&1<<p)!==t&&(this.data^=1<<p)}get clockwiseFrontFace(){return!!(this.data&1<<f)}set clockwiseFrontFace(t){!!(this.data&1<<f)!==t&&(this.data^=1<<f)}get blendMode(){return this._blendMode}set blendMode(t){this.blend=t!=="none",this._blendMode=t,this._blendModeId=P[t]||0}get polygonOffset(){return this._polygonOffset}set polygonOffset(t){this.offsets=!!t,this._polygonOffset=t}toString(){return`[pixi.js/core:State blendMode=${this.blendMode} clockwiseFrontFace=${this.clockwiseFrontFace} culling=${this.culling} depthMask=${this.depthMask} polygonOffset=${this.polygonOffset}]`}static for2d(){const t=new b;return t.depthTest=!1,t.blend=!0,t}};x.default2d=x.for2d();let w=x,T=0;class S{constructor(t){this._poolKeyHash=Object.create(null),this._texturePool={},this.textureOptions=t||{},this.enableFullScreen=!1}createTexture(t,o,e){const r=new _({...this.textureOptions,width:t,height:o,resolution:1,antialias:e,autoGarbageCollect:!0});return new M({source:r,label:`texturePool_${T++}`})}getOptimalTexture(t,o,e=1,r){let n=Math.ceil(t*e-1e-6),l=Math.ceil(o*e-1e-6);n=g(n),l=g(l);const a=(n<<17)+(l<<1)+(r?1:0);this._texturePool[a]||(this._texturePool[a]=[]);let s=this._texturePool[a].pop();return s||(s=this.createTexture(n,l,r)),s.source._resolution=e,s.source.width=n/e,s.source.height=l/e,s.source.pixelWidth=n,s.source.pixelHeight=l,s.frame.x=0,s.frame.y=0,s.frame.width=t,s.frame.height=o,s.updateUvs(),this._poolKeyHash[s.uid]=a,s}getSameSizeTexture(t,o=!1){const e=t.source;return this.getOptimalTexture(t.width,t.height,e._resolution,o)}returnTexture(t){const o=this._poolKeyHash[t.uid];this._texturePool[o].push(t)}clear(t){if(t=t!==!1,t)for(const o in this._texturePool){const e=this._texturePool[o];if(e)for(let r=0;r<e.length;r++)e[r].destroy(!0)}this._texturePool={}}}const k=new S,m={name:"local-uniform-bit",vertex:{header:`
|
||||
import{T as _,a as M,n as g}from"./index-C74jkVpW.js";const P={normal:0,add:1,multiply:2,screen:3,overlay:4,erase:5,"normal-npm":6,"add-npm":7,"screen-npm":8,min:9,max:10},u=0,h=1,c=2,d=3,f=4,p=5,x=class b{constructor(){this.data=0,this.blendMode="normal",this.polygonOffset=0,this.blend=!0,this.depthMask=!0}get blend(){return!!(this.data&1<<u)}set blend(t){!!(this.data&1<<u)!==t&&(this.data^=1<<u)}get offsets(){return!!(this.data&1<<h)}set offsets(t){!!(this.data&1<<h)!==t&&(this.data^=1<<h)}set cullMode(t){if(t==="none"){this.culling=!1;return}this.culling=!0,this.clockwiseFrontFace=t==="front"}get cullMode(){return this.culling?this.clockwiseFrontFace?"front":"back":"none"}get culling(){return!!(this.data&1<<c)}set culling(t){!!(this.data&1<<c)!==t&&(this.data^=1<<c)}get depthTest(){return!!(this.data&1<<d)}set depthTest(t){!!(this.data&1<<d)!==t&&(this.data^=1<<d)}get depthMask(){return!!(this.data&1<<p)}set depthMask(t){!!(this.data&1<<p)!==t&&(this.data^=1<<p)}get clockwiseFrontFace(){return!!(this.data&1<<f)}set clockwiseFrontFace(t){!!(this.data&1<<f)!==t&&(this.data^=1<<f)}get blendMode(){return this._blendMode}set blendMode(t){this.blend=t!=="none",this._blendMode=t,this._blendModeId=P[t]||0}get polygonOffset(){return this._polygonOffset}set polygonOffset(t){this.offsets=!!t,this._polygonOffset=t}toString(){return`[pixi.js/core:State blendMode=${this.blendMode} clockwiseFrontFace=${this.clockwiseFrontFace} culling=${this.culling} depthMask=${this.depthMask} polygonOffset=${this.polygonOffset}]`}static for2d(){const t=new b;return t.depthTest=!1,t.blend=!0,t}};x.default2d=x.for2d();let w=x,T=0;class S{constructor(t){this._poolKeyHash=Object.create(null),this._texturePool={},this.textureOptions=t||{},this.enableFullScreen=!1}createTexture(t,o,e){const r=new _({...this.textureOptions,width:t,height:o,resolution:1,antialias:e,autoGarbageCollect:!0});return new M({source:r,label:`texturePool_${T++}`})}getOptimalTexture(t,o,e=1,r){let n=Math.ceil(t*e-1e-6),l=Math.ceil(o*e-1e-6);n=g(n),l=g(l);const a=(n<<17)+(l<<1)+(r?1:0);this._texturePool[a]||(this._texturePool[a]=[]);let s=this._texturePool[a].pop();return s||(s=this.createTexture(n,l,r)),s.source._resolution=e,s.source.width=n/e,s.source.height=l/e,s.source.pixelWidth=n,s.source.pixelHeight=l,s.frame.x=0,s.frame.y=0,s.frame.width=t,s.frame.height=o,s.updateUvs(),this._poolKeyHash[s.uid]=a,s}getSameSizeTexture(t,o=!1){const e=t.source;return this.getOptimalTexture(t.width,t.height,e._resolution,o)}returnTexture(t){const o=this._poolKeyHash[t.uid];this._texturePool[o].push(t)}clear(t){if(t=t!==!1,t)for(const o in this._texturePool){const e=this._texturePool[o];if(e)for(let r=0;r<e.length;r++)e[r].destroy(!0)}this._texturePool={}}}const k=new S,m={name:"local-uniform-bit",vertex:{header:`
|
||||
|
||||
struct LocalUniforms {
|
||||
uTransformMatrix:mat3x3<f32>,
|
BIN
assets/creeps/green_spritesheet.png
Normal file
BIN
assets/creeps/green_spritesheet.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 82 KiB |
BIN
assets/creeps/orange_spritesheet.png
Normal file
BIN
assets/creeps/orange_spritesheet.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 79 KiB |
BIN
assets/creeps/phood_spritesheet.png
Normal file
BIN
assets/creeps/phood_spritesheet.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 79 KiB |
File diff suppressed because one or more lines are too long
@ -2,14 +2,15 @@
|
||||
{
|
||||
"name": "basic",
|
||||
"sprite": "wood",
|
||||
"tint": "0xffffff",
|
||||
"textures": [],
|
||||
"textureArrayLength": 12,
|
||||
"stats": {
|
||||
"health": 5,
|
||||
"speed": 4,
|
||||
"health": 2,
|
||||
"speed": 3,
|
||||
"special": null,
|
||||
"resistance": {
|
||||
"physical": 0,
|
||||
"physical": 0.05,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
@ -20,11 +21,12 @@
|
||||
{
|
||||
"name": "quick",
|
||||
"sprite": "zombie",
|
||||
"tint": "0xffffff",
|
||||
"textures": [],
|
||||
"textureArrayLength": 8,
|
||||
"stats": {
|
||||
"health": 2,
|
||||
"speed": 6,
|
||||
"health": 1,
|
||||
"speed": 5,
|
||||
"special": null,
|
||||
"resistance": {
|
||||
"physical": 0,
|
||||
@ -38,10 +40,11 @@
|
||||
{
|
||||
"name": "tank",
|
||||
"sprite": "skeleton",
|
||||
"tint": "0xffffff",
|
||||
"textures": [],
|
||||
"textureArrayLength": 12,
|
||||
"stats": {
|
||||
"health": 12,
|
||||
"health": 5,
|
||||
"speed": 2,
|
||||
"special": null,
|
||||
"resistance": {
|
||||
@ -56,29 +59,50 @@
|
||||
{
|
||||
"name": "cloaker",
|
||||
"sprite": "hood",
|
||||
"tint": "0xffffff",
|
||||
"textures": [],
|
||||
"textureArrayLength": 12,
|
||||
"stats": {
|
||||
"health": 12,
|
||||
"speed": 2,
|
||||
"health": 7,
|
||||
"speed": 3,
|
||||
"special": null,
|
||||
"resistance": {
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
"divine": 1,
|
||||
"fire": 1,
|
||||
"ice": 1,
|
||||
"frostfire": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "demon",
|
||||
"sprite": "demon",
|
||||
"tint": "0xffffff",
|
||||
"textures": [],
|
||||
"textureArrayLength": 8,
|
||||
"stats": {
|
||||
"health": 12,
|
||||
"speed": 2,
|
||||
"health": 5,
|
||||
"speed": 3,
|
||||
"special": null,
|
||||
"resistance": {
|
||||
"physical": 1,
|
||||
"divine": -0.25,
|
||||
"fire": 1,
|
||||
"ice": 1,
|
||||
"frostfire": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "maker",
|
||||
"sprite": "pumpkin",
|
||||
"tint": "0xffffff",
|
||||
"textures": [],
|
||||
"textureArrayLength": 11,
|
||||
"stats": {
|
||||
"health": 5,
|
||||
"speed": 3,
|
||||
"special": null,
|
||||
"resistance": {
|
||||
"physical": 0,
|
||||
@ -89,17 +113,57 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
"name": "maker",
|
||||
"sprite": "pumpkin",
|
||||
"name": "monster",
|
||||
"sprite": "green",
|
||||
"tint": "0xffffff",
|
||||
"textures": [],
|
||||
"textureArrayLength": 11,
|
||||
"textureArrayLength": 12,
|
||||
"stats": {
|
||||
"health": 11,
|
||||
"speed": 2,
|
||||
"health": 30,
|
||||
"speed": 1,
|
||||
"special": null,
|
||||
"resistance": {
|
||||
"physical": 0,
|
||||
"physical": 0.05,
|
||||
"divine": 0.05,
|
||||
"fire": -0.25,
|
||||
"ice": 0.05,
|
||||
"frostfire": 0.05
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "remaker",
|
||||
"sprite": "orange",
|
||||
"tint": "0xffffff",
|
||||
"textures": [],
|
||||
"textureArrayLength": 12,
|
||||
"stats": {
|
||||
"health": 2,
|
||||
"speed": 3,
|
||||
"special": null,
|
||||
"resistance": {
|
||||
"physical": 0.05,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "elite",
|
||||
"sprite": "phood",
|
||||
"tint": "0xffffff",
|
||||
"textures": [],
|
||||
"textureArrayLength": 12,
|
||||
"stats": {
|
||||
"health": 2,
|
||||
"speed": 3,
|
||||
"special": null,
|
||||
"resistance": {
|
||||
"physical": 0.05,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
|
@ -8,7 +8,7 @@
|
||||
"textures": [],
|
||||
"cantCombineWith": [],
|
||||
"specialCombine": [],
|
||||
"initialGemValue": 50,
|
||||
"initialGemValue": 75,
|
||||
"genericImprovements": [
|
||||
{
|
||||
"damageUp": 1,
|
||||
@ -29,9 +29,9 @@
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 0,
|
||||
"rangeUp": 2,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 250
|
||||
},
|
||||
{
|
||||
@ -47,12 +47,12 @@
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 650
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 0,
|
||||
"attackSpeedUp": 100,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
@ -63,7 +63,7 @@
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 900
|
||||
},
|
||||
{
|
||||
@ -76,7 +76,7 @@
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 0,
|
||||
"attackSpeedUp": 250,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
@ -158,71 +158,71 @@
|
||||
"textures": [],
|
||||
"cantCombineWith": [],
|
||||
"specialCombine": [],
|
||||
"initialGemValue": 10,
|
||||
"initialGemValue": 80,
|
||||
"genericImprovements": [
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 10,
|
||||
"damageUp": 1,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 0
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 100
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 10,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 10
|
||||
"gemValueUp": 150
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 10,
|
||||
"rangeUp": 0,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 2,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 0
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 250
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 10,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 10
|
||||
"gemValueUp": 400
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 10,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 0
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 650
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 10,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 10
|
||||
"gemValueUp": 750
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 10,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 0
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 900
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 10,
|
||||
"attackSpeedUp": 100,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 10
|
||||
"gemValueUp": 1000
|
||||
}
|
||||
],
|
||||
"gemResistanceModifications": [
|
||||
@ -230,14 +230,7 @@
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0.1,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0.2,
|
||||
"ice": 0.05,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
@ -251,14 +244,7 @@
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0.2,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0.1,
|
||||
"ice": 0.15,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
@ -272,15 +258,29 @@
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0.1,
|
||||
"frostfire": 0
|
||||
"ice": 0.25,
|
||||
"frostfire": 0.1
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0.2,
|
||||
"frostfire": 0
|
||||
"ice": 0.3,
|
||||
"frostfire": 0.1
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0.35,
|
||||
"frostfire": 0.2
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0.4,
|
||||
"frostfire": 0.25
|
||||
}
|
||||
]
|
||||
},
|
||||
@ -293,63 +293,63 @@
|
||||
"textures": [],
|
||||
"cantCombineWith": [],
|
||||
"specialCombine": [],
|
||||
"initialGemValue": 10,
|
||||
"initialGemValue": 100,
|
||||
"genericImprovements": [
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 10,
|
||||
"rangeUp": 0,
|
||||
"damageUp": 1,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 1,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 0
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 200
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 10,
|
||||
"rangeUp": 0,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 1,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 10
|
||||
"gemValueUp": 350
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 10,
|
||||
"rangeUp": 0,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 1,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 0
|
||||
"pierceUp": 2,
|
||||
"gemValueUp": 450
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 10,
|
||||
"rangeUp": 0,
|
||||
"attackSpeedUp": 200,
|
||||
"rangeUp": 1,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 10
|
||||
"gemValueUp": 600
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 10,
|
||||
"rangeUp": 0,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 1,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 0
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 850
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 10,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 10
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 900
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 10,
|
||||
"rangeUp": 0,
|
||||
"attackSpeedUp": 0,
|
||||
"rangeUp": 2,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 0
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 900
|
||||
}
|
||||
],
|
||||
"gemResistanceModifications": [
|
||||
@ -357,49 +357,56 @@
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0.1,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"physical": 0.05,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0.2,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"physical": 0.1,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0.1,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"physical": 0.1,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0.2,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"physical": 0.15,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0.1,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"physical": 0.2,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0.2,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"physical": 0.25,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0.1,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0.3,
|
||||
"divine": 0,
|
||||
"fire": 0,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
}
|
||||
]
|
||||
@ -409,132 +416,124 @@
|
||||
"description": "Made from the wandering souls of the damned, the Soulforge gem accelerates your towers cooldowns and acts as a repellant for all things unholy.",
|
||||
"color": "gray",
|
||||
"type": "Soulforge",
|
||||
"totalLevels": 2,
|
||||
"totalLevels": 7,
|
||||
"textures": [],
|
||||
"cantCombineWith": [],
|
||||
"specialCombine": [],
|
||||
"initialGemValue": 10,
|
||||
"initialGemValue": 150,
|
||||
"genericImprovements": [
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 10,
|
||||
"damageUp": 0,
|
||||
"attackSpeedUp": 100,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 0
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 200
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 10,
|
||||
"damageUp": 0,
|
||||
"attackSpeedUp": 100,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 10
|
||||
"gemValueUp": 350
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 10,
|
||||
"damageUp": 0,
|
||||
"attackSpeedUp": 150,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 0
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 450
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 10,
|
||||
"rangeUp": 0,
|
||||
"damageUp": 0,
|
||||
"attackSpeedUp": 100,
|
||||
"rangeUp": 1,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 10
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 600
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 10,
|
||||
"damageUp": 0,
|
||||
"attackSpeedUp": 250,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 0
|
||||
"gemValueUp": 850
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 10,
|
||||
"damageUp": 0,
|
||||
"attackSpeedUp": 400,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 10
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 900
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 10,
|
||||
"damageUp": 0,
|
||||
"attackSpeedUp": 500,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 0
|
||||
},
|
||||
{
|
||||
"damageUp": 2,
|
||||
"attackSpeedUp": 10,
|
||||
"rangeUp": 0,
|
||||
"timeToLiveUp": 0,
|
||||
"pierceUp": 1,
|
||||
"gemValueUp": 10
|
||||
"pierceUp": 0,
|
||||
"gemValueUp": 900
|
||||
}
|
||||
],
|
||||
"gemResistanceModifications": [
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"divine": 0.2,
|
||||
"fire": 0,
|
||||
"ice": 0.1,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"divine": 0.3,
|
||||
"fire": 0,
|
||||
"ice": 0.2,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"divine": 0.4,
|
||||
"fire": 0,
|
||||
"ice": 0.1,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"divine": 0.5,
|
||||
"fire": 0,
|
||||
"ice": 0.2,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"divine": 0.6,
|
||||
"fire": 0,
|
||||
"ice": 0.1,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"divine": 0.7,
|
||||
"fire": 0,
|
||||
"ice": 0.2,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"divine": 0.75,
|
||||
"fire": 0,
|
||||
"ice": 0.1,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
},
|
||||
{
|
||||
"physical": 0,
|
||||
"divine": 0,
|
||||
"divine": 0.8,
|
||||
"fire": 0,
|
||||
"ice": 0.2,
|
||||
"ice": 0,
|
||||
"frostfire": 0
|
||||
}
|
||||
]
|
||||
@ -585,7 +584,7 @@
|
||||
"attackSpeedUp": 100,
|
||||
"rangeUp": 2,
|
||||
"timeToLiveUp": 200,
|
||||
"pierceUp": 20,
|
||||
"pierceUp": 3,
|
||||
"gemValueUp": 0
|
||||
}
|
||||
],
|
||||
|
@ -9,13 +9,13 @@
|
||||
"projectileTexturesArrayLength": 5,
|
||||
"description": "The building block of society, nothing more basic exists.",
|
||||
"stats": {
|
||||
"damage": 2,
|
||||
"damage": 1,
|
||||
"cooldown": 1500,
|
||||
"gemSlotsAmount": 1,
|
||||
"cost": 50,
|
||||
"cost": 25,
|
||||
"range": 3,
|
||||
"timeToLive": 20,
|
||||
"pierce": 2
|
||||
"pierce": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -26,15 +26,15 @@
|
||||
"projectile": "blue",
|
||||
"projectileTextures": [],
|
||||
"projectileTexturesArrayLength": 4,
|
||||
"description": "If you feel like shooting in a circle around you, projectiles may miss.",
|
||||
"description": "Shoots 8 projectiles in a circle, they may miss.",
|
||||
"stats": {
|
||||
"damage": 3,
|
||||
"cooldown": 4000,
|
||||
"damage": 1,
|
||||
"cooldown": 2000,
|
||||
"gemSlotsAmount": 2,
|
||||
"cost": 100,
|
||||
"range": 2.5,
|
||||
"timeToLive": 12,
|
||||
"pierce": 30
|
||||
"cost": 55,
|
||||
"range": 3,
|
||||
"timeToLive": 18,
|
||||
"pierce": 5
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -47,13 +47,13 @@
|
||||
"projectileTexturesArrayLength": 4,
|
||||
"description": "Zap zap zap! This towers shots connect to other enemies!",
|
||||
"stats": {
|
||||
"damage": 3,
|
||||
"damage": 2,
|
||||
"cooldown": 3500,
|
||||
"gemSlotsAmount": 2,
|
||||
"cost": 150,
|
||||
"cost": 110,
|
||||
"range": 3,
|
||||
"timeToLive": 12,
|
||||
"pierce": 10
|
||||
"pierce": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -64,13 +64,13 @@
|
||||
"projectile": "blue",
|
||||
"projectileTextures": [],
|
||||
"projectileTexturesArrayLength": 4,
|
||||
"description": "Doesn't shoot, instead buffs other towers with 50% of its power.",
|
||||
"description": "Doesn't shoot, instead buffs other towers with some of its power.",
|
||||
"stats": {
|
||||
"damage": 4,
|
||||
"damage": 3,
|
||||
"cooldown": 1000,
|
||||
"gemSlotsAmount": 3,
|
||||
"cost": 200,
|
||||
"range": 2,
|
||||
"range": 2.5,
|
||||
"timeToLive": 15,
|
||||
"pierce": 5
|
||||
}
|
||||
@ -83,15 +83,15 @@
|
||||
"projectile": "white",
|
||||
"projectileTextures": [],
|
||||
"projectileTexturesArrayLength": 5,
|
||||
"description": "Like a regular tower, just slows down creeps.",
|
||||
"description": "Behaves like the Basic Tower, only its shots stop creeps in their tracks!",
|
||||
"stats": {
|
||||
"damage": 2,
|
||||
"cooldown": 2000,
|
||||
"gemSlotsAmount": 3,
|
||||
"cost": 125,
|
||||
"range": 2.5,
|
||||
"cooldown": 2200,
|
||||
"gemSlotsAmount": 2,
|
||||
"cost": 80,
|
||||
"range": 3.25,
|
||||
"timeToLive": 12,
|
||||
"pierce": 1
|
||||
"pierce": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -104,13 +104,13 @@
|
||||
"projectileTexturesArrayLength": 4,
|
||||
"description": "Shoots a quick, high pierce rail projectile at creeps.",
|
||||
"stats": {
|
||||
"damage": 2,
|
||||
"cooldown": 2000,
|
||||
"damage": 5,
|
||||
"cooldown": 5020,
|
||||
"gemSlotsAmount": 3,
|
||||
"cost": 125,
|
||||
"cost": 134,
|
||||
"range": 2.5,
|
||||
"timeToLive": 12,
|
||||
"pierce": 30
|
||||
"pierce": 10
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -121,15 +121,15 @@
|
||||
"projectile": "stone",
|
||||
"projectileTextures": [],
|
||||
"projectileTexturesArrayLength": 1,
|
||||
"description": "Randomly places traps on the track, instead of attacking creeps.",
|
||||
"description": "Randomly places expiring traps on the track, instead of attacking creeps.",
|
||||
"stats": {
|
||||
"damage": 2,
|
||||
"cooldown": 2000,
|
||||
"gemSlotsAmount": 3,
|
||||
"cost": 125,
|
||||
"range": 2.5,
|
||||
"cost": 150,
|
||||
"range": 3,
|
||||
"timeToLive": 400,
|
||||
"pierce": 2
|
||||
"pierce": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
@ -143,12 +143,12 @@
|
||||
"description": "On top of a regular attack, this tower gives creeps a debuff, making them take more damage.",
|
||||
"stats": {
|
||||
"damage": 2,
|
||||
"cooldown": 2000,
|
||||
"cooldown": 1750,
|
||||
"gemSlotsAmount": 3,
|
||||
"cost": 125,
|
||||
"cost": 200,
|
||||
"range": 2.5,
|
||||
"timeToLive": 12,
|
||||
"pierce": 30
|
||||
"pierce": 2
|
||||
}
|
||||
}
|
||||
]
|
||||
|
@ -62,15 +62,30 @@
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 1000,
|
||||
"creeps": [0, 0, 0]
|
||||
"creeps": [0, 0, 0, 0, 0]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 4000,
|
||||
"spawnIntervalTicks": 1000,
|
||||
"creeps": [0, 0, 0, 0]
|
||||
"creeps": [0, 0, 0, 0, 0]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1]
|
||||
"offeredGems": [0, 1, 0, 1]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 1000,
|
||||
"creeps": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 1000,
|
||||
"spawnIntervalTicks": 1000,
|
||||
"creeps": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 0, 1]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -99,7 +99,7 @@
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 500,
|
||||
"creeps": [0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 2]
|
||||
"creeps": [0]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 0, 0, 0]
|
||||
|
File diff suppressed because one or more lines are too long
11
index.html
11
index.html
@ -4,21 +4,20 @@
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link rel="stylesheet" href="style.css" />
|
||||
<link href="https://fonts.googleapis.com/css?family=Aclonica" rel="stylesheet" />
|
||||
<title>Bastion: The Watcher's Lament</title>
|
||||
<meta property="og:title" content="Bastion: The Watcher's Lament" />
|
||||
<title>Bastion: The Watchers Lament</title>
|
||||
<meta property="og:title" content="Bastion: The Watchers Lament" />
|
||||
<meta
|
||||
property="og:description"
|
||||
content="A free, open source, browser based, tower defense game inspired by GemCraft: Frostborn Wrath. Playable NOW on PC!"
|
||||
/>
|
||||
<meta property="og:image" content="https://bastion.overflow.fun/faivcon.png" />
|
||||
<meta property="og:image" content="https://bastion.overflow.fun/favicon.png" />
|
||||
<meta property="og:url" content="https://bastion.overflow.fun" />
|
||||
<meta name="twitter:title" content="Bastion: The Watcher's Lament" />
|
||||
<meta name="twitter:title" content="Bastion: The Watchers Lament" />
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content="A free, open source, browser based, tower defense game inspired by GemCraft: Frostborn Wrath. Playable NOW on PC!"
|
||||
/>
|
||||
<script type="module" crossorigin src="/assets/index-WJSjzvvL.js"></script>
|
||||
<script type="module" crossorigin src="/assets/index-C74jkVpW.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
</body>
|
||||
|
@ -1 +1 @@
|
||||
bdeb67e
|
||||
64ac63b
|
||||
|
Loading…
x
Reference in New Issue
Block a user