Biohazard - #1260
Open
Ebp90 wants to merge 6 commits into
Open
Conversation
Braindeath Island content and the full quest script: Captain Braindeath, Captain Donnie, Luke, Davey, the brewers, zombie swabs and protesters, fever spiders and the Evil Spirit, plus Pirate Pete starting the quest in Port Phasmatys. Supporting changes: - Blindweed farming patch - varbit, produce entry, patch registration and its objs config. Patches with no Rake option can now be raked by using a rake on them, a crop planted into an already clear patch starts the growth timer, and fully overgrown weeds stop at stage 3 instead of wrapping back to clear. - Leash movement mode - follows a target only while both stay within range of the npc's spawn tile and loses interest otherwise. Follow teleports an npc that falls behind or changes level, which let protesters trail a player across the world. - zombie_swab hunt mode so swab aggression can be judged per player. - questprep/questreset admin commands and the req_item_ids quest param they read. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K22iXYZjnQnTr3ZUtbuGBG
Clearing a hint arrow could take the client down. HINT_ARROW is a fixed
twelve byte packet, but the encoder wrote the payload only when a sprite was
given, so a clear sent two bytes and the client read the packets behind it as
the rest of that one. Every branch now fills the packet, matching what the
client expects for a type 0 hint.
Player.hint picked its slot with firstOrNull { it == 0 }, which returns the
matched element rather than its position - so every arrow went into slot zero,
the other seven were never used, and clearing by index cleared whatever
happened to be there. It now uses indexOfFirst, and reuses the first slot
rather than dropping the arrow when all eight are taken.
Slots are only handed back explicitly and most content never did, so an arrow
on an npc that died or timed out cost that player a slot for the rest of the
session. NPC.markHint records the slot on the npc and NPCHints releases it when
the npc despawns, which covers dying; barrows brothers, the Ghosts Ahoy
lobster, dungeoneering marks and the Rum Deal Evil Spirit all mark through it.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K22iXYZjnQnTr3ZUtbuGBG
Full quest from Vanstrom's request in the Canifis tavern through to the escape back up into Canifis: the boat negotiation with Cyreg, the rope bridge repaired a rung at a time, Curpile Fyod's questions, meeting the Myreque, and Vanstrom's ambush of the hideout. Quest stages are referenced by the names declared in the quest's varp rather than by their numbers, via a new questStage(quest, stage) lookup. DynamicZones gains a zone-block copy so a cutscene can be staged in a copy of a few rooms rather than a whole region, and questprep/questreset learn "id:amount" requirements and a reset_vars list for the flags this quest keeps under the client's own varbit names. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01K22iXYZjnQnTr3ZUtbuGBG
# Conflicts: # game/src/main/kotlin/content/quest/Quest.kt
Ports Biohazard: Elena's distillator, Jerico's pigeons and the watchtower
distraction, the rope ladder over the wall, the mourners' poisoned stew and
headquarters, the errand boys, Guidor's test and King Lathas' confession,
plus the Combat Training Camp the quest unlocks.
The mourners lose the drop table that handed out a full outfit every kill and
gain combat definitions of their own, taken from npc 370 in RuneScape-2011;
mourner_2 drops the quarters key while the stew has them laid up, and all
seven respawn.
Shared code touched along the way:
- Gate.replaceTogether, a fixed twin of Gate.replace, which walks the second
half off the first half's new tile and turns both halves the same way. The
original is left alone so the gates built around its placement don't move.
- Teleport.takeOff and teleportLand accept "*" and run every registered
handler. Ghosts Ahoy's teleportTakeOff("*") was dead, and PirateTreasure
and LostAndFound both registered teleportLand("modern"), so one silently
overwrote the other.
- questprep gained prep_vars, for world state a prerequisite quest leaves
behind that marking it complete doesn't reproduce.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WQ1FECKKC3ZpsGK3hNVVnh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add the biohazard quest.
Plague sample removal needs to be checked.
Added a double gate method for automatic telewalk double gates.