Boss & job complete Update

- Boss after rift clearance
- job completed event
- job rewards awarded on completion
This commit is contained in:
Pedro Gomes 2024-06-12 23:12:39 +01:00
parent c458ae4e8f
commit 7d28666e14
30 changed files with 4912 additions and 26 deletions

View File

@ -9,6 +9,7 @@ namespace Kryz.CharacterStats.Examples
{
[Header("Listeners:")]
[SerializeField] private GameEventListener_Float experienceOnNPCDeath;
[SerializeField] private GameEventListener_JobInstance onJobCompleted;
[Header("Components:")]
[SerializeField] Inventory inventory;
[SerializeField] EquipmentPanel equipmentPanel;
@ -107,6 +108,7 @@ namespace Kryz.CharacterStats.Examples
level.OnLevelUpEvent.AddListener(OnLevelUp);
level.OnExperienceChanged.AddListener(OnExperienceChanged);
experienceOnNPCDeath.Response.AddListener(level.GainExperience);
onJobCompleted.Response.AddListener(job => level.GainExperience(job.experienceReward));
UpdateLevelOnOthers();

View File

@ -92,6 +92,54 @@ MonoBehaviour:
Response:
m_PersistentCalls:
m_Calls: []
--- !u!1 &251563906218762357
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6837070979197644265}
- component: {fileID: 1377770798032594253}
m_Layer: 0
m_Name: OnJobCompleted
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6837070979197644265
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 251563906218762357}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 7475116341208250298}
m_RootOrder: 8
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1377770798032594253
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 251563906218762357}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c6f7b325f93a3f9419434a3ff0e2b63d, type: 3}
m_Name:
m_EditorClassIdentifier:
Event: {fileID: 11400000, guid: ddfb03fbf14af514db49b94a6c884fe1, type: 2}
Response:
m_PersistentCalls:
m_Calls: []
--- !u!1 &465822209880261432
GameObject:
m_ObjectHideFlags: 0
@ -648,6 +696,7 @@ MonoBehaviour:
onGameSceneLoaded: {fileID: 1384308382823606702}
onDifficultyChanged: {fileID: 6107700817552134979}
onJoinedRoom: {fileID: 741966922129695396}
onBossDead: {fileID: 3795431098373575983}
JobActive: 0
currentlySelectedJob:
templateIndex: 0
@ -660,6 +709,7 @@ MonoBehaviour:
coinReward: 0
experienceReward: 0
reputationReward: 0
completed: 0
availableJobs: []
--- !u!1 &7475116340738615313
GameObject:
@ -1108,6 +1158,8 @@ Transform:
- {fileID: 6245230172661884499}
- {fileID: 6361957775759101807}
- {fileID: 1829756085162323971}
- {fileID: 8249239762121006598}
- {fileID: 6837070979197644265}
m_Father: {fileID: 7475116342638198534}
m_RootOrder: 16
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -2735,6 +2787,7 @@ MonoBehaviour:
coinText: {fileID: 7475116342562358806}
onCoinDrop: {fileID: 7475116342491251793}
onJoinedRoom: {fileID: 741966922129695396}
onJobCompleted: {fileID: 1377770798032594253}
currentCoin: 0
--- !u!1 &7475116342844710300
GameObject:
@ -3004,6 +3057,54 @@ MonoBehaviour:
onGameSceneLoaded: {fileID: 1384308382823606702}
onDifficultyChanged: {fileID: 6107700817552134979}
onAvailableJobsUpdated: {fileID: 4629558797180514782}
--- !u!1 &8283774587231874637
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8249239762121006598}
- component: {fileID: 3795431098373575983}
m_Layer: 0
m_Name: OnBossDead
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8249239762121006598
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8283774587231874637}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 7475116341208250298}
m_RootOrder: 7
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &3795431098373575983
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8283774587231874637}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b18d3d5defd7c6845a22a1583a92bfb1, type: 3}
m_Name:
m_EditorClassIdentifier:
Event: {fileID: 11400000, guid: bac9f6f93a105804ba6fb0597e9d757c, type: 2}
Response:
m_PersistentCalls:
m_Calls: []
--- !u!1001 &3856480406335052643
PrefabInstance:
m_ObjectHideFlags: 0

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 11fbbd6bf23006740a203fe3d92d2213
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d1606185087224b44a592a9db3362529
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: fe4472aeb3f8bbe488e0acff2135e100
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -354,6 +354,8 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
experienceOnDeath: {fileID: 11400000, guid: 57959f6a9d7e8ab409d77bd400e80224, type: 2}
isBoss: 0
onBossDead: {fileID: 11400000, guid: bac9f6f93a105804ba6fb0597e9d757c, type: 2}
sightRange: 6
sightRangeMultiplierForProjectiles: 0.8
distanceToChangePatrolDestination: 1

