diff --git a/Campofinale/Game/Entities/EntityInteractive.cs b/Campofinale/Game/Entities/EntityInteractive.cs index 2a633d8..467a736 100644 --- a/Campofinale/Game/Entities/EntityInteractive.cs +++ b/Campofinale/Game/Entities/EntityInteractive.cs @@ -171,6 +171,26 @@ namespace Campofinale.Game.Entities }else if(eventName == "pick_inst") { //TODO + }else if(eventName == "set_state_true") + { + ScSceneUpdateInteractiveProperty update = new() + { + Id = guid, + SceneNumId = GetOwner().curSceneNumId, + Properties = + { + {1, new DynamicParameter() + { + RealType=3, + ValueType=3, + ValueIntList={1} + } } + } + }; + GetOwner().sceneManager.KillEntity(guid, true, 1); + GetOwner().noSpawnAnymore.Add(guid); + GetOwner().sceneManager.GetScene(sceneNumId).AddCollection(templateId, 1); + GetOwner().Send(ScMsgId.ScSceneUpdateInteractiveProperty, update); } return false; } diff --git a/Campofinale/Packets/Cs/HandleCsSceneInteractSpInteractive.cs b/Campofinale/Packets/Cs/HandleCsSceneInteractSpInteractive.cs index 29effb9..96c8c3a 100644 --- a/Campofinale/Packets/Cs/HandleCsSceneInteractSpInteractive.cs +++ b/Campofinale/Packets/Cs/HandleCsSceneInteractSpInteractive.cs @@ -3,6 +3,7 @@ using Campofinale.Network; using Campofinale.Packets.Sc; using Campofinale.Protocol; using Campofinale.Resource; +using System; using static Campofinale.Resource.ResourceManager; namespace Campofinale.Packets.Cs @@ -23,6 +24,18 @@ namespace Campofinale.Packets.Cs case SpInteractiveOpType.CommonActive: session.bitsetManager.AddValue(Resource.BitsetType.InteractiveActive, ResourceManager.levelShortIdTable[scene.id].ids[(long)entity.guid]); break; + case SpInteractiveOpType.DoodadCommonPick: + EntityInteractive interactive = entity as EntityInteractive; + if (interactive.templateId== "int_doodad_flower_2") + { + session.inventoryManager.AddRewards("reward_doodad_moss_3", interactive.Position, 1); + } + if (interactive.templateId == "int_doodad_flower_1") + { + session.inventoryManager.AddRewards("reward_doodad_moss_3", interactive.Position, 1); + } + session.sceneManager.KillEntity(interactive.guid, true, 1); + break; default: break; } diff --git a/Campofinale/Program.cs b/Campofinale/Program.cs index 00b5597..2b76464 100644 --- a/Campofinale/Program.cs +++ b/Campofinale/Program.cs @@ -13,7 +13,7 @@ class Program static void Main(string[] args) { StartServer(args); - //FakeClientTester(); + // FakeClientTester(); } public static byte[] ConcatenateByteArrays(byte[] array1, byte[] array2) {