private void RewardImpl(QuestReward reward) { switch (reward.Type) { case QuestRewardType.credits: { GetComponent <MmoActor>()?.ActionExecutor?._AddCredits(reward.Count); } break; case QuestRewardType.exp: { GetComponent <PlayerCharacterObject>()?.AddExp(reward.Count); } break; case QuestRewardType.nebula_credits: { GetComponent <MmoActor>()?.ActionExecutor?.AddNebulaCredits(reward.Count); } break; case QuestRewardType.item: { InventoryItemQuestReward itemQuestReward = reward as InventoryItemQuestReward; if (itemQuestReward != null) { RewardItemImpl(itemQuestReward); } } break; } }
private void RewardItemImpl(InventoryItemQuestReward reward) { ServerInventoryItem targetItem = null; switch (reward.ObjectType) { case InventoryObjectType.Material: { MaterialItemQuestReward materialReward = reward as MaterialItemQuestReward; if (materialReward != null) { MaterialObject material = new MaterialObject(materialReward.OreId); targetItem = new ServerInventoryItem(material, materialReward.Count); } } break; case InventoryObjectType.Scheme: { SchemeItemQuestReward schemeReward = reward as SchemeItemQuestReward; if (schemeReward != null) { SchemeObject scheme = new SchemeObject(new SchemeObject.SchemeInitData( id: Guid.NewGuid().ToString(), name: string.Empty, level: PlayerLevel, workshop: PlayerWorkshop, templateModuleId: resource.ModuleTemplates.Module(PlayerWorkshop, schemeReward.Slot).Id, color: schemeReward.Color, craftingMaterials: new Dictionary <string, int>(), inSetID: string.Empty )); targetItem = new ServerInventoryItem(scheme, schemeReward.Count); } } break; case InventoryObjectType.Weapon: { WeaponItemQuestReward weaponReward = reward as WeaponItemQuestReward; if (weaponReward != null) { WeaponDropper.WeaponDropParams weaponDropParams = new WeaponDropper.WeaponDropParams( resource: resource, level: PlayerLevel, workshop: PlayerWorkshop, damageType: WeaponDamageType.damage, difficulty: Difficulty.none ); ColorInfo colorInfo = resource.ColorRes.Color(ColoredObjectType.Weapon, weaponReward.Color); DropManager dropManager = DropManager.Get(resource); WeaponDropper weaponDropper = dropManager.GetWeaponDropper(dropParams: weaponDropParams); WeaponObject weapon = weaponDropper.DropWeapon(colorInfo); targetItem = new ServerInventoryItem(weapon, weaponReward.Count); } } break; } if (targetItem != null) { GetComponent <MmoActor>()?.AddToStationInventory(item: targetItem, sendUpdateEvent: true); } }