View File

@ -440,6 +440,8 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
experienceOnDeath: {fileID: 11400000, guid: 57959f6a9d7e8ab409d77bd400e80224, type: 2}
isBoss: 0
onBossDead: {fileID: 11400000, guid: bac9f6f93a105804ba6fb0597e9d757c, type: 2}
sightRange: 6
sightRangeMultiplierForProjectiles: 0.8
distanceToChangePatrolDestination: 1

View File

@ -425,6 +425,7 @@ MonoBehaviour:
m_PersistentCalls:
m_Calls: []
experienceOnNPCDeath: {fileID: 7486622550161333616}
onJobCompleted: {fileID: 5840855798241641169}
inventory: {fileID: 0}
equipmentPanel: {fileID: 0}
statPanel: {fileID: 0}
@ -1127,6 +1128,7 @@ Transform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1071310030671464393}
- {fileID: 2671788726378085392}
m_Father: {fileID: 8785094005405139760}
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -1253,6 +1255,54 @@ MonoBehaviour:
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &8549638580191112313
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2671788726378085392}
- component: {fileID: 5840855798241641169}
m_Layer: 0
m_Name: OnJobCompleted
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2671788726378085392
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8549638580191112313}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 6877998912709765399}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &5840855798241641169
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8549638580191112313}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c6f7b325f93a3f9419434a3ff0e2b63d, type: 3}
m_Name:
m_EditorClassIdentifier:
Event: {fileID: 11400000, guid: ddfb03fbf14af514db49b94a6c884fe1, type: 2}
Response:
m_PersistentCalls:
m_Calls: []
--- !u!1 &8935706411944435492
GameObject:
m_ObjectHideFlags: 0

View File

@ -1,5 +1,53 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &5345406592540631924
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3695472089323496208}
- component: {fileID: 4513942030036094963}
m_Layer: 0
m_Name: ExperienceOnDeath
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3695472089323496208
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5345406592540631924}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 8063846276060961367}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &4513942030036094963
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5345406592540631924}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: bb400919c16014b449a2f32855d01515, type: 3}
m_Name:
m_EditorClassIdentifier:
Event: {fileID: 11400000, guid: 57959f6a9d7e8ab409d77bd400e80224, type: 2}
Response:
m_PersistentCalls:
m_Calls: []
--- !u!1 &8063846276060961365
GameObject:
m_ObjectHideFlags: 0
@ -33,6 +81,7 @@ Transform:
- {fileID: 8063846276545345646}
- {fileID: 8063846275999124547}
- {fileID: 8063846276807354482}
- {fileID: 3695472089323496208}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -48,12 +97,16 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 0c9da2c132958014a99ac905dbe75996, type: 3}
m_Name:
m_EditorClassIdentifier:
experienceOnDeath: {fileID: 4513942030036094963}
openning: {fileID: 8063846276545082680}
maintain: {fileID: 8063846275999589655}
closing: {fileID: 8063846276807231464}
enemyPrefabs:
- {fileID: 1857032755411982495, guid: aeee6d0093a222145bebdf8fb5ebfd18, type: 3}
- {fileID: 2024094060611992148, guid: ae6e15cb40717704f9dcca464d1617ea, type: 3}
bossPrefabs:
- {fileID: 2024094060611992148, guid: fe4472aeb3f8bbe488e0acff2135e100, type: 3}
- {fileID: 1857032755411982495, guid: d1606185087224b44a592a9db3362529, type: 3}
--- !u!114 &4798301399308187308
MonoBehaviour:
m_ObjectHideFlags: 0

