From 25fff9402981cfee3601d91e0633410f5b99152d Mon Sep 17 00:00:00 2001 From: austin Date: Tue, 13 Aug 2024 16:08:46 -0400 Subject: [PATCH] delete entity on death --- assets/Data/items.json | 2 +- docs/src/progress/currenttarget.md | 4 +--- docs/src/progress/renderertodo.md | 1 + .../entity/btree/StateTransitionUtil.java | 9 ++++++++- .../entity/state/life/ServerLifeTree.java | 15 +++++++-------- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/assets/Data/items.json b/assets/Data/items.json index 9d058978..73a74ba4 100644 --- a/assets/Data/items.json +++ b/assets/Data/items.json @@ -57,7 +57,7 @@ "modelPath" : "Models/items/weapons/katana1alt.fbx", "weaponData" : { "weaponClass" : "sword2h", - "damage" : 10, + "damage" : 34, "hitboxes" : [ { "type": "hit_connected", diff --git a/docs/src/progress/currenttarget.md b/docs/src/progress/currenttarget.md index 239b3cf6..e586316a 100644 --- a/docs/src/progress/currenttarget.md +++ b/docs/src/progress/currenttarget.md @@ -7,9 +7,7 @@ + when popup is accepted, spawn an enemy with an effect enemy ai review combat code (lifestate, damage calculation, etc) - - Damage event accumulator each frame on server side - Use accumulator to negate all damage if block box was hit - I-frames + Maybe a fade-out before deleting entity on death? + rearchitecture diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index 7b30046f..3c01a90f 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -554,6 +554,7 @@ Hitbox support offsets now Multiple hitboxes per bone Potential fix for client concurrency issue Debounce attack collisions +Remove entities on death # TODO diff --git a/src/main/java/electrosphere/entity/btree/StateTransitionUtil.java b/src/main/java/electrosphere/entity/btree/StateTransitionUtil.java index f5d9931f..dfb28d04 100644 --- a/src/main/java/electrosphere/entity/btree/StateTransitionUtil.java +++ b/src/main/java/electrosphere/entity/btree/StateTransitionUtil.java @@ -77,7 +77,7 @@ public class StateTransitionUtil { public void simulate(Object stateEnum){ StateTransitionUtilItem state = null; for(StateTransitionUtilItem targetState : states){ - if(targetState.stateEnum == stateEnum){ + if(targetState != null && targetState.stateEnum == stateEnum){ state = targetState; break; } @@ -374,6 +374,13 @@ public class StateTransitionUtil { treeData.getAudioData(), onComplete ); + } else { + rVal = new StateTransitionUtilItem( + stateEnum, + (TreeDataAnimation)null, + null, + onComplete + ); } return rVal; } diff --git a/src/main/java/electrosphere/entity/state/life/ServerLifeTree.java b/src/main/java/electrosphere/entity/state/life/ServerLifeTree.java index 3010e192..c8dde958 100644 --- a/src/main/java/electrosphere/entity/state/life/ServerLifeTree.java +++ b/src/main/java/electrosphere/entity/state/life/ServerLifeTree.java @@ -5,6 +5,7 @@ import electrosphere.entity.btree.BehaviorTree; import electrosphere.entity.btree.StateTransitionUtil; import electrosphere.entity.btree.StateTransitionUtil.StateTransitionUtilItem; import electrosphere.entity.EntityDataStrings; +import electrosphere.entity.ServerEntityUtils; import electrosphere.entity.Entity; import electrosphere.server.datacell.utils.ServerBehaviorTreeUtils; import electrosphere.net.parser.net.message.CombatMessage; @@ -77,6 +78,8 @@ public class ServerLifeTree implements BehaviorTree { this.stateTransitionUtil.simulate(LifeStateEnum.DYING); } break; case DEAD: { + //delete the entity + ServerEntityUtils.destroyEntity(parent); } break; } } @@ -163,13 +166,9 @@ public class ServerLifeTree implements BehaviorTree { ); //do damage calculation - int damage = ItemUtils.getWeaponDataRaw(event.source).getDamage(); - this.damage(damage); - if(!this.isAlive()){ - throw new UnsupportedOperationException("Reviving not implemented yet!"); - // Realm entityRealm = Globals.realmManager.getEntityRealm(receiverParent); - // EntityUtils.getPosition(receiverParent).set(entityRealm.getSpawnPoint()); - // serverLifeTree.revive(); + if(this.isAlive()){ + int damage = ItemUtils.getWeaponDataRaw(event.source).getDamage(); + this.damage(damage); } } } @@ -263,7 +262,7 @@ public class ServerLifeTree implements BehaviorTree { this.lifeCurrent = this.lifeMax; this.iFrameMaxCount = this.healthSystem.getOnDamageIFrames(); this.iFrameCurrent = 0; - stateTransitionUtil = StateTransitionUtil.create(parent, true, new StateTransitionUtilItem[]{ + this.stateTransitionUtil = StateTransitionUtil.create(parent, true, new StateTransitionUtilItem[]{ StateTransitionUtilItem.create( LifeStateEnum.DYING, this.healthSystem.getDyingState(),