___________________________________________________________________________________________________________________________
This mod enhances the Help Wanted board in front of the Seed Shop.
Its main functionality is to replace the single "quest of the day" with a list of quest notes stuck to the billboard.
Other features include:
Relative quest type chances are relative to each other. Slay monster quests are only available if one has unlocked the mine and played for at least 6 days.
Max number of quests per day is limited by the number of notes that can fit on the board within the configurable overlap parameters.
Custom Quest Notes
To replace the default notepad icon and / or pin (drawn by Lumisteria) target the following paths using Content Patcher:
aedenthorn.HelpWanted/pad
aedenthorn.HelpWanted/pin
An example of a mod that does this is (CP) Help Wanted Pad and Pin Retexture.
Specific Quest Notes
You can also make icons specific to npcs, quest types, or even quest types per NPC by targeting subpaths as follows:
aedenthorn.HelpWanted/pad/NPCNAME
[b]aedenthorn.HelpWanted/pad/QUESTTYPE
[b]aedenthorn.HelpWanted/pad/NPCNAME[b][b]/QUESTTYPE[/b][/b]
[/b]
aedenthorn.HelpWanted/pin/NPCNAME
[b]aedenthorn.HelpWanted/p[b][b]in[/b]/QUESTTYPE[/b]
[b]aedenthorn.HelpWanted/p[b][b]in[/b]/NPCNAME[b]/QUESTTYPE[/b][/b]
[/b][/b]
[/b]Replace NPCNAME with the codename of the NPC, e.g.
aedenthorn.HelpWanted/pad/Emily
Replace QUESTTYPE with the quest type, e.g.
[b]aedenthorn.HelpWanted/pad/ItemDelivery
[/b]Valid quest types are:
Random Quest Notes
Any of the above paths can be used to provide multiple textures to be chosen at random, by adding a suffix /NUMBER, e.g.:
aedenthorn.HelpWanted/pad/1
[b]aedenthorn.HelpWanted/pad/2
...[/b]
aedenthorn.HelpWanted/pin/Emily/ItemDelivery/1
[b]aedenthorn.HelpWanted/pin/Emily/[b]ItemDelivery/2
[/b]...
[/b]etc.
Numbers must be sequential, starting at 1.
Adding Quests
Quests can be added using either Content Patcher or C#
Content Patcher
To add quests using Content Patcher, you can simply input the quest details as follows:
{ <br /> "Action": "EditData", <br /> "Target": "aedenthorn.HelpWanted/dictionary", <br /> "Entries": { <br /> "aedenthorn.TestQuest": { <br /> "percentChance": 100, <br /> "quest": { <br /> "questType": "ItemDelivery", <br /> "target": "Krobus", <br /> "item": "Gold Bar", <br /> "number": 1, <br /> "questDescription": "Gib Gold Bar, Krobus", <br /> "targetMessage": "Tanks bigly.", <br /> "currentObjective": "Give Gold Bar to Krobus." <br /> } <br /> } <br /> } <br /> },
If percentChance is omitted (or set to 100), the quest will show up every day. You can use Content Patcher When conditions to further choose when the quest will be added to the dictionary.
questType can be any of the following:
You can add questTitle to give your quest a custom title.
You can customize the quest board visuals using the complete set of fields, which you can see on GitHub.
SMAPI C#
To add a quest with C#, use SMAPI's mod api system. You will need to create a class that implements the following interface:
public interface IQuestData <br /> { <br /> public Texture2D padTexture { get; set; } <br /> public Rectangle padTextureSource { get; set; } <br /> public Color padColor { get; set; } <br /> public Texture2D pinTexture { get; set; } <br /> public Rectangle pinTextureSource { get; set; } <br /> public Color pinColor { get; set; } <br /> public Texture2D icon { get; set; } <br /> public Rectangle iconSource { get; set; } <br /> public Color iconColor { get; set; } <br /> public float iconScale { get; set; } <br /> public Point iconOffset { get; set; } <br /> public Quest quest { get; set; } <br /> }
You then pass an instance of this class to the API using another interface:
public interface IHelpWantedAPI <br /> { <br /> public void AddQuestToday(IQuestData data); <br /> }
This should be done in Helper.Events.GameLoop.DayStarted.
Here's an example:
public override void Entry(IModHelper helper) <br /> { <br /> Helper.Events.GameLoop.DayStarted += GameLoop_DayStarted; <br /> } <br /> private void GameLoop_DayStarted(object sender, StardewModdingAPI.Events.DayStartedEventArgs e) <br /> { <br /> var api = Helper.ModRegistry.GetApi("aedenthorn.HelpWanted"); <br /> if (api != null) <br /> { <br /> var d = new MyQuestData() <br /> { <br /> pinTextureSource = new Rectangle(0, 0, 64, 64), <br /> padTextureSource = new Rectangle(0, 0, 64, 64), <br /> pinTexture = pinTexture, <br /> padTexture = padTexture, <br /> pinColor = Color.Black, <br /> padColor = Color.Gray, <br /> icon = Game1.getCharacterFromName("Krobus").Portrait, <br /> iconSource = new Rectangle(0, 0, 64, 64), <br /> iconColor = new Color(150, 150, 150, 150), <br /> iconScale = 1, <br /> iconOffset = new Point(32, 64), <br /> quest = new ItemDeliveryQuest() <br /> }; <br /> (d.quest as ItemDeliveryQuest).target.Value = "Krobus"; <br /> (d.quest as ItemDeliveryQuest).item.Value = 305; <br /> (d.quest as ItemDeliveryQuest).targetMessage = "I can haz void egg? Tanks lots."; <br /> d.quest.currentObjective = "Gib Krobus void egg."; <br /> d.quest.questDescription = "Pls gib."; <br /> api.AddQuestToday(d); <br /> } <br /> } <br />
Credits
Thanks to Lumisteria for the unprompted kindness of making the pad / pin icon.
Config
You can customize this mod by editing the config file or using Generic Mod Config Menu.
Technical
Requires SMAPI.
Implements a Generic Mod Config Menu interface to change config settings in-game.
Compatible with Mod Updater for automatic updates.
Code is at
If you want to complain or ask for help or help me test my mods, you can visit my Discord server.
A list of all my mods for Stardew Valley is available at:
About Project
Created: September 1st 2023
Updated: September 1st 2023
Project ID: 71343
License: All Rights Reserved
__________________________________________
Game Versions:
1.01.03
1.01.03
1.01.03
1.01.03
1.01.03
__________________________________________
Flavors:
WoW Retail
__________________________________________
Categories
Companions
Battle
__________________________________________
Main File
September 1st 2023
__________________________________________
Recent File
September 1st 2023
__________________________________________
Members
__________________________________________
Report