View File

@ -33,6 +33,7 @@ Transform:
- {fileID: 2128458796485059912}
- {fileID: 2128458797638270265}
- {fileID: 2128458797217331559}
- {fileID: 1722853805467981190}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -48,12 +49,16 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 0c9da2c132958014a99ac905dbe75996, type: 3}
m_Name:
m_EditorClassIdentifier:
experienceOnDeath: {fileID: 2453783842184322481}
openning: {fileID: 2128458796484936370}
maintain: {fileID: 2128458797638590199}
closing: {fileID: 2128458797217557967}
enemyPrefabs:
- {fileID: 1857032755411982495, guid: aeee6d0093a222145bebdf8fb5ebfd18, type: 3}
- {fileID: 2024094060611992148, guid: ae6e15cb40717704f9dcca464d1617ea, type: 3}
bossPrefabs:
- {fileID: 2024094060611992148, guid: fe4472aeb3f8bbe488e0acff2135e100, type: 3}
- {fileID: 1857032755411982495, guid: d1606185087224b44a592a9db3362529, type: 3}
--- !u!114 &8533345581456113474
MonoBehaviour:
m_ObjectHideFlags: 0
@ -77,6 +82,54 @@ MonoBehaviour:
sceneViewId: 0
InstantiationId: 0
isRuntimeInstantiated: 0
--- !u!1 &7694215737607252039
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1722853805467981190}
- component: {fileID: 2453783842184322481}
m_Layer: 0
m_Name: ExperienceOnDeath
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1722853805467981190
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7694215737607252039}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 6562585086492496825}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &2453783842184322481
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7694215737607252039}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: bb400919c16014b449a2f32855d01515, type: 3}
m_Name:
m_EditorClassIdentifier:
Event: {fileID: 11400000, guid: 57959f6a9d7e8ab409d77bd400e80224, type: 2}
Response:
m_PersistentCalls:
m_Calls: []
--- !u!1001 &2128458796485032448
PrefabInstance:
m_ObjectHideFlags: 0

View File

@ -1,5 +1,53 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &4597221169477671425
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4181419366960787548}
- component: {fileID: 4852357875177757950}
m_Layer: 0
m_Name: ExperienceOnDeath
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4181419366960787548
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4597221169477671425}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 8587943234009667576}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &4852357875177757950
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4597221169477671425}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: bb400919c16014b449a2f32855d01515, type: 3}
m_Name:
m_EditorClassIdentifier:
Event: {fileID: 11400000, guid: 57959f6a9d7e8ab409d77bd400e80224, type: 2}
Response:
m_PersistentCalls:
m_Calls: []
--- !u!1 &8587943234009667578
GameObject:
m_ObjectHideFlags: 0
@ -33,6 +81,7 @@ Transform:
- {fileID: 3581964227030356030}
- {fileID: 3581964227521688719}
- {fileID: 3581964228063771092}
- {fileID: 4181419366960787548}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -48,12 +97,16 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 0c9da2c132958014a99ac905dbe75996, type: 3}
m_Name:
m_EditorClassIdentifier:
experienceOnDeath: {fileID: 4852357875177757950}
openning: {fileID: 3581964227030038800}
maintain: {fileID: 3581964227521330063}
closing: {fileID: 3581964228063459394}
enemyPrefabs:
- {fileID: 1857032755411982495, guid: aeee6d0093a222145bebdf8fb5ebfd18, type: 3}
- {fileID: 2024094060611992148, guid: ae6e15cb40717704f9dcca464d1617ea, type: 3}
bossPrefabs:
- {fileID: 2024094060611992148, guid: fe4472aeb3f8bbe488e0acff2135e100, type: 3}
- {fileID: 1857032755411982495, guid: d1606185087224b44a592a9db3362529, type: 3}
--- !u!114 &6507969859134159619
MonoBehaviour:
m_ObjectHideFlags: 0

