Skip to content

Fix: Small Fixes for June#1091

Open
RyanYappert wants to merge 15 commits into
sebastian-heinz:developfrom
RyanYappert:fix/small-fixes-06-26
Open

Fix: Small Fixes for June#1091
RyanYappert wants to merge 15 commits into
sebastian-heinz:developfrom
RyanYappert:fix/small-fixes-06-26

Conversation

@RyanYappert

Copy link
Copy Markdown
Collaborator

Only a few days late to push this.

Public Things

  • Fix LightQuestRepeatsPerDay so it actually works now.
  • Fix BBM inventory swaps mangling sort orders for certain storages.
  • Fix herb gathering achievements not progressing.
  • Don't auto-force the chat bubble character at the start of shortcut communications if that shortcut would be a slash command.
  • Fix issue with S1 Blood Orb tree that wasn't properly crediting the final support pawn hiring slot; this was blocking an achievement.
  • Add a guard when attempting to give a gift to a pawn that you've already gifted today.
  • Implement the Main Pawn Loss Rate Reduction ability from the S1 Blood Orb Tree. This is an approximately 40% chance to avoid your pawn going to the void if they would normally be lost.

Boring Dev Things

  • Fix auto-promotion for local hosts running in Debug to promote to Admin instead of GameMaster.
  • Fix a misnamed handler QuestGetLightQuestListHandler and misnamed logger in ClientErrorCodeAssetDeserializer.
  • Extend ScheduledTask so that you can provide a task name instead of relying on the string representation of the TaskType enum. Helpful for /schedule when scripting is used to invoke a TaskType that doesn't exist in the enum.
  • Fix bad defaults for URLs that drive things like the menu banners.
  • Move S1 Blood Orb mechanism over to the pattern used for S2/S3 trees. This effectively deprecates the ddon_orb_gain_extend_param, which will be removed in a later migration.
  • Suppress complaints about questScheduleId 0 until I figure out what's causing them because they're filling logs with chaff.
  • Expose some of the math in the PartnerPawn affection system so that other systems can see it more transparently.
  • Fix an edge case where hidden recipes could be sent to the client if they were associated with achievements redeemed inside the craft room.

Checklist:

  • The project compiles
  • The PR targets develop branch

obj.MainPawnSlot += (ushort)upgrade.Amount;
// When the player unlocks this, the total number will be increased to 3.
client.Character.MyPawnSlotNum += (byte)upgrade.Amount;
_Server.Database.UpdateMyPawnSlot(client.Character.CharacterId, client.Character.MyPawnSlotNum, connectionIn);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are these database updates removed?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because it's no longer driven from that database table, and interpreted from the collected unlocks when the Dragon Force Upgrades are loaded in. The whole table is defunct and I should just migrate it away in this update, but I didn't want to do a migration cause I'm lazy.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why didn't you drop this table then in a migration if it is not used?

Comment thread Arrowgene.Ddon.GameServer/Characters/OrbUnlockManager.cs
// Checking for two cases:
// 1) Player has completed A Servant's Pledge.
// 2) Player has done the pawn creation step of A Servant's Pledge but somehow not finished the quest.
if (character is Character arisen

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this here?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because your orb gain stats are no longer driven from ddon_orb_gain_extend_param, so the only record of the base 2 pawn slots is in your quest completion status.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make a migration to remove the table then. Don't leave it hanging around.

Comment thread Arrowgene.Ddon.GameServer/Chat/Command/ChatCommandHandler.cs Outdated
Comment thread Arrowgene.Ddon.GameServer/Handler/ConnectionLoginHandler.cs
}

uint stageNo = StageManager.ConvertIdToStageNo(request.LayoutId.AsStageLayoutId());
if (Server.AssetRepository.GatheringSpotInfoAsset.GatheringInfoMap.TryGetValue(stageNo, out var spots)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there not a better way to do this? This looks awful.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You could adjust the GatheringInfoAsset to make it less awful, but I don't think it's too bad. It's a nested dictionary, it's gonna be messy to check safely. If you change it too much you're gonna break scripts because it's exposed to default_gathering.csx.

…uestGetLightQuestListHandler having an improper class name and using the wrong setting to limit quest repeats.
…sk type provided isn't in the usual TaskType enum (so arbitrary tasks can be defined in scripting alone without extending the enum)
…sage sets if it would be a chat command starting with /.
… unlocked nodes and computing the cumulative status dynamically from the unlocks, rather than tracking the cumulant from the DB alone. Fix issue where the final node of the 4th page was the wrong type, preventing completion of an achievement.
… a pawn to the void. At the current values in the tree, this is 41% at max rate.
…sed to chat command /affection. Add /wallet to show hidden wallet values.
@RyanYappert RyanYappert force-pushed the fix/small-fixes-06-26 branch from 22a0e65 to 442024a Compare July 5, 2026 03:09
// 2) Player has done the pawn creation step of A Servant's Pledge but somehow not finished the quest.
if (character is Character arisen
&& (arisen.CompletedQuests.ContainsKey(Shared.Model.Quest.QuestId.AServantsPledge)
//|| (client.QuestState.IsQuestAccepted(QuestManager.GetScheduleId(_Server, Shared.Model.Quest.QuestId.AServantsPledge, 0))

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Delete this commented code if it is not used.

}

return Category.None;
GroupNo.Group1 => Category.Vitality,

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure why you need to keep updating the readable switch statements into this c# mess.

@RyanYappert RyanYappert Jul 6, 2026

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because we're writing in C# and switch expressions are idiomatic and, in my opinion, more readable and concise than switch statements (for some subset of situations, including simple mapping of TypeA to TypeB)?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No

private static readonly double ScaleFactor = 14.4;
public static readonly uint MaxLevel = 25;

public uint CalculateLikabilityXP()

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should probably expose this to scripting at some point because most people won't like this harsh algo derived from old comments I am sure.

// Checking for two cases:
// 1) Player has completed A Servant's Pledge.
// 2) Player has done the pawn creation step of A Servant's Pledge but somehow not finished the quest.
if (character is Character arisen

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make a migration to remove the table then. Don't leave it hanging around.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants