Skip to content

Commit a1d573e

Browse files
authored
Fixes for Reforger 1.1 (#36)
* New argument in EOnEditorPlace * Move target visibility handling to EvaluateWeaponAndTarget * Rename damage manager and use new SCR_HijackDamageHandling method
1 parent 9820672 commit a1d573e

File tree

5 files changed

+49
-57
lines changed

5 files changed

+49
-57
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,24 @@
1-
2-
1+
//------------------------------------------------------------------------------------------------
32
modded class SCR_AICombatComponent : ScriptComponent
43
{
5-
override bool SelectTarget(BaseTarget newTarget)
4+
//------------------------------------------------------------------------------------------------
5+
//! Resets selected target if it is not visible
6+
override void EvaluateWeaponAndTarget(out bool outWeaponEvent, out bool outSelectedTargetChanged,
7+
out BaseTarget outPrevTarget, out BaseTarget outCurrentTarget,
8+
out bool outRetreatTargetChanged, out bool outCompartmentChanged)
69
{
7-
// gotta do null check as otherwise we crash, as when there is no targets at spawn, NewTarget is null. So we just call super and call it a day
8-
if (!newTarget)
9-
return super.SelectTarget(newTarget);
10+
BaseTarget prevTarget = m_SelectedTarget;
11+
super.EvaluateWeaponAndTarget(outWeaponEvent, outSelectedTargetChanged, outPrevTarget, outCurrentTarget, outRetreatTargetChanged, outCompartmentChanged);
1012

11-
// get visibility, if not visible AI can't change to that target, otherwise up to super
12-
bool visible = ODIN_VisibilityHelper.GetVisibility(newTarget.GetTargetEntity());
13-
if (!visible)
14-
return false;
15-
else
16-
return super.SelectTarget(newTarget);
13+
if (!outCurrentTarget)
14+
return;
15+
16+
bool visible = ODIN_VisibilityHelper.GetVisibility(outCurrentTarget.GetTargetEntity());
17+
if (visible)
18+
return;
19+
20+
m_SelectedTarget = prevTarget;
21+
outCurrentTarget = prevTarget;
22+
outSelectedTargetChanged = false;
1723
}
18-
};
24+
}

Scripts/Game/ODIN/Editor/Components/EditableEntity/ODIN_EditableWaypointCycleComponent.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Special configuration for editable waypoint cycle.
1111
*/
1212
class ODIN_EditableWaypointCycleComponent : SCR_EditableWaypointComponent
1313
{
14-
override SCR_EditableEntityComponent EOnEditorPlace(out SCR_EditableEntityComponent parent, SCR_EditableEntityComponent recipient, EEditorPlacingFlags flags, bool isQueue)
14+
override SCR_EditableEntityComponent EOnEditorPlace(out SCR_EditableEntityComponent parent, SCR_EditableEntityComponent recipient, EEditorPlacingFlags flags, bool isQueue, int playerID = 0)
1515
{
1616
//--- Add the group's waypoints to the waypoint cycle
1717
if (recipient)
@@ -26,7 +26,7 @@ class ODIN_EditableWaypointCycleComponent : SCR_EditableWaypointComponent
2626
};
2727
};
2828

29-
return super.EOnEditorPlace(parent, recipient, flags, isQueue);
29+
return super.EOnEditorPlace(parent, recipient, flags, isQueue, playerID);
3030
}
3131

3232
override void OnDelete(IEntity owner)

Scripts/Game/ODIN/Editor/Containers/Attributes/ODIN_ToggleDamageEditorAttribute.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class ODIN_ToggleDamageEditorAttribute : SCR_BaseEditorAttribute
1818
if (!SCR_ChimeraCharacter.Cast(owner))
1919
return null;
2020

21-
ScriptedDamageManagerComponent damageComponent = ScriptedDamageManagerComponent.Cast(owner.FindComponent(ScriptedDamageManagerComponent));
21+
SCR_DamageManagerComponent damageComponent = SCR_DamageManagerComponent.Cast(owner.FindComponent(SCR_DamageManagerComponent));
2222
if (!damageComponent)
2323
return null;
2424

@@ -36,7 +36,7 @@ class ODIN_ToggleDamageEditorAttribute : SCR_BaseEditorAttribute
3636
return;
3737

3838
// todo, move it to helper when verified it works
39-
ScriptedDamageManagerComponent damageComponent = ScriptedDamageManagerComponent.Cast(owner.FindComponent(ScriptedDamageManagerComponent));
39+
SCR_DamageManagerComponent damageComponent = SCR_DamageManagerComponent.Cast(owner.FindComponent(SCR_DamageManagerComponent));
4040
if (!damageComponent)
4141
return;
4242

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
//------------------------------------------------------------------------------------------------
2+
modded class SCR_DamageManagerComponent : BaseSCR_DamageManagerComponent
3+
{
4+
protected bool m_bODIN_isDamageEnabled = true;
5+
6+
//------------------------------------------------------------------------------------------------
7+
bool ODIN_IsDamageEnabled()
8+
{
9+
return m_bODIN_isDamageEnabled;
10+
}
11+
12+
//------------------------------------------------------------------------------------------------
13+
void ODIN_SetDamageEnabled(bool enabled)
14+
{
15+
m_bODIN_isDamageEnabled = enabled;
16+
}
17+
18+
//------------------------------------------------------------------------------------------------
19+
override bool SCR_HijackDamageHandling(notnull BaseDamageContext damageContext)
20+
{
21+
if (m_bODIN_isDamageEnabled)
22+
return super.SCR_HijackDamageHandling(damageContext);
23+
24+
return true;
25+
}
26+
}

Scripts/GameCode/ODIN/Components/ScriptedDamageManagerComponent.c

-40
This file was deleted.

0 commit comments

Comments
 (0)