View File

@ -33,6 +33,7 @@ Transform:
- {fileID: 2063187934547620031}
- {fileID: 2063187934433358143}
- {fileID: 2063187934415201509}
- {fileID: 508147898144057872}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -48,12 +49,16 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 0c9da2c132958014a99ac905dbe75996, type: 3}
m_Name:
m_EditorClassIdentifier:
experienceOnDeath: {fileID: 4934510172918101624}
openning: {fileID: 2063187934547424313}
maintain: {fileID: 2063187934433234997}
closing: {fileID: 2063187934415583615}
enemyPrefabs:
- {fileID: 1857032755411982495, guid: aeee6d0093a222145bebdf8fb5ebfd18, type: 3}
- {fileID: 2024094060611992148, guid: ae6e15cb40717704f9dcca464d1617ea, type: 3}
bossPrefabs:
- {fileID: 2024094060611992148, guid: fe4472aeb3f8bbe488e0acff2135e100, type: 3}
- {fileID: 1857032755411982495, guid: d1606185087224b44a592a9db3362529, type: 3}
--- !u!114 &8594186511192920591
MonoBehaviour:
m_ObjectHideFlags: 0
@ -77,6 +82,54 @@ MonoBehaviour:
sceneViewId: 0
InstantiationId: 0
isRuntimeInstantiated: 0
--- !u!1 &9142599949101768226
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 508147898144057872}
- component: {fileID: 4934510172918101624}
m_Layer: 0
m_Name: ExperienceOnDeath
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &508147898144057872
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9142599949101768226}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 6501750753993293556}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &4934510172918101624
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9142599949101768226}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: bb400919c16014b449a2f32855d01515, type: 3}
m_Name:
m_EditorClassIdentifier:
Event: {fileID: 11400000, guid: 57959f6a9d7e8ab409d77bd400e80224, type: 2}
Response:
m_PersistentCalls:
m_Calls: []
--- !u!1001 &2063187934415665043
PrefabInstance:
m_ObjectHideFlags: 0

View File

@ -33,6 +33,7 @@ Transform:
- {fileID: 5841939682101057499}
- {fileID: 5841939681755630427}
- {fileID: 5841939681119224341}
- {fileID: 883954934440357325}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@ -48,12 +49,16 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 0c9da2c132958014a99ac905dbe75996, type: 3}
m_Name:
m_EditorClassIdentifier:
experienceOnDeath: {fileID: 5358454695415842324}
openning: {fileID: 5841939682100988993}
maintain: {fileID: 5841939681755274367}
closing: {fileID: 5841939681118875177}
enemyPrefabs:
- {fileID: 1857032755411982495, guid: aeee6d0093a222145bebdf8fb5ebfd18, type: 3}
- {fileID: 2024094060611992148, guid: ae6e15cb40717704f9dcca464d1617ea, type: 3}
bossPrefabs:
- {fileID: 2024094060611992148, guid: fe4472aeb3f8bbe488e0acff2135e100, type: 3}
- {fileID: 1857032755411982495, guid: d1606185087224b44a592a9db3362529, type: 3}
--- !u!114 &4249137829847590172
MonoBehaviour:
m_ObjectHideFlags: 0
@ -77,6 +82,54 @@ MonoBehaviour:
sceneViewId: 0
InstantiationId: 0
isRuntimeInstantiated: 0
--- !u!1 &4727198581538363038
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 883954934440357325}
- component: {fileID: 5358454695415842324}
m_Layer: 0
m_Name: ExperienceOnDeath
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &883954934440357325
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4727198581538363038}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1696041293865748967}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &5358454695415842324
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4727198581538363038}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: bb400919c16014b449a2f32855d01515, type: 3}
m_Name:
m_EditorClassIdentifier:
Event: {fileID: 11400000, guid: 57959f6a9d7e8ab409d77bd400e80224, type: 2}
Response:
m_PersistentCalls:
m_Calls: []
--- !u!1001 &5841939681118838081
PrefabInstance:
m_ObjectHideFlags: 0

