From 11fd0085151a7aa30cb3090331c8872f68c521f4 Mon Sep 17 00:00:00 2001 From: Sir-Skurpsalot <87043120+Sir-Skurpsalot@users.noreply.github.com> Date: Tue, 12 May 2026 23:20:43 -0600 Subject: [PATCH 1/7] Update DamageModel.tscript --- Templates/BaseGame/game/data/DamageModel/DamageModel.tscript | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Templates/BaseGame/game/data/DamageModel/DamageModel.tscript b/Templates/BaseGame/game/data/DamageModel/DamageModel.tscript index f3932781d..9df4c3805 100644 --- a/Templates/BaseGame/game/data/DamageModel/DamageModel.tscript +++ b/Templates/BaseGame/game/data/DamageModel/DamageModel.tscript @@ -9,6 +9,7 @@ function DamageModel::onDestroy(%this) //This is called when the server is initially set up by the game application function DamageModel::initServer(%this) { + %this.queueExec("./scripts/server/player"); } //This is called when the server is created for an actual game/map to be played @@ -22,7 +23,6 @@ function DamageModel::onCreateGameServer(%this) %this.queueExec("./scripts/server/weapon"); %this.queueExec("./scripts/server/shapeBase"); %this.queueExec("./scripts/server/vehicle"); - %this.queueExec("./scripts/server/player"); %this.queueExec("./scripts/server/commands"); } From dd438557d57a64c610107b9e116319fa2efeea03 Mon Sep 17 00:00:00 2001 From: Sir-Skurpsalot <87043120+Sir-Skurpsalot@users.noreply.github.com> Date: Tue, 12 May 2026 23:22:30 -0600 Subject: [PATCH 2/7] Update player.tscript --- .../DamageModel/scripts/server/player.tscript | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/Templates/BaseGame/game/data/DamageModel/scripts/server/player.tscript b/Templates/BaseGame/game/data/DamageModel/scripts/server/player.tscript index b874c9f5c..0d53904fd 100644 --- a/Templates/BaseGame/game/data/DamageModel/scripts/server/player.tscript +++ b/Templates/BaseGame/game/data/DamageModel/scripts/server/player.tscript @@ -2,27 +2,31 @@ function PlayerData::damage(%this, %obj, %sourceObject, %position, %damage, %dam { if (!isObject(%obj) || %obj.getDamageState() !$= "Enabled" || !%damage) return; - + %rootObj = %obj; if (%obj.healthFromMount) %rootObj = findRootObject(%obj); - + + %this.setDamageDirection(%rootObj, %sourceObject, %position); + + if (%damageType !$= "Suicide") { + %getDamageLoc = %rootObj.getDamageLocation(%position); + %damageLoc = firstWord(%getDamageLoc); + } + %rootObj.applyDamage(%damage); %this.onDamage(%rootObj, %damage); - - %this.setDamageDirection(%rootObj, %sourceObject, %position); - + // Deal with client callbacks here because we don't have this // information in the onDamage or onDisable methods %client = %rootObj.client; %sourceClient = %sourceObject ? %sourceObject.client : 0; - %location = "Body"; if (isObject(%client)) { if (%rootObj.getDamageState() !$= "Enabled") { - callGamemodeFunction("onDeath", %client, %sourceObject, %sourceClient, %damageType, %location); + callGamemodeFunction("onDeath", %client, %sourceObject, %sourceClient, %damageType, %damageLoc); } } } @@ -30,7 +34,7 @@ function PlayerData::damage(%this, %obj, %sourceObject, %position, %damage, %dam function PlayerData::onDamage(%this, %obj, %delta) { Parent::onDamage(%this, %obj, %delta); - + // This method is invoked by the ShapeBase code whenever the // object's damage level changes. if (%delta > 0 && %obj.getDamageState() !$= "Destroyed") @@ -39,4 +43,4 @@ function PlayerData::onDamage(%this, %obj, %delta) if (%delta > 10) %obj.playPain(); } -} \ No newline at end of file +} From a4760e33a1312a9feefebe78da08a4d74a906e76 Mon Sep 17 00:00:00 2001 From: Sir-Skurpsalot <87043120+Sir-Skurpsalot@users.noreply.github.com> Date: Tue, 12 May 2026 23:33:55 -0600 Subject: [PATCH 3/7] Update DamageModel.tscript --- Templates/BaseGame/game/data/DamageModel/DamageModel.tscript | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Templates/BaseGame/game/data/DamageModel/DamageModel.tscript b/Templates/BaseGame/game/data/DamageModel/DamageModel.tscript index f3932781d..9df4c3805 100644 --- a/Templates/BaseGame/game/data/DamageModel/DamageModel.tscript +++ b/Templates/BaseGame/game/data/DamageModel/DamageModel.tscript @@ -9,6 +9,7 @@ function DamageModel::onDestroy(%this) //This is called when the server is initially set up by the game application function DamageModel::initServer(%this) { + %this.queueExec("./scripts/server/player"); } //This is called when the server is created for an actual game/map to be played @@ -22,7 +23,6 @@ function DamageModel::onCreateGameServer(%this) %this.queueExec("./scripts/server/weapon"); %this.queueExec("./scripts/server/shapeBase"); %this.queueExec("./scripts/server/vehicle"); - %this.queueExec("./scripts/server/player"); %this.queueExec("./scripts/server/commands"); } From 093299bd83180e3e9ff9c3a5339d18f8a830e434 Mon Sep 17 00:00:00 2001 From: Sir-Skurpsalot <87043120+Sir-Skurpsalot@users.noreply.github.com> Date: Tue, 12 May 2026 23:36:33 -0600 Subject: [PATCH 4/7] Update player.tscript --- .../DamageModel/scripts/server/player.tscript | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/Templates/BaseGame/game/data/DamageModel/scripts/server/player.tscript b/Templates/BaseGame/game/data/DamageModel/scripts/server/player.tscript index b874c9f5c..0d53904fd 100644 --- a/Templates/BaseGame/game/data/DamageModel/scripts/server/player.tscript +++ b/Templates/BaseGame/game/data/DamageModel/scripts/server/player.tscript @@ -2,27 +2,31 @@ function PlayerData::damage(%this, %obj, %sourceObject, %position, %damage, %dam { if (!isObject(%obj) || %obj.getDamageState() !$= "Enabled" || !%damage) return; - + %rootObj = %obj; if (%obj.healthFromMount) %rootObj = findRootObject(%obj); - + + %this.setDamageDirection(%rootObj, %sourceObject, %position); + + if (%damageType !$= "Suicide") { + %getDamageLoc = %rootObj.getDamageLocation(%position); + %damageLoc = firstWord(%getDamageLoc); + } + %rootObj.applyDamage(%damage); %this.onDamage(%rootObj, %damage); - - %this.setDamageDirection(%rootObj, %sourceObject, %position); - + // Deal with client callbacks here because we don't have this // information in the onDamage or onDisable methods %client = %rootObj.client; %sourceClient = %sourceObject ? %sourceObject.client : 0; - %location = "Body"; if (isObject(%client)) { if (%rootObj.getDamageState() !$= "Enabled") { - callGamemodeFunction("onDeath", %client, %sourceObject, %sourceClient, %damageType, %location); + callGamemodeFunction("onDeath", %client, %sourceObject, %sourceClient, %damageType, %damageLoc); } } } @@ -30,7 +34,7 @@ function PlayerData::damage(%this, %obj, %sourceObject, %position, %damage, %dam function PlayerData::onDamage(%this, %obj, %delta) { Parent::onDamage(%this, %obj, %delta); - + // This method is invoked by the ShapeBase code whenever the // object's damage level changes. if (%delta > 0 && %obj.getDamageState() !$= "Destroyed") @@ -39,4 +43,4 @@ function PlayerData::onDamage(%this, %obj, %delta) if (%delta > 10) %obj.playPain(); } -} \ No newline at end of file +} From a54695cfccaad581423b368b700b1a982ca44281 Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Wed, 13 May 2026 11:48:36 -0500 Subject: [PATCH 5/7] filter directional damage display by %obj.healthFromMount also shift other contents from DamageModel::onCreateGameServer to DamageModel::initServer for consistency --- .../game/data/DamageModel/DamageModel.tscript | 14 +++++++------- .../data/DamageModel/scripts/server/player.tscript | 14 ++++++++++---- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/Templates/BaseGame/game/data/DamageModel/DamageModel.tscript b/Templates/BaseGame/game/data/DamageModel/DamageModel.tscript index 9df4c3805..76517799e 100644 --- a/Templates/BaseGame/game/data/DamageModel/DamageModel.tscript +++ b/Templates/BaseGame/game/data/DamageModel/DamageModel.tscript @@ -10,13 +10,6 @@ function DamageModel::onDestroy(%this) function DamageModel::initServer(%this) { %this.queueExec("./scripts/server/player"); -} - -//This is called when the server is created for an actual game/map to be played -function DamageModel::onCreateGameServer(%this) -{ - %this.registerDatablock("./scripts/managedData/managedParticleData"); - %this.registerDatablock("./scripts/managedData/managedParticleEmitterData"); %this.queueExec("./scripts/server/utility"); %this.queueExec("./scripts/server/radiusDamage"); %this.queueExec("./scripts/server/projectile"); @@ -26,6 +19,13 @@ function DamageModel::onCreateGameServer(%this) %this.queueExec("./scripts/server/commands"); } +//This is called when the server is created for an actual game/map to be played +function DamageModel::onCreateGameServer(%this) +{ + %this.registerDatablock("./scripts/managedData/managedParticleData"); + %this.registerDatablock("./scripts/managedData/managedParticleEmitterData"); +} + //This is called when the server is shut down due to the game/map being exited function DamageModel::onDestroyGameServer(%this) { diff --git a/Templates/BaseGame/game/data/DamageModel/scripts/server/player.tscript b/Templates/BaseGame/game/data/DamageModel/scripts/server/player.tscript index 0d53904fd..bbd354230 100644 --- a/Templates/BaseGame/game/data/DamageModel/scripts/server/player.tscript +++ b/Templates/BaseGame/game/data/DamageModel/scripts/server/player.tscript @@ -5,12 +5,18 @@ function PlayerData::damage(%this, %obj, %sourceObject, %position, %damage, %dam %rootObj = %obj; if (%obj.healthFromMount) + { %rootObj = findRootObject(%obj); - - %this.setDamageDirection(%rootObj, %sourceObject, %position); - + %this.setDamageDirection(%rootObj, %sourceObject, %position); + } + else + { + %this.setDamageDirection(%obj, %sourceObject, %position); + } + + %damageLoc = "body"; if (%damageType !$= "Suicide") { - %getDamageLoc = %rootObj.getDamageLocation(%position); + %getDamageLoc = %obj.getDamageLocation(%position); %damageLoc = firstWord(%getDamageLoc); } From 0e33b2c1d0671985fae409bab54b705d18c2bf9e Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Fri, 15 May 2026 21:51:57 -0500 Subject: [PATCH 6/7] cleanps for generalized PlayerData::damage with quick docs line for clarity in the future --- .../DamageModel/scripts/server/player.tscript | 23 ++++++------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/Templates/BaseGame/game/data/DamageModel/scripts/server/player.tscript b/Templates/BaseGame/game/data/DamageModel/scripts/server/player.tscript index 9b4802423..72ebeeefe 100644 --- a/Templates/BaseGame/game/data/DamageModel/scripts/server/player.tscript +++ b/Templates/BaseGame/game/data/DamageModel/scripts/server/player.tscript @@ -4,29 +4,20 @@ function PlayerData::damage(%this, %obj, %sourceObject, %position, %damage, %dam return; %rootObj = %obj; - if (%obj.healthFromMount) + + %damageLoc = ""; + //if we're not commiting sudoku, nor mounted and get our health there... + if (%damageType !$= "Suicide" && !(%obj.healthFromMount && isObject(%obj.getObjectMount()))) { %rootObj = findRootObject(%obj); - %this.setDamageDirection(%rootObj, %sourceObject, %position); - } - else - { - %this.setDamageDirection(%obj, %sourceObject, %position); - } - - %damageLoc = "body"; - if (%damageType !$= "Suicide") { %getDamageLoc = %obj.getDamageLocation(%position); - - %this.setDamageDirection(%rootObj, %sourceObject, %position); - - if (%damageType !$= "Suicide") { - %getDamageLoc = %rootObj.getDamageLocation(%position); %damageLoc = firstWord(%getDamageLoc); } + %this.setDamageDirection(%rootObj, %sourceObject, %position); + %rootObj.applyDamage(%damage); - %this.onDamage(%rootObj, %damage); + %rootObj.getDatablock().onDamage(%rootObj, %damage); // Deal with client callbacks here because we don't have this // information in the onDamage or onDisable methods From c4cca3ed1fd5b4587d91af682a97328d95ed9e19 Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Sat, 16 May 2026 00:02:24 -0500 Subject: [PATCH 7/7] put damagemodel script files in the same pool as resources initServer callback is run the once onCreateGameServer callback is run every mission load for queueexec("filename",true); to work, that has to be from the same callback pool being executed. given resources use the initServer, pool, shifted the damagemodel baseline there as well. may want to revisit this one as time allows for quicker prototyping turnaround --- .../BaseGame/game/data/DamageModel/DamageModel.tscript | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/Templates/BaseGame/game/data/DamageModel/DamageModel.tscript b/Templates/BaseGame/game/data/DamageModel/DamageModel.tscript index adbda2e33..63b4ad4c1 100644 --- a/Templates/BaseGame/game/data/DamageModel/DamageModel.tscript +++ b/Templates/BaseGame/game/data/DamageModel/DamageModel.tscript @@ -9,20 +9,13 @@ function DamageModel::onDestroy(%this) //This is called when the server is initially set up by the game application function DamageModel::initServer(%this) { - %this.queueExec("./scripts/server/player"); -} - -//This is called when the server is created for an actual game/map to be played -function DamageModel::onCreateGameServer(%this) -{ - %this.registerDatablock("./scripts/managedData/managedParticleData"); - %this.registerDatablock("./scripts/managedData/managedParticleEmitterData"); %this.queueExec("./scripts/server/utility"); %this.queueExec("./scripts/server/radiusDamage"); %this.queueExec("./scripts/server/projectile"); %this.queueExec("./scripts/server/weapon"); %this.queueExec("./scripts/server/shapeBase"); %this.queueExec("./scripts/server/vehicle"); + %this.queueExec("./scripts/server/player"); %this.queueExec("./scripts/server/commands"); }