private void OnDispenserGather(ResourceDispenser dispenser, BaseEntity entity, Item item) { if (!entity.ToPlayer()) { return; } var gatherType = dispenser.gatherType.ToString("G"); var amount = item.amount; if (GatherResourceModifiers.ContainsKey(item.info.displayName.english)) { item.amount = (int)(item.amount * GatherResourceModifiers[item.info.displayName.english]); } else if (GatherResourceModifiers.ContainsKey("*")) { item.amount = (int)(item.amount * GatherResourceModifiers["*"]); } if (!GatherDispenserModifiers.ContainsKey(gatherType)) { return; } var dispenserModifier = GatherDispenserModifiers[gatherType]; dispenser.containedItems.Single(x => x.itemid == item.info.itemid).amount += amount - item.amount / dispenserModifier; if (dispenser.containedItems.Single(x => x.itemid == item.info.itemid).amount < 0) { item.amount += (int)dispenser.containedItems.Single(x => x.itemid == item.info.itemid).amount; } }
private void OnGrowableGathered(GrowableEntity growable, Item item, BasePlayer player) { float modifier; if (GatherDispenserModifiers.TryGetValue(item.info.displayName.english, out modifier)) { item.amount = (int)(item.amount * modifier); } else if (GatherDispenserModifiers.TryGetValue("*", out modifier)) { item.amount = (int)(item.amount * modifier); } }
private void OnCropGather(PlantEntity plant, Item item) { float modifier; if (GatherDispenserModifiers.TryGetValue(item.info.displayName.english, out modifier)) { item.amount = (int)(item.amount * modifier); } else if (GatherDispenserModifiers.TryGetValue("*", out modifier)) { item.amount = (int)(item.amount * modifier); } }
private void DispenserRate(ConsoleSystem.Arg arg) { if (arg.Player() != null && !arg.Player().IsAdmin) { arg.ReplyWith(NotAllowed); return; } if (!arg.HasArgs(2)) { arg.ReplyWith(InvalidArgumentsDispenser); return; } if (!validDispensers.ContainsKey(arg.GetString(0).ToLower())) { arg.ReplyWith(string.Format(InvalidDispenser, arg.GetString(0))); return; } var dispenser = validDispensers[arg.GetString(0).ToLower()].ToString("G"); var modifier = arg.GetFloat(1, -1); if (modifier < 0) { arg.ReplyWith(InvalidModifier); return; } if (GatherDispenserModifiers.ContainsKey(dispenser)) { GatherDispenserModifiers[dispenser] = modifier; } else { GatherDispenserModifiers.Add(dispenser, modifier); } SetConfigValue("Options", "GatherDispenserModifiers", GatherDispenserModifiers); arg.ReplyWith(string.Format(ModifyDispenser, dispenser, modifier)); }