Old School Ops

RF455-070 RF 4.55 : Chip War, a race can destroy its own Control Chip and is announced as the winner

Game server RF Online: Dragonborn v0.3.1 low · filed by cybercyber
Fixed

Game: RF 4.55 (Dragonborn), server v0.3.1, Windows build (stock gameserver.exe, SHA-256 c10012f3…f699a). Client: the supported Taiwan build, RF_Online.bin SHA-256 46528aac…2bbc558 (2025-07-16), Language=Taiwan.

Summary

In the chip war each race guards its own Control Chip (holy stone) and tries to destroy another race's. The server lets players hit their own race's stone, and the player who lands the last hit becomes the holy master even when the stone is their own. The race is announced as the winner (19/0B) and gets the keeper phase. SetResult then sees winner == loser and records chaos, so no buffs are given.

1. A stone takes damage from anyone (read)

  • The stones are ordinary monsters on map 2 (04B00, 04B01, 04B02 for race 0, 1, 2; chipWarSpawn 0x1407bc100).
  • A hit goes handleAttack 0x1407d3440 → attackTarget 0x1407d4040 → engageMonsterFrom 0x1408b03c0 (setAggro, then the 0B/99 broadcast) → (*monster).takeDamage 0x1407d6000. Skills, forces, splash, towers, traps and units reach takeDamage the same way (8 callers).
  • None of these compares the attacker's race with the stone's race.
  • chipWarSyncStoneLocked 0x1407bf060 turns the stone's HP drop into war damage (damageStone 0x1407b5620).

2. The destroyer's race isn't checked (read)

  • The destroyer is the stone monster's aggro target (character serial at monster +0x200), looked up in the online roster.
  • checkHolyMasterLocked 0x1407b4460 is entered with bl = the stone index and [rsp+0x34c] = the destroyer's race. It checks only that the scene is 1 and there is no master yet (0x1407b4485–0x1407b44a0). It then stores the destroyer's race as the holy master ([cw+0xe0], 0x1407b44ae), sends 19/0B with that race (0x1407b500f), and moves to scene 2.
  • raceBuff.SetResult 0x1409061e0: cmp cl, bl; je → the chaos branch (0x140906290 clears the result).

Expected

A race can't damage, or at least can't destroy, its own Control Chip (the stone is friendly to its race). A destroyer of their own race's stone never becomes the holy master.

Suggested fix

  • In the attack paths, refuse damage to a holy stone whose race equals the attacker's race (as for any friendly target).
  • At least: in checkHolyMasterLocked, ignore a destroyer whose race equals the stone index.

How to reproduce in game

  1. Wait for a chip war battle (or start one), and go to your own race's stone in Crag Mine.
  2. Attack it until it breaks (it has 100M HP, so this needs time or a GM damage boost).
  3. 19/0B names your race as the holy master, and the keeper phase follows for your race. The server log then shows chip war race buff result {"chaos": true}.

What I do locally (not a fix)

A server patch (chipwar-own-stone): at 0x1407b449a a cave also takes the existing reject path (0x1407b4869) when [rsp+0x34c] == bl. The stone is still destroyed, but nobody wins from it.

Reported on version 0.3.1

Replies 1

OSO AI Staff
18h ago

Reported: In the chip war a race can damage and destroy its own Control Chip, and its destroyer is then announced as the holy master.

Found: As described. Nothing on the damage path compared the attacker's race with the chip's. On the original server the chip refuses all damage from its own race, so a race can never break its own chip.

Fix: in the next RF 4.55 update, a Control Chip takes no damage from its own race. This covers normal attacks, skills, forces, area damage, siege kits, units, guard towers and traps. If a chip is ever destroyed by a player of its own race, nobody becomes holy master.

Also affected: the same fix is in RF Golden Age, RF 4.15 and RF 1.5.

Sign in to comment.

Top xp sources

How xp works
Loading…

Open the full search page