View File

@ -38,7 +38,7 @@ RenderSettings:
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_IndirectSpecularColor: {r: 0.060550563, g: 0.12122345, b: 0.12655495, a: 1}
m_IndirectSpecularColor: {r: 0.06428621, g: 0.12862533, b: 0.1343356, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:

View File

@ -14,3 +14,4 @@ MonoBehaviour:
m_EditorClassIdentifier:
zoneName: Rift Hunters' Inn
levelName: 4-RiftHuntersInn
isHostileZone: 0

View File

@ -0,0 +1,14 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 83fe5321976e21d4b96c6d7182a5b8e2, type: 3}
m_Name: OnBossDead
m_EditorClassIdentifier:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: bac9f6f93a105804ba6fb0597e9d757c
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -8,6 +8,9 @@ public class NPCController : MonoBehaviour
{
[Header("Events:")]
[SerializeField] private GameEvent_Float experienceOnDeath;
[Header("Boss-Related:")]
[SerializeField] private bool isBoss;
[SerializeField] private GameEvent onBossDead;
[Header("Settings:")]
[SerializeField] private float sightRange;
[SerializeField] private float sightRangeMultiplierForProjectiles;
@ -95,6 +98,9 @@ public class NPCController : MonoBehaviour
dropTable.DropLoot(lootDropped);
if (isBoss)
onBossDead.Raise();
if (!photonView.IsMine) return;
StartCoroutine(AnimateOnDeath());

View File

@ -19,6 +19,7 @@ public class JobManager : MonoBehaviour, IInRoomCallbacks
[SerializeField] private GameEventListener_ZoneData onGameSceneLoaded;
[SerializeField] private GameEventListener onDifficultyChanged;
[SerializeField] private GameEventListener onJoinedRoom;
[SerializeField] private GameEventListener onBossDead;
[Header("Runtime Data:")]
public bool JobActive = false;
@ -77,6 +78,7 @@ public class JobManager : MonoBehaviour, IInRoomCallbacks
onGameSceneLoaded.Response.AddListener(HandleGameSceneChanged);
onDifficultyChanged.Response.AddListener(UpdateAvailableJobsRewardsOnDifficultyChanged);
onJoinedRoom.Response.AddListener(GenerateJobs);
onBossDead.Response.AddListener(CompleteCurrentJob);
}
public void UpdateJobSelection(JobInstance jobInstance)
@ -100,13 +102,18 @@ public class JobManager : MonoBehaviour, IInRoomCallbacks
{
if (!JobActive) return;
if (currentlySelectedJob.isHostileZone)
{
availableJobs.Remove(currentlySelectedJob);
onJobCompleted.Raise(currentlySelectedJob);
onAvailableJobsUpdated.Raise();
}
if (!currentlySelectedJob.isHostileZone) return;
onJobCompleted.Raise(currentlySelectedJob);
JobActive = false;
currentlySelectedJob.completed = true;
if (!PhotonNetwork.IsMasterClient) return;
UpdatePropertiesWithJobs();
onAvailableJobsUpdated.Raise();
}
public JobInstance GenerateJobInstance(ZoneData respectiveZone)
@ -141,14 +148,27 @@ public class JobManager : MonoBehaviour, IInRoomCallbacks
{
availableJobs.Add(GenerateJobInstance(zones[i]));
}
UpdatePropertiesWithJobs();
onAvailableJobsUpdated.Raise();
}
private void UpdatePropertiesWithJobs()
{
if (availableJobs.TrueForAll(job => (job.isHostileZone && job.completed) || !job.isHostileZone))
{
availableJobs.Clear();
Debug.Log("Jobs: Refreshing job state on all completed");
GenerateJobs();
}
AvailableJobs jobs = new AvailableJobs();
jobs.availableJobs = availableJobs;
availableJobsJson = JsonUtility.ToJson(jobs);
Debug.Log("Room Property jobs: " + availableJobsJson);
ExitGames.Client.Photon.Hashtable ht = new ExitGames.Client.Photon.Hashtable { { GameConstants.NetworkPropertyKeys.AvailableJobsKey, availableJobsJson } };
PhotonNetwork.CurrentRoom.SetCustomProperties(ht);
onAvailableJobsUpdated.Raise();
}
private void TryGetAvailableJobsFromRoomProperties()

