From b9065ca8d2e6dee50ad795569d2143ff461e2914 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 14 Apr 2026 21:22:50 +0200 Subject: [PATCH] Remove orphan effects and add headless smoke hooks --- .../effect/background/moonlight_eff_bat.mse | 524 -------------- .../background/moonlight_eff_bat_02_20s.mse | 654 ------------------ .../effect/background/mushrooma_01.mse | 35 - .../effect/background/mushrooma_03.mse | 35 - .../effect/background/mushrooma_04.mse | 35 - .../turtle_statue_tree_roof_light01.mse | 36 - assets/root/game.py | 271 +++++++- assets/root/introloading.py | 26 + assets/root/intrologin.py | 7 +- assets/root/networkmodule.py | 26 +- assets/root/prototype.py | 51 +- 11 files changed, 372 insertions(+), 1328 deletions(-) delete mode 100644 assets/Effect/ymir work/effect/background/moonlight_eff_bat.mse delete mode 100644 assets/Effect/ymir work/effect/background/moonlight_eff_bat_02_20s.mse delete mode 100644 assets/Effect/ymir work/effect/background/mushrooma_01.mse delete mode 100644 assets/Effect/ymir work/effect/background/mushrooma_03.mse delete mode 100644 assets/Effect/ymir work/effect/background/mushrooma_04.mse delete mode 100644 assets/Effect/ymir work/effect/background/turtle_statue_tree_roof_light01.mse diff --git a/assets/Effect/ymir work/effect/background/moonlight_eff_bat.mse b/assets/Effect/ymir work/effect/background/moonlight_eff_bat.mse deleted file mode 100644 index 1c82966b..00000000 --- a/assets/Effect/ymir work/effect/background/moonlight_eff_bat.mse +++ /dev/null @@ -1,524 +0,0 @@ -BoundingSphereRadius 0.000000 -BoundingSpherePosition 0.000000 0.000000 0.000000 - -Group Particle -{ - StartTime 0.176000 - List TimeEventPosition - { - 0.000000 "MOVING_TYPE_DIRECT" 0.000000 0.000000 0.000000 - } - - StaticRotation 0.000000 0.000000 0.000000 - Group EmitterProperty - { - MaxEmissionCount 1 - - CycleLength 10.000000 - CycleLoopEnable 1 - LoopCount 3 - - EmitterShape 0 - EmitterAdvancedType 0 - EmitterEmitFromEdgeFlag 0 - EmittingDirection 0.080000 0.000000 0.000000 - - List TimeEventEmittingSize - { - 0.000000 0.000000 - } - List TimeEventEmittingAngularVelocity - { - 0.000000 0.000000 - } - List TimeEventEmittingDirectionX - { - 0.000000 5.000000 - } - List TimeEventEmittingDirectionY - { - 0.000000 -50.000000 - 0.100000 -20.000000 - } - List TimeEventEmittingDirectionZ - { - 0.000000 10.000000 - 0.050000 100.000000 - 0.100000 1000.000000 - } - List TimeEventEmittingVelocity - { - 0.000000 15.000000 - } - List TimeEventEmissionCountPerSecond - { - 0.000000 1000.000000 - } - List TimeEventLifeTime - { - 0.000000 10.000000 - } - List TimeEventSizeX - { - 0.000000 60.000000 - } - List TimeEventSizeY - { - 0.000000 36.000000 - } - } - - Group ParticleProperty - { - SrcBlendType 5 - DestBlendType 6 - ColorOperationType 4 - BillboardType 1 - RotationType 0 - RotationSpeed 0.000000 - RotationRandomStartingBegin 0 - RotationRandomStartingEnd 0 - - AttachEnable 1 - StretchEnable 0 - - TexAniType 1 - TexAniDelay 0.040000 - TexAniRandomStartFrameEnable 0 - EnableFrustum 0 - - List TimeEventGravity - { - } - List TimeEventAirResistance - { - } - List TimeEventScaleX - { - 0.000000 1.000000 - } - List TimeEventScaleY - { - 0.000000 1.000000 - } - List TimeEventColorRed - { - 0.000000 1.000000 - } - List TimeEventColorGreen - { - 0.000000 1.000000 - } - List TimeEventColorBlue - { - 0.000000 1.000000 - } - List TimeEventAlpha - { - 0.000000 1.000000 - 0.737143 1.000000 - 1.000000 0.000000 - } - List TimeEventRotation - { - 0.000000 0.000000 - } - List TextureFiles - { - "D:\Ymir Work\effect\pet\halloween_2022_coffin_bat_01.dds" - "D:\Ymir Work\effect\pet\halloween_2022_coffin_bat_02.dds" - "D:\Ymir Work\effect\pet\halloween_2022_coffin_bat_03.dds" - } - } -} -Group Particle -{ - StartTime 0.072000 - List TimeEventPosition - { - 0.000000 "MOVING_TYPE_DIRECT" 0.000000 0.000000 0.000000 - } - - StaticRotation 0.000000 0.000000 0.000000 - Group EmitterProperty - { - MaxEmissionCount 1 - - CycleLength 10.000000 - CycleLoopEnable 1 - LoopCount 3 - - EmitterShape 0 - EmitterAdvancedType 0 - EmitterEmitFromEdgeFlag 0 - EmittingDirection 0.080000 0.000000 0.000000 - - List TimeEventEmittingSize - { - 0.000000 0.000000 - } - List TimeEventEmittingAngularVelocity - { - 0.000000 0.000000 - } - List TimeEventEmittingDirectionX - { - 0.000000 15.000000 - } - List TimeEventEmittingDirectionY - { - 0.000000 -50.000000 - 0.100000 -20.000000 - } - List TimeEventEmittingDirectionZ - { - 0.000000 10.000000 - 0.050000 50.000000 - 0.100000 1000.000000 - } - List TimeEventEmittingVelocity - { - 0.000000 15.000000 - } - List TimeEventEmissionCountPerSecond - { - 0.000000 1000.000000 - } - List TimeEventLifeTime - { - 0.000000 10.000000 - } - List TimeEventSizeX - { - 0.000000 72.000000 - } - List TimeEventSizeY - { - 0.000000 48.000000 - } - } - - Group ParticleProperty - { - SrcBlendType 5 - DestBlendType 6 - ColorOperationType 4 - BillboardType 1 - RotationType 0 - RotationSpeed 0.000000 - RotationRandomStartingBegin 0 - RotationRandomStartingEnd 0 - - AttachEnable 1 - StretchEnable 0 - - TexAniType 1 - TexAniDelay 0.040000 - TexAniRandomStartFrameEnable 0 - EnableFrustum 0 - - List TimeEventGravity - { - } - List TimeEventAirResistance - { - } - List TimeEventScaleX - { - 0.000000 1.000000 - } - List TimeEventScaleY - { - 0.000000 1.000000 - } - List TimeEventColorRed - { - 0.000000 1.000000 - } - List TimeEventColorGreen - { - 0.000000 1.000000 - } - List TimeEventColorBlue - { - 0.000000 1.000000 - } - List TimeEventAlpha - { - 0.000000 1.000000 - 0.737143 1.000000 - 1.000000 0.000000 - } - List TimeEventRotation - { - 0.000000 0.000000 - } - List TextureFiles - { - "D:\Ymir Work\effect\pet\halloween_2022_coffin_bat_01.dds" - "D:\Ymir Work\effect\pet\halloween_2022_coffin_bat_02.dds" - "D:\Ymir Work\effect\pet\halloween_2022_coffin_bat_03.dds" - } - } -} -Group Particle -{ - StartTime 0.000000 - List TimeEventPosition - { - 0.000000 "MOVING_TYPE_DIRECT" 0.000000 0.000000 0.000000 - } - - StaticRotation 0.000000 0.000000 0.000000 - Group EmitterProperty - { - MaxEmissionCount 1 - - CycleLength 10.000000 - CycleLoopEnable 1 - LoopCount 3 - - EmitterShape 0 - EmitterAdvancedType 0 - EmitterEmitFromEdgeFlag 0 - EmittingDirection 0.080000 0.000000 0.000000 - - List TimeEventEmittingSize - { - 0.000000 0.000000 - } - List TimeEventEmittingAngularVelocity - { - 0.000000 0.000000 - } - List TimeEventEmittingDirectionX - { - 0.000000 50.000000 - } - List TimeEventEmittingDirectionY - { - 0.000000 -50.000000 - 0.100000 -20.000000 - } - List TimeEventEmittingDirectionZ - { - 0.000000 10.000000 - 0.050000 100.000000 - 0.100000 1000.000000 - } - List TimeEventEmittingVelocity - { - 0.000000 5.000000 - 0.083429 15.000000 - } - List TimeEventEmissionCountPerSecond - { - 0.000000 1000.000000 - } - List TimeEventLifeTime - { - 0.000000 10.000000 - } - List TimeEventSizeX - { - 0.000000 60.000000 - } - List TimeEventSizeY - { - 0.000000 36.000000 - } - } - - Group ParticleProperty - { - SrcBlendType 5 - DestBlendType 6 - ColorOperationType 4 - BillboardType 1 - RotationType 0 - RotationSpeed 0.000000 - RotationRandomStartingBegin 0 - RotationRandomStartingEnd 0 - - AttachEnable 1 - StretchEnable 0 - - TexAniType 1 - TexAniDelay 0.040000 - TexAniRandomStartFrameEnable 0 - EnableFrustum 0 - - List TimeEventGravity - { - } - List TimeEventAirResistance - { - } - List TimeEventScaleX - { - 0.000000 1.000000 - } - List TimeEventScaleY - { - 0.000000 1.000000 - } - List TimeEventColorRed - { - 0.000000 1.000000 - } - List TimeEventColorGreen - { - 0.000000 1.000000 - } - List TimeEventColorBlue - { - 0.000000 1.000000 - } - List TimeEventAlpha - { - 0.000000 1.000000 - 0.737143 1.000000 - 1.000000 0.000000 - } - List TimeEventRotation - { - 0.000000 0.000000 - } - List TextureFiles - { - "D:\Ymir Work\effect\pet\halloween_2022_coffin_bat_01.dds" - "D:\Ymir Work\effect\pet\halloween_2022_coffin_bat_02.dds" - "D:\Ymir Work\effect\pet\halloween_2022_coffin_bat_03.dds" - } - } -} -Group Particle -{ - StartTime 0.000000 - List TimeEventPosition - { - 0.000000 "MOVING_TYPE_DIRECT" 0.000000 0.000000 0.000000 - 0.216000 "MOVING_TYPE_DIRECT" 0.000000 -20.000000 20.000000 - } - - StaticRotation 0.000000 0.000000 0.000000 - Group EmitterProperty - { - MaxEmissionCount 30 - - CycleLength 10.000000 - CycleLoopEnable 1 - LoopCount 3 - - EmitterShape 3 - EmitterAdvancedType 1 - EmittingRadius 80.000000 - EmitterEmitFromEdgeFlag 0 - EmittingDirection 0.010000 0.010000 0.010000 - - List TimeEventEmittingSize - { - 0.000000 0.000000 - } - List TimeEventEmittingAngularVelocity - { - 0.000000 0.000000 - } - List TimeEventEmittingDirectionX - { - 0.000000 0.000000 - } - List TimeEventEmittingDirectionY - { - 0.000000 0.000000 - } - List TimeEventEmittingDirectionZ - { - 0.000000 20.000000 - } - List TimeEventEmittingVelocity - { - 0.000000 1.000000 - } - List TimeEventEmissionCountPerSecond - { - 0.000000 1000.000000 - } - List TimeEventLifeTime - { - 0.000000 10.000000 - } - List TimeEventSizeX - { - 0.000000 128.000000 - } - List TimeEventSizeY - { - 0.000000 128.000000 - } - } - - Group ParticleProperty - { - SrcBlendType 5 - DestBlendType 6 - ColorOperationType 4 - BillboardType 1 - RotationType 4 - RotationSpeed 56.000000 - RotationRandomStartingBegin 360 - RotationRandomStartingEnd 0 - - AttachEnable 0 - StretchEnable 0 - - TexAniType 0 - TexAniDelay 0.040000 - TexAniRandomStartFrameEnable 0 - EnableFrustum 0 - - List TimeEventGravity - { - } - List TimeEventAirResistance - { - 0.000000 0.000000 - 0.034286 0.100000 - } - List TimeEventScaleX - { - 0.000000 0.500000 - 1.000000 1.000000 - } - List TimeEventScaleY - { - 0.000000 0.500000 - 1.000000 1.000000 - } - List TimeEventColorRed - { - 0.000000 0.819608 - } - List TimeEventColorGreen - { - 0.000000 0.780392 - } - List TimeEventColorBlue - { - 0.000000 0.682353 - } - List TimeEventAlpha - { - 0.000000 1.000000 - 0.112821 0.000000 - } - List TimeEventRotation - { - 0.000000 0.000000 - } - List TextureFiles - { - "D:\Ymir Work\effect\monster2\smoke_dirt1.dds" - } - } -} diff --git a/assets/Effect/ymir work/effect/background/moonlight_eff_bat_02_20s.mse b/assets/Effect/ymir work/effect/background/moonlight_eff_bat_02_20s.mse deleted file mode 100644 index 18a7a776..00000000 --- a/assets/Effect/ymir work/effect/background/moonlight_eff_bat_02_20s.mse +++ /dev/null @@ -1,654 +0,0 @@ -BoundingSphereRadius 0.000000 -BoundingSpherePosition 0.000000 0.000000 0.000000 - -Group Particle -{ - StartTime 0.176000 - List TimeEventPosition - { - 0.000000 "MOVING_TYPE_DIRECT" 0.000000 0.000000 0.000000 - } - - StaticRotation 0.000000 0.000000 0.000000 - Group EmitterProperty - { - MaxEmissionCount 1 - - CycleLength 20.000000 - CycleLoopEnable 1 - LoopCount 2 - - EmitterShape 0 - EmitterAdvancedType 0 - EmitterEmitFromEdgeFlag 0 - EmittingDirection 0.080000 0.000000 0.000000 - - List TimeEventEmittingSize - { - 0.000000 0.000000 - } - List TimeEventEmittingAngularVelocity - { - 0.000000 0.000000 - } - List TimeEventEmittingDirectionX - { - 0.000000 5.000000 - } - List TimeEventEmittingDirectionY - { - 0.000000 50.000000 - 0.100000 20.000000 - } - List TimeEventEmittingDirectionZ - { - 0.000000 10.000000 - 0.050000 100.000000 - 0.100000 1000.000000 - } - List TimeEventEmittingVelocity - { - 0.000000 15.000000 - } - List TimeEventEmissionCountPerSecond - { - 0.000000 1000.000000 - } - List TimeEventLifeTime - { - 0.000000 20.000000 - } - List TimeEventSizeX - { - 0.000000 60.000000 - } - List TimeEventSizeY - { - 0.000000 36.000000 - } - } - - Group ParticleProperty - { - SrcBlendType 5 - DestBlendType 6 - ColorOperationType 4 - BillboardType 1 - RotationType 0 - RotationSpeed 0.000000 - RotationRandomStartingBegin 0 - RotationRandomStartingEnd 0 - - AttachEnable 1 - StretchEnable 0 - - TexAniType 1 - TexAniDelay 0.040000 - TexAniRandomStartFrameEnable 0 - EnableFrustum 0 - - List TimeEventGravity - { - } - List TimeEventAirResistance - { - } - List TimeEventScaleX - { - 0.000000 1.000000 - } - List TimeEventScaleY - { - 0.000000 1.000000 - } - List TimeEventColorRed - { - 0.000000 1.000000 - } - List TimeEventColorGreen - { - 0.000000 1.000000 - } - List TimeEventColorBlue - { - 0.000000 1.000000 - } - List TimeEventAlpha - { - 0.000000 1.000000 - 0.376923 1.000000 - 0.500000 0.000000 - } - List TimeEventRotation - { - 0.000000 0.000000 - } - List TextureFiles - { - "D:\Ymir Work\effect\pet\halloween_2022_coffin_bat_01.dds" - "D:\Ymir Work\effect\pet\halloween_2022_coffin_bat_02.dds" - "D:\Ymir Work\effect\pet\halloween_2022_coffin_bat_03.dds" - } - } -} -Group Particle -{ - StartTime 0.072000 - List TimeEventPosition - { - 0.000000 "MOVING_TYPE_DIRECT" 0.000000 0.000000 0.000000 - } - - StaticRotation 0.000000 0.000000 0.000000 - Group EmitterProperty - { - MaxEmissionCount 1 - - CycleLength 20.000000 - CycleLoopEnable 1 - LoopCount 2 - - EmitterShape 0 - EmitterAdvancedType 0 - EmitterEmitFromEdgeFlag 0 - EmittingDirection 0.080000 0.000000 0.000000 - - List TimeEventEmittingSize - { - 0.000000 0.000000 - } - List TimeEventEmittingAngularVelocity - { - 0.000000 0.000000 - } - List TimeEventEmittingDirectionX - { - 0.000000 15.000000 - } - List TimeEventEmittingDirectionY - { - 0.000000 50.000000 - 0.100000 20.000000 - } - List TimeEventEmittingDirectionZ - { - 0.000000 10.000000 - 0.050000 50.000000 - 0.100000 1000.000000 - } - List TimeEventEmittingVelocity - { - 0.000000 15.000000 - } - List TimeEventEmissionCountPerSecond - { - 0.000000 1000.000000 - } - List TimeEventLifeTime - { - 0.000000 20.000000 - } - List TimeEventSizeX - { - 0.000000 72.000000 - } - List TimeEventSizeY - { - 0.000000 48.000000 - } - } - - Group ParticleProperty - { - SrcBlendType 5 - DestBlendType 6 - ColorOperationType 4 - BillboardType 1 - RotationType 0 - RotationSpeed 0.000000 - RotationRandomStartingBegin 0 - RotationRandomStartingEnd 0 - - AttachEnable 1 - StretchEnable 0 - - TexAniType 1 - TexAniDelay 0.040000 - TexAniRandomStartFrameEnable 0 - EnableFrustum 0 - - List TimeEventGravity - { - } - List TimeEventAirResistance - { - } - List TimeEventScaleX - { - 0.000000 1.000000 - } - List TimeEventScaleY - { - 0.000000 1.000000 - } - List TimeEventColorRed - { - 0.000000 1.000000 - } - List TimeEventColorGreen - { - 0.000000 1.000000 - } - List TimeEventColorBlue - { - 0.000000 1.000000 - } - List TimeEventAlpha - { - 0.000000 1.000000 - 0.387179 1.000000 - 0.517949 0.000000 - } - List TimeEventRotation - { - 0.000000 0.000000 - } - List TextureFiles - { - "D:\Ymir Work\effect\pet\halloween_2022_coffin_bat_01.dds" - "D:\Ymir Work\effect\pet\halloween_2022_coffin_bat_02.dds" - "D:\Ymir Work\effect\pet\halloween_2022_coffin_bat_03.dds" - } - } -} -Group Particle -{ - StartTime 0.072000 - List TimeEventPosition - { - 0.000000 "MOVING_TYPE_DIRECT" 0.000000 0.000000 0.000000 - } - - StaticRotation 0.000000 0.000000 0.000000 - Group EmitterProperty - { - MaxEmissionCount 1 - - CycleLength 20.000000 - CycleLoopEnable 1 - LoopCount 2 - - EmitterShape 0 - EmitterAdvancedType 0 - EmitterEmitFromEdgeFlag 0 - EmittingDirection 0.080000 0.000000 0.000000 - - List TimeEventEmittingSize - { - 0.000000 0.000000 - } - List TimeEventEmittingAngularVelocity - { - 0.000000 0.000000 - } - List TimeEventEmittingDirectionX - { - 0.000000 15.000000 - } - List TimeEventEmittingDirectionY - { - 0.000000 50.000000 - 0.100000 20.000000 - } - List TimeEventEmittingDirectionZ - { - 0.000000 10.000000 - 0.050000 50.000000 - 0.100000 1000.000000 - } - List TimeEventEmittingVelocity - { - 0.000000 15.000000 - } - List TimeEventEmissionCountPerSecond - { - 0.000000 1000.000000 - } - List TimeEventLifeTime - { - 0.000000 20.000000 - } - List TimeEventSizeX - { - 0.000000 72.000000 - } - List TimeEventSizeY - { - 0.000000 48.000000 - } - } - - Group ParticleProperty - { - SrcBlendType 5 - DestBlendType 6 - ColorOperationType 4 - BillboardType 1 - RotationType 0 - RotationSpeed 0.000000 - RotationRandomStartingBegin 0 - RotationRandomStartingEnd 0 - - AttachEnable 1 - StretchEnable 0 - - TexAniType 1 - TexAniDelay 0.040000 - TexAniRandomStartFrameEnable 0 - EnableFrustum 0 - - List TimeEventGravity - { - } - List TimeEventAirResistance - { - } - List TimeEventScaleX - { - 0.000000 1.000000 - } - List TimeEventScaleY - { - 0.000000 1.000000 - } - List TimeEventColorRed - { - 0.000000 1.000000 - } - List TimeEventColorGreen - { - 0.000000 1.000000 - } - List TimeEventColorBlue - { - 0.000000 1.000000 - } - List TimeEventAlpha - { - 0.000000 1.000000 - 0.405128 1.000000 - 0.505128 0.000000 - } - List TimeEventRotation - { - 0.000000 0.000000 - } - List TextureFiles - { - "D:\Ymir Work\effect\pet\halloween_2022_coffin_bat_01.dds" - "D:\Ymir Work\effect\pet\halloween_2022_coffin_bat_02.dds" - "D:\Ymir Work\effect\pet\halloween_2022_coffin_bat_03.dds" - } - } -} -Group Particle -{ - StartTime 0.000000 - List TimeEventPosition - { - 0.000000 "MOVING_TYPE_DIRECT" 0.000000 0.000000 0.000000 - } - - StaticRotation 0.000000 0.000000 0.000000 - Group EmitterProperty - { - MaxEmissionCount 1 - - CycleLength 20.000000 - CycleLoopEnable 1 - LoopCount 2 - - EmitterShape 0 - EmitterAdvancedType 0 - EmitterEmitFromEdgeFlag 0 - EmittingDirection 0.100000 0.000000 0.050000 - - List TimeEventEmittingSize - { - 0.000000 0.000000 - } - List TimeEventEmittingAngularVelocity - { - 0.000000 0.000000 - } - List TimeEventEmittingDirectionX - { - 0.000000 50.000000 - } - List TimeEventEmittingDirectionY - { - 0.000000 50.000000 - 0.100000 20.000000 - } - List TimeEventEmittingDirectionZ - { - 0.000000 10.000000 - 0.050000 100.000000 - 0.100000 1000.000000 - } - List TimeEventEmittingVelocity - { - 0.000000 5.000000 - 0.083429 15.000000 - } - List TimeEventEmissionCountPerSecond - { - 0.000000 1000.000000 - } - List TimeEventLifeTime - { - 0.000000 20.000000 - } - List TimeEventSizeX - { - 0.000000 60.000000 - } - List TimeEventSizeY - { - 0.000000 36.000000 - } - } - - Group ParticleProperty - { - SrcBlendType 5 - DestBlendType 6 - ColorOperationType 4 - BillboardType 1 - RotationType 0 - RotationSpeed 0.000000 - RotationRandomStartingBegin 0 - RotationRandomStartingEnd 0 - - AttachEnable 1 - StretchEnable 0 - - TexAniType 1 - TexAniDelay 0.040000 - TexAniRandomStartFrameEnable 0 - EnableFrustum 0 - - List TimeEventGravity - { - } - List TimeEventAirResistance - { - } - List TimeEventScaleX - { - 0.000000 1.000000 - } - List TimeEventScaleY - { - 0.000000 1.000000 - } - List TimeEventColorRed - { - 0.000000 1.000000 - } - List TimeEventColorGreen - { - 0.000000 1.000000 - } - List TimeEventColorBlue - { - 0.000000 1.000000 - } - List TimeEventAlpha - { - 0.000000 1.000000 - 0.382051 1.000000 - 0.500000 0.000000 - } - List TimeEventRotation - { - 0.000000 0.000000 - } - List TextureFiles - { - "D:\Ymir Work\effect\pet\halloween_2022_coffin_bat_01.dds" - "D:\Ymir Work\effect\pet\halloween_2022_coffin_bat_02.dds" - "D:\Ymir Work\effect\pet\halloween_2022_coffin_bat_03.dds" - } - } -} -Group Particle -{ - StartTime 0.000000 - List TimeEventPosition - { - 0.000000 "MOVING_TYPE_DIRECT" 0.000000 0.000000 0.000000 - 0.216000 "MOVING_TYPE_DIRECT" 0.000000 -20.000000 20.000000 - } - - StaticRotation 0.000000 0.000000 0.000000 - Group EmitterProperty - { - MaxEmissionCount 30 - - CycleLength 20.000000 - CycleLoopEnable 1 - LoopCount 2 - - EmitterShape 3 - EmitterAdvancedType 1 - EmittingRadius 80.000000 - EmitterEmitFromEdgeFlag 0 - EmittingDirection 0.010000 0.010000 0.010000 - - List TimeEventEmittingSize - { - 0.000000 0.000000 - } - List TimeEventEmittingAngularVelocity - { - 0.000000 0.000000 - } - List TimeEventEmittingDirectionX - { - 0.000000 0.000000 - } - List TimeEventEmittingDirectionY - { - 0.000000 0.000000 - } - List TimeEventEmittingDirectionZ - { - 0.000000 20.000000 - } - List TimeEventEmittingVelocity - { - 0.000000 1.000000 - } - List TimeEventEmissionCountPerSecond - { - 0.000000 1000.000000 - } - List TimeEventLifeTime - { - 0.000000 20.000000 - } - List TimeEventSizeX - { - 0.000000 128.000000 - } - List TimeEventSizeY - { - 0.000000 128.000000 - } - } - - Group ParticleProperty - { - SrcBlendType 5 - DestBlendType 6 - ColorOperationType 4 - BillboardType 1 - RotationType 4 - RotationSpeed 56.000000 - RotationRandomStartingBegin 360 - RotationRandomStartingEnd 0 - - AttachEnable 0 - StretchEnable 0 - - TexAniType 0 - TexAniDelay 0.040000 - TexAniRandomStartFrameEnable 0 - EnableFrustum 0 - - List TimeEventGravity - { - } - List TimeEventAirResistance - { - 0.000000 0.000000 - 0.034286 0.100000 - } - List TimeEventScaleX - { - 0.000000 0.500000 - 1.000000 1.000000 - } - List TimeEventScaleY - { - 0.000000 0.500000 - 1.000000 1.000000 - } - List TimeEventColorRed - { - 0.000000 0.819608 - } - List TimeEventColorGreen - { - 0.000000 0.780392 - } - List TimeEventColorBlue - { - 0.000000 0.682353 - } - List TimeEventAlpha - { - 0.000000 1.000000 - 0.050000 0.000000 - } - List TimeEventRotation - { - 0.000000 0.000000 - } - List TextureFiles - { - "D:\Ymir Work\effect\monster2\smoke_dirt1.dds" - } - } -} diff --git a/assets/Effect/ymir work/effect/background/mushrooma_01.mse b/assets/Effect/ymir work/effect/background/mushrooma_01.mse deleted file mode 100644 index d09bfb6a..00000000 --- a/assets/Effect/ymir work/effect/background/mushrooma_01.mse +++ /dev/null @@ -1,35 +0,0 @@ -BoundingSphereRadius 400.000000 -BoundingSpherePosition -180.000000 -60.000000 650.000000 - -Group Mesh -{ - StartTime 0.000000 - List TimeEventPosition - { - 0.000000 "MOVING_TYPE_DIRECT" 0.000000 0.000000 0.000000 - } - - MeshFileName "mushroomA_01.mde" - MeshAnimationLoopEnable 1 - MeshAnimationLoopCount 0 - MeshAnimationFrameDelay 0.020000 - - MeshElementCount 1 - Group MeshElement00 - { - BillboardType 0 - BlendingEnable 1 - BlendingSrcType 5 - BlendingDestType 2 - - TextureAnimationLoopEnable 1 - TextureAnimationFrameDelay 0.020000 - TextureAnimationStartFrame 0 - - ColorOperationType 5 - ColorFactor 0.168627 0.643137 0.360784 1.000000 - List TimeEventAlpha - { - } - } -} diff --git a/assets/Effect/ymir work/effect/background/mushrooma_03.mse b/assets/Effect/ymir work/effect/background/mushrooma_03.mse deleted file mode 100644 index 5ab03bca..00000000 --- a/assets/Effect/ymir work/effect/background/mushrooma_03.mse +++ /dev/null @@ -1,35 +0,0 @@ -BoundingSphereRadius 500.000000 -BoundingSpherePosition 100.000000 0.000000 550.000000 - -Group Mesh -{ - StartTime 0.000000 - List TimeEventPosition - { - 0.000000 "MOVING_TYPE_DIRECT" 0.000000 0.000000 0.000000 - } - - MeshFileName "mushroomA_03.mde" - MeshAnimationLoopEnable 1 - MeshAnimationLoopCount 0 - MeshAnimationFrameDelay 0.020000 - - MeshElementCount 1 - Group MeshElement00 - { - BillboardType 0 - BlendingEnable 1 - BlendingSrcType 5 - BlendingDestType 2 - - TextureAnimationLoopEnable 1 - TextureAnimationFrameDelay 0.020000 - TextureAnimationStartFrame 0 - - ColorOperationType 5 - ColorFactor 0.184314 0.643137 0.462745 1.000000 - List TimeEventAlpha - { - } - } -} diff --git a/assets/Effect/ymir work/effect/background/mushrooma_04.mse b/assets/Effect/ymir work/effect/background/mushrooma_04.mse deleted file mode 100644 index fd039bb4..00000000 --- a/assets/Effect/ymir work/effect/background/mushrooma_04.mse +++ /dev/null @@ -1,35 +0,0 @@ -BoundingSphereRadius 330.000000 -BoundingSpherePosition -160.000000 0.000000 370.000000 - -Group Mesh -{ - StartTime 0.000000 - List TimeEventPosition - { - 0.000000 "MOVING_TYPE_DIRECT" 0.000000 0.000000 0.000000 - } - - MeshFileName "mushroomA_04.mde" - MeshAnimationLoopEnable 1 - MeshAnimationLoopCount 0 - MeshAnimationFrameDelay 0.020000 - - MeshElementCount 1 - Group MeshElement00 - { - BillboardType 0 - BlendingEnable 1 - BlendingSrcType 5 - BlendingDestType 2 - - TextureAnimationLoopEnable 1 - TextureAnimationFrameDelay 0.020000 - TextureAnimationStartFrame 0 - - ColorOperationType 5 - ColorFactor 0.200000 0.521569 0.227451 1.000000 - List TimeEventAlpha - { - } - } -} diff --git a/assets/Effect/ymir work/effect/background/turtle_statue_tree_roof_light01.mse b/assets/Effect/ymir work/effect/background/turtle_statue_tree_roof_light01.mse deleted file mode 100644 index ea6dc57a..00000000 --- a/assets/Effect/ymir work/effect/background/turtle_statue_tree_roof_light01.mse +++ /dev/null @@ -1,36 +0,0 @@ -BoundingSphereRadius 2500.000000 -BoundingSpherePosition 0.000000 0.000000 1800.000000 - -Group Mesh -{ - StartTime 0.000000 - List TimeEventPosition - { - 0.000000 "MOVING_TYPE_DIRECT" 0.000000 0.000000 0.000000 - } - - MeshFileName "turtle_statue_tree_roof_light01.mde" - MeshAnimationLoopEnable 1 - MeshAnimationLoopCount 0 - MeshAnimationFrameDelay 0.020000 - - MeshElementCount 1 - Group MeshElement00 - { - BillboardType 0 - BlendingEnable 1 - BlendingSrcType 5 - BlendingDestType 2 - - TextureAnimationLoopEnable 1 - TextureAnimationFrameDelay 0.020000 - TextureAnimationStartFrame 0 - - ColorOperationType 5 - ColorFactor 0.772549 0.733333 0.188235 1.000000 - List TimeEventAlpha - { - 0.046667 0.577320 - } - } -} diff --git a/assets/root/game.py b/assets/root/game.py index e584410a..84f0745d 100644 --- a/assets/root/game.py +++ b/assets/root/game.py @@ -55,6 +55,157 @@ from _weakref import proxy SCREENSHOT_CWDSAVE = False SCREENSHOT_DIR = None + +def _WriteHeadlessMapTrace(message): + if os.environ.get("M2_HEADLESS_SCENARIO", "").strip().lower() != "map_load": + return + + try: + open("log/headless_map_load_trace.txt", "a").write("%s\n" % message) + except: + pass + + +def _GetHeadlessScenario(): + return os.environ.get("M2_HEADLESS_SCENARIO", "").strip().lower() + + +def _WriteHeadlessTrace(message): + scenario = _GetHeadlessScenario() + if scenario == "map_load": + tracePath = "log/headless_map_load_trace.txt" + elif scenario == "gm_teleport": + tracePath = "log/headless_gm_teleport_trace.txt" + else: + return + + try: + open(tracePath, "a").write("%s\n" % message) + except: + pass + + +def _GetHeadlessFloat(name, default): + try: + return float(os.environ.get(name, str(default))) + except (TypeError, ValueError): + return default + + +def _GetHeadlessWarpSteps(): + rawValue = os.environ.get("M2_HEADLESS_WARP_STEPS", "").strip() + steps = [] + + if not rawValue: + return steps + + for rawStep in rawValue.split("|"): + rawStep = rawStep.strip() + if not rawStep: + continue + + parts = [part.strip() for part in rawStep.split(",")] + if len(parts) != 3: + _WriteHeadlessTrace("Invalid warp step=%s" % rawStep) + continue + + mapName = parts[0] + + try: + globalX = int(parts[1]) + globalY = int(parts[2]) + except: + _WriteHeadlessTrace("Invalid warp coords step=%s" % rawStep) + continue + + steps.append({ + "map_name": mapName, + "global_x": globalX, + "global_y": globalY, + }) + + return steps + + +HEADLESS_GM_STATE = { + "initialized": False, + "steps": [], + "index": 0, + "phase": "idle", + "command_at": 0.0, + "deadline": 0.0, + "quit_requested": False, +} + + +def _HeadlessGMEnabled(): + return _GetHeadlessScenario() == "gm_teleport" + + +def _HeadlessGMCommandDelay(): + return _GetHeadlessFloat("M2_HEADLESS_COMMAND_DELAY", 5.0) + + +def _HeadlessGMWarpTimeout(): + return _GetHeadlessFloat("M2_HEADLESS_WARP_TIMEOUT", 20.0) + + +def _HeadlessGMSettleDelay(): + return _GetHeadlessFloat("M2_HEADLESS_SETTLE_DELAY", 2.0) + + +def _HeadlessGMRequestQuit(message): + global HEADLESS_GM_STATE + + if message: + _WriteHeadlessTrace(message) + + if HEADLESS_GM_STATE.get("quit_requested"): + return + + HEADLESS_GM_STATE["quit_requested"] = True + app.Exit() + + +class _HeadlessDummy(object): + def __call__(self, *args, **kwargs): + return None + + def __getattr__(self, name): + return self + + def __nonzero__(self): + return False + + +_HEADLESS_DUMMY = _HeadlessDummy() + + +class _HeadlessInterface(object): + def MakeInterface(self): + return None + + def ShowDefaultWindows(self): + return None + + def HideAllWindows(self): + return None + + def Close(self): + return None + + def BUILD_OnUpdate(self): + return None + + def OpenWhisperDialog(self, *args): + return None + + def SetMapName(self, *args): + return None + + def __getattr__(self, name): + return _HEADLESS_DUMMY + cameraDistance = 1550.0 cameraPitch = 27.0 cameraRotation = 0.0 @@ -64,6 +215,7 @@ testAlignment = 0 class GameWindow(ui.ScriptWindow): def __init__(self, stream): + _WriteHeadlessTrace("GameWindow.__init__ begin") ui.ScriptWindow.__init__(self, "GAME") self.SetWindowName("game") net.SetPhaseWindow(net.PHASE_WINDOW_GAME, self) @@ -72,6 +224,7 @@ class GameWindow(ui.ScriptWindow): self.quickSlotPageIndex = 0 self.lastPKModeSendedTime = 0 self.pressNumber = None + self.headlessGmEnabled = _HeadlessGMEnabled() self.guildWarQuestionDialog = None self.interface = None @@ -82,9 +235,16 @@ class GameWindow(ui.ScriptWindow): self.playerGauge = None self.stream = stream - self.interface = interfaceModule.Interface() - self.interface.MakeInterface() - self.interface.ShowDefaultWindows() + if self.headlessGmEnabled: + self.interface = _HeadlessInterface() + _WriteHeadlessTrace("GameWindow.__init__ interface_headless") + else: + self.interface = interfaceModule.Interface() + _WriteHeadlessTrace("GameWindow.__init__ interface") + self.interface.MakeInterface() + _WriteHeadlessTrace("GameWindow.__init__ interface_made") + self.interface.ShowDefaultWindows() + _WriteHeadlessTrace("GameWindow.__init__ default_windows") self.curtain = uiPhaseCurtain.PhaseCurtain() self.curtain.speed = 0.03 @@ -112,6 +272,7 @@ class GameWindow(ui.ScriptWindow): self.__ServerCommand_Build() self.__ProcessPreservedServerCommand() + _WriteHeadlessTrace("GameWindow.__init__ done") def __del__(self): player.SetGameWindow(0) @@ -133,6 +294,10 @@ class GameWindow(ui.ScriptWindow): self.enableXMasBoom = False self.startTimeXMasBoom = 0.0 self.indexXMasBoom = 0 + currentMap = background.GetCurrentMapName() + _WriteHeadlessTrace("GameWindow.Open current_map=%s" % currentMap) + if self.headlessGmEnabled: + self.__HeadlessGMOnOpen(currentMap) global cameraDistance, cameraPitch, cameraRotation, cameraHeight @@ -220,6 +385,7 @@ class GameWindow(ui.ScriptWindow): self.currentCubeNPC = 0 def Close(self): + _WriteHeadlessTrace("GameWindow.Close begin current_map=%s" % background.GetCurrentMapName()) self.Hide() global cameraDistance, cameraPitch, cameraRotation, cameraHeight @@ -298,6 +464,7 @@ class GameWindow(ui.ScriptWindow): app.HideCursor() print("---------------------------------------------------------------------------- CLOSE GAME WINDOW") + _WriteHeadlessTrace("GameWindow.Close end current_map=%s" % background.GetCurrentMapName()) def __BuildKeyDict(self): onPressKeyDict = {} @@ -856,6 +1023,7 @@ class GameWindow(ui.ScriptWindow): # SHOW_LOCAL_MAP_NAME def ShowMapName(self, mapName, x, y): + _WriteHeadlessTrace("ShowMapName map=%s x=%d y=%d" % (mapName, x, y)) if self.mapNameShower: self.mapNameShower.ShowMapName(mapName, x, y) @@ -1465,8 +1633,104 @@ class GameWindow(ui.ScriptWindow): def OnMouseMiddleButtonUp(self): player.SetMouseMiddleButtonState(player.MBS_CLICK) + def __HeadlessGMOnOpen(self, currentMap): + global HEADLESS_GM_STATE + + state = HEADLESS_GM_STATE + now = app.GetTime() + + if not state["initialized"]: + state["steps"] = _GetHeadlessWarpSteps() + state["index"] = 0 + state["phase"] = "waiting_command" + state["command_at"] = now + _HeadlessGMCommandDelay() + state["deadline"] = 0.0 + state["quit_requested"] = False + state["initialized"] = True + _WriteHeadlessTrace("GM ready current_map=%s steps=%d" % (currentMap, len(state["steps"]))) + + if not state["steps"]: + state["phase"] = "failed" + _HeadlessGMRequestQuit("No warp steps configured") + return + + if state["phase"] != "waiting_open": + return + + if state["index"] >= len(state["steps"]): + state["phase"] = "success" + _HeadlessGMRequestQuit("Scenario success current_map=%s" % currentMap) + return + + expectedMap = state["steps"][state["index"]]["map_name"] + if currentMap != expectedMap: + state["phase"] = "failed" + _HeadlessGMRequestQuit("Warp open mismatch index=%d expected=%s current_map=%s" % (state["index"], expectedMap, currentMap)) + return + + _WriteHeadlessTrace("Warp arrived index=%d map=%s" % (state["index"], currentMap)) + state["index"] += 1 + + if state["index"] >= len(state["steps"]): + state["phase"] = "success" + _HeadlessGMRequestQuit("Scenario success current_map=%s" % currentMap) + return + + state["phase"] = "settling" + state["command_at"] = now + _HeadlessGMSettleDelay() + state["deadline"] = 0.0 + + def __HeadlessGMOnUpdate(self): + global HEADLESS_GM_STATE + + if not self.headlessGmEnabled: + return + + state = HEADLESS_GM_STATE + if not state["initialized"] or state["quit_requested"]: + return + + now = app.GetTime() + + if state["phase"] == "waiting_command": + if state["index"] >= len(state["steps"]): + state["phase"] = "success" + _HeadlessGMRequestQuit("Scenario success current_map=%s" % background.GetCurrentMapName()) + return + + if now < state["command_at"]: + return + + if 0 == player.GetMainCharacterIndex(): + return + + step = state["steps"][state["index"]] + meterX = int(step["global_x"] / 100) + meterY = int(step["global_y"] / 100) + command = "/warp %d %d" % (meterX, meterY) + _WriteHeadlessTrace("Warp send index=%d map=%s meter_x=%d meter_y=%d current_map=%s" % (state["index"], step["map_name"], meterX, meterY, background.GetCurrentMapName())) + net.SendChatPacket(command) + state["phase"] = "waiting_open" + state["deadline"] = now + _HeadlessGMWarpTimeout() + return + + if state["phase"] == "settling": + if now >= state["command_at"]: + state["phase"] = "waiting_command" + return + + if state["phase"] == "waiting_open" and now > state["deadline"]: + if state["index"] < len(state["steps"]): + expectedMap = state["steps"][state["index"]]["map_name"] + else: + expectedMap = "" + state["phase"] = "failed" + _HeadlessGMRequestQuit("Warp timeout index=%d expected=%s current_map=%s" % (state["index"], expectedMap, background.GetCurrentMapName())) + return + def OnUpdate(self): app.UpdateGame() + self.__HeadlessGMOnUpdate() if self.mapNameShower.IsShow(): self.mapNameShower.Update() @@ -2229,4 +2493,3 @@ class GameWindow(ui.ScriptWindow): def SkillClearCoolTime(self, slotIndex): self.interface.SkillClearCoolTime(slotIndex) - diff --git a/assets/root/introloading.py b/assets/root/introloading.py index 90c06ab8..6ed45dd3 100644 --- a/assets/root/introloading.py +++ b/assets/root/introloading.py @@ -1,3 +1,5 @@ +import os + import ui import uiScriptLocale import net @@ -35,6 +37,25 @@ import uiOption import uiRestart #################################### + +def _GetHeadlessScenario(): + return os.environ.get("M2_HEADLESS_SCENARIO", "").strip().lower() + + +def _WriteHeadlessTrace(message): + scenario = _GetHeadlessScenario() + if scenario == "map_load": + tracePath = "log/headless_map_load_trace.txt" + elif scenario == "gm_teleport": + tracePath = "log/headless_gm_teleport_trace.txt" + else: + return + + try: + open(tracePath, "a").write("%s\n" % message) + except: + pass + class LoadingWindow(ui.ScriptWindow): def __init__(self, stream): print("NEW LOADING WINDOW -------------------------------------------------------------------------------") @@ -218,6 +239,7 @@ class LoadingWindow(ui.ScriptWindow): try: runFunc() except: + _WriteHeadlessTrace("LoadData failure step=%d" % progress) self.errMsg.Show() self.loadStepList=[] @@ -302,7 +324,9 @@ class LoadingWindow(ui.ScriptWindow): emotion.RegisterEmotionIcons() def __LoadMap(self): + _WriteHeadlessTrace("LoadMap begin global_x=%d global_y=%d" % (self.playerX, self.playerY)) net.Warp(self.playerX, self.playerY) + _WriteHeadlessTrace("LoadMap current_map=%s" % background.GetCurrentMapName()) def __LoadSound(self): playerSettingModule.LoadGameData("SOUND") @@ -337,6 +361,7 @@ class LoadingWindow(ui.ScriptWindow): # END_OF_GUILD_BUILDING def __StartGame(self): + _WriteHeadlessTrace("StartGame begin current_map=%s" % background.GetCurrentMapName()) background.SetViewDistanceSet(background.DISTANCE0, 25600) """ background.SetViewDistanceSet(background.DISTANCE1, 19200) @@ -349,6 +374,7 @@ class LoadingWindow(ui.ScriptWindow): app.SetGlobalCenterPosition(self.playerX, self.playerY) net.StartGame() + _WriteHeadlessTrace("StartGame queued current_map=%s" % background.GetCurrentMapName()) def _ReloadTitleNames(): for i in range(len(localeInfo.TITLE_NAME_LIST)): diff --git a/assets/root/intrologin.py b/assets/root/intrologin.py index 77b3cf99..efcdaf30 100644 --- a/assets/root/intrologin.py +++ b/assets/root/intrologin.py @@ -1,3 +1,4 @@ +import os import dbg import app import net @@ -18,6 +19,10 @@ import ime import uiScriptLocale import debugInfo + +def _AllowHeadlessLoginInfo(): + return os.environ.get("M2_HEADLESS_SCENARIO", "").strip().lower() == "gm_teleport" + # Multi-language hot-reload system from uilocaleselector import LocaleSelector @@ -715,7 +720,7 @@ class LoginWindow(ui.ScriptWindow): def __LoadLoginInfo(self, loginInfoFileName): # This should not work in production - if not debugInfo.IsDebugMode(): + if not debugInfo.IsDebugMode() and not _AllowHeadlessLoginInfo(): app.loggined = FALSE else: try: diff --git a/assets/root/networkmodule.py b/assets/root/networkmodule.py index 601dd755..3f447521 100644 --- a/assets/root/networkmodule.py +++ b/assets/root/networkmodule.py @@ -1,6 +1,8 @@ ################################################################################################### # Network +import os + import app import chr import dbg @@ -18,6 +20,25 @@ import uiPhaseCurtain import localeInfo + +def _GetHeadlessScenario(): + return os.environ.get("M2_HEADLESS_SCENARIO", "").strip().lower() + + +def _WriteHeadlessTrace(message): + scenario = _GetHeadlessScenario() + if scenario == "map_load": + tracePath = "log/headless_map_load_trace.txt" + elif scenario == "gm_teleport": + tracePath = "log/headless_gm_teleport_trace.txt" + else: + return + + try: + open(tracePath, "a").write("%s\n" % message) + except: + pass + class PopupDialog(ui.ScriptWindow): # MR-15: Multiline dialog messages BASE_HEIGHT = 105 @@ -167,6 +188,7 @@ class MainStream(object): if newPhaseWindow: newPhaseWindow.Open() + _WriteHeadlessTrace("MainStream.ChangePhase opened=%s" % newPhaseWindow.__class__.__name__) self.curPhaseWindow=newPhaseWindow @@ -237,7 +259,7 @@ class MainStream(object): try: import introLoading loadingPhaseWindow=introLoading.LoadingWindow(self) - loadingPhaseWindow.LoadData(x, y) + loadingPhaseWindow.DEBUG_LoadData(x, y) self.SetPhaseWindow(loadingPhaseWindow) except: import exception @@ -256,8 +278,10 @@ class MainStream(object): def SetGamePhase(self): try: import game + _WriteHeadlessTrace("MainStream.SetGamePhase begin current_map=%s" % background.GetCurrentMapName()) self.popupWindow.Close() self.SetPhaseWindow(game.GameWindow(self)) + _WriteHeadlessTrace("MainStream.SetGamePhase queued current_map=%s" % background.GetCurrentMapName()) except: raise import exception diff --git a/assets/root/prototype.py b/assets/root/prototype.py index 0b7b5288..dc02243e 100644 --- a/assets/root/prototype.py +++ b/assets/root/prototype.py @@ -1,3 +1,5 @@ +import os + import dbg import app import localeInfo @@ -14,6 +16,51 @@ import stringCommander #bind_me(locals().values()) + +def _GetHeadlessScenario(): + return os.environ.get("M2_HEADLESS_SCENARIO", "").strip().lower() + + +def _WriteHeadlessTrace(message): + scenario = _GetHeadlessScenario() + if scenario == "map_load": + tracePath = "log/headless_map_load_trace.txt" + elif scenario == "gm_teleport": + tracePath = "log/headless_gm_teleport_trace.txt" + else: + return + + try: + open(tracePath, "a").write("%s\n" % message) + except: + pass + + +def _GetHeadlessInt(name, default): + try: + return int(os.environ.get(name, str(default))) + except (TypeError, ValueError): + return default + + +def _SetInitialPhase(mainStream): + scenario = _GetHeadlessScenario() + if scenario == "map_load": + mapName = os.environ.get("M2_HEADLESS_MAP_NAME", "").strip() + globalX = _GetHeadlessInt("M2_HEADLESS_GLOBAL_X", 460800) + globalY = _GetHeadlessInt("M2_HEADLESS_GLOBAL_Y", 960000) + + _WriteHeadlessTrace("Scenario begin map=%s global_x=%d global_y=%d" % (mapName, globalX, globalY)) + mainStream.SetTestGamePhase(globalX, globalY) + return + + if scenario == "gm_teleport": + _WriteHeadlessTrace("Scenario begin gm_teleport") + mainStream.SetLoginPhase() + return + + mainStream.SetLoginPhase() + def RunApp(): musicInfo.LoadLastPlayFieldMusic() @@ -47,8 +94,7 @@ def RunApp(): mainStream.Create() #mainStream.SetLoadingPhase() - - mainStream.SetLoginPhase() + _SetInitialPhase(mainStream) #mainStream.SetSelectCharacterPhase() #mainStream.SetCreateCharacterPhase() #mainStream.SetSelectEmpirePhase() @@ -58,4 +104,3 @@ def RunApp(): mainStream.Destroy() RunApp() -