diff --git a/src/components/ContainerView.vue b/src/components/ContainerView.vue
index 4067358..b33f888 100644
--- a/src/components/ContainerView.vue
+++ b/src/components/ContainerView.vue
@@ -2,8 +2,9 @@
{{container.name.capital}}
-
{{prey.name}}
-
{{prey.name}}
+
+ {{prey.name}}
+
@@ -24,10 +25,12 @@ function wiggle (contents: HTMLElement) {
const prey = elem as HTMLElement
const preyWidth = prey.clientWidth
const preyHeight = prey.clientHeight
- setTimeout(() => {
- (prey as HTMLElement).style.left = (Math.floor(Math.random() * (width - preyWidth)) + "px");
- (prey as HTMLElement).style.top = (Math.floor(Math.random() * (height - preyHeight)) + "px")
- }, Math.random() * 3000)
+ if (!prey.classList.contains("prey-leave-active")) {
+ setTimeout(() => {
+ (prey as HTMLElement).style.left = (Math.floor(Math.random() * (width - preyWidth)) + "px");
+ (prey as HTMLElement).style.top = (Math.floor(Math.random() * (height - preyHeight)) + "px")
+ }, Math.random() * 3000)
+ }
})
}
@@ -120,28 +123,42 @@ export default class ContainerView extends Vue {
}
.container-prey {
- animation: prey-devour-keyframes 1s;
position: absolute;
- transition: 3s all;
+ transition: 3s top, 3s left;
top: 25px;
left: 25px;
overflow: hidden;
}
- @keyframes prey-devour-keyframes {
- from {
- opacity: 0;
- } to {
- opacity: 1;
- }
- }
-
.container-prey-live {
color: #eeeeee;
}
.container-prey-dead {
- color: #ff8888;
+ color: #ff0000;
+ }
+
+ .prey-enter {
+ opacity: 0;
+ }
+
+ .prey-enter-active {
+ transition: 1s opacity;
+ }
+
+ .prey-leave {
+ opacity: 1;
+ }
+
+ .container-prey-live.prey-leave-active {
+ opacity: 0;
+ transition: 1s opacity, 3s top, 3s left;
+ }
+
+ .container-prey-dead.prey-leave-active {
+ opacity: 0;
+ transition: 4s filter, 4s opacity, 3s top, 3s left;
+ filter: blur(20px)
}
diff --git a/src/game/vore.ts b/src/game/vore.ts
index 018b9a9..4b6a7a1 100644
--- a/src/game/vore.ts
+++ b/src/game/vore.ts
@@ -132,6 +132,9 @@ export interface Container extends Actionable {
consumeVerb: Verb;
releaseVerb: Verb;
struggleVerb: Verb;
+
+ consumeLine: PairLineArgs;
+
}
export abstract class NormalContainer implements Container {
@@ -291,7 +294,7 @@ export abstract class NormalVoreContainer extends NormalContainer implements Vor
prey.destroyed = true
this.digested.push(prey)
justDigested.push(prey)
- this.onDigest(prey)
+ damageResults.push(this.onDigest(prey))
}
})
@@ -312,7 +315,7 @@ export abstract class NormalVoreContainer extends NormalContainer implements Vor
if (prey.voreStats.Mass === 0) {
this.absorbed.push(prey)
justAbsorbed.push(prey)
- this.onAbsorb(prey)
+ damageResults.push(this.onAbsorb(prey))
}
})
@@ -466,7 +469,8 @@ export class Womb extends InnerVoreContainer {
export function biconnectContainers (outer: VoreContainer, inner: VoreContainer): void {
outer.onDigest = (prey: Vore) => {
outer.digested = outer.digested.filter(victim => victim !== prey)
- return inner.consume(prey)
+ inner.digested.push(prey)
+ return inner.consumeLine(inner.owner, prey, { container: inner })
}
outer.actions.push(