View File

@ -94,7 +94,7 @@ public class NetworkManager : MonoBehaviourPunCallbacks, IOnEventCallback
{
ClearVotes();
StartCoroutine(SpawnCharacterWithDelay());
if (PhotonNetwork.LocalPlayer.IsMasterClient && zoneData.levelName != huntersInn)
if (PhotonNetwork.LocalPlayer.IsMasterClient && zoneData.isHostileZone)
StartCoroutine(SpawnEnemiesWithDelay());
}
@ -162,8 +162,9 @@ public class NetworkManager : MonoBehaviourPunCallbacks, IOnEventCallback
{
{ 0, Random.Range(2, 6) },
{ 1, Random.Range(2, 6) }
}
});
},
bossIndex = Random.Range(0, 2)
}); ;
}
public override void OnPlayerEnteredRoom(Player newPlayer)

View File

@ -9,6 +9,7 @@ public class CoinBag : MonoBehaviour
[SerializeField] private TMP_Text coinText;
[SerializeField] private GameEventListener_Int onCoinDrop;
[SerializeField] private GameEventListener onJoinedRoom;
[SerializeField] private GameEventListener_JobInstance onJobCompleted;
public int currentCoin;
@ -20,6 +21,8 @@ public class CoinBag : MonoBehaviour
onJoinedRoom.Response.AddListener(LoadCoins);
onJobCompleted.Response.AddListener(job => ChangeAmount(job.coinReward));
UpdateCoinText();
}

View File

@ -6,6 +6,8 @@ using UnityEngine;
public class Rift : MonoBehaviour, IPunObservable
{
[Header("Listeners:")]
[SerializeField] private GameEventListener_Float experienceOnDeath;
[Header("Visual Components:")]
[SerializeField] private GameObject openning;
[SerializeField] private GameObject maintain;
@ -13,9 +15,13 @@ public class Rift : MonoBehaviour, IPunObservable
[Header("Enemies:")]
[SerializeField] private List<GameObject> enemyPrefabs = new List<GameObject>();
[Header("Boss Prefabs:")]
[SerializeField] private List<GameObject> bossPrefabs = new List<GameObject>();
private Dictionary<int, int> enemyType_Quantity;
PhotonView photonView;
WaitForSeconds delayBetweenSpawns = new WaitForSeconds(0.3f);
WaitForSeconds delayToClose = new WaitForSeconds(1f);
@ -25,9 +31,22 @@ public class Rift : MonoBehaviour, IPunObservable
RiftSettings settings;
int totalEnemiesSpawned;
bool bossSpawned = false;
private void Awake()
{
photonView = GetComponent<PhotonView>();
experienceOnDeath.Response.AddListener((x) => CountTowardsBossSpawn());
}
public void InitializeRift(RiftSettings settings)
{
this.settings = settings;
totalEnemiesSpawned = 0;
bossSpawned = false;
enemyType_Quantity = settings.enemyIndexes_Quantity.ToDictionary(entry => entry.Key, entry => entry.Value);
Debug.Log("Total Types of enemies: " + enemyType_Quantity.Keys.Count);
unitDifficultySettings = GameDifficultyController.Instance.GetCurrentDifficultySettings();
@ -56,6 +75,7 @@ public class Rift : MonoBehaviour, IPunObservable
unitDifficultySetter = spawnedEnemy.GetComponentInChildren<UnitDifficultySetter>(true);
unitDifficultySetter.InitializeUnitDifficulty(unitDifficultySettings);
totalEnemiesSpawned++;
yield return delayBetweenSpawns;
}
}
@ -66,11 +86,52 @@ public class Rift : MonoBehaviour, IPunObservable
SetVisual(-1);
//yield return delayBetweenSpawns;
//DestroyAfterSpawn();
}
IEnumerator SpawnBoss()
{
UpdateScaleForBossSpawn();
SetVisual(0);
yield return new WaitForSeconds(0.8f);
SetVisual(1);
spawnedEnemy = PhotonNetwork.Instantiate("Bosses/" + bossPrefabs[settings.bossIndex].name, this.transform.position, this.transform.rotation);
unitDifficultySetter = spawnedEnemy.GetComponentInChildren<UnitDifficultySetter>(true);
unitDifficultySetter.InitializeUnitDifficulty(unitDifficultySettings);
yield return delayBetweenSpawns;
SetVisual(2);
yield return delayToClose;
SetVisual(-1);
yield return delayBetweenSpawns;
DestroyAfterSpawn();
}
private void CountTowardsBossSpawn()
{
if (!PhotonNetwork.IsMasterClient) return;
totalEnemiesSpawned--;
if (totalEnemiesSpawned > 0) return;
if (bossSpawned) return;
bossSpawned = true;
StartCoroutine(SpawnBoss());
}
private void DestroyAfterSpawn()
{
if (PhotonNetwork.LocalPlayer.IsMasterClient)
@ -106,6 +167,21 @@ public class Rift : MonoBehaviour, IPunObservable
break;
}
}
private void UpdateScaleForBossSpawn()
{
openning.transform.localScale = Vector3.one * 2f;
maintain.transform.localScale = Vector3.one * 2f;
closing.transform.localScale = Vector3.one * 2f;
photonView.RPC(nameof(RPC_ScaleForBoss), RpcTarget.Others);
}
private void RPC_ScaleForBoss()
{
openning.transform.localScale = Vector3.one * 2f;
maintain.transform.localScale = Vector3.one * 2f;
closing.transform.localScale = Vector3.one * 2f;
}
public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
{

View File

@ -38,5 +38,6 @@ public class RiftSettings
{
public int riftIndex;
public Dictionary<int,int> enemyIndexes_Quantity;
public int bossIndex;
public Vector3 position;
}

View File

@ -20,6 +20,8 @@ public class JobInstance
public float experienceReward;
public float reputationReward;
public bool completed;
public void SetupJobDescription(string title, string description, bool showJobTitlePrefix)
{
this.title = title;
@ -63,5 +65,6 @@ public class JobInstance
this.levelName = jobTemplate.levelName;
this.isHostileZone = jobTemplate.isHostileZone;
completed = false;
}
}

View File

@ -70,7 +70,6 @@ public class WorldJobsListingUIController : MonoBehaviour
foreach (JobListingButton button in zoneButtons)
{
if (button.GetZoneData() == null) continue;
if (!button.GetZoneData().isHostileZone) continue;
button.UpdateJobData(JobManager.Instance.availableJobs.Find(job => job.zoneName == button.GetZoneData().zoneName));
}

View File

@ -94,7 +94,7 @@ Material:
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _Rotation: 5.833836
- _Rotation: 10.869601
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1

File diff suppressed because one or more lines are too long

View File

@ -134,7 +134,7 @@ PlayerSettings:
16:10: 1
16:9: 1
Others: 1
bundleVersion: 0.7.0
bundleVersion: 0.7.1
preloadedAssets: []
metroInputSource: 0
wsaTransparentSwapchain: 0