New Content CyberRealm keycode - 2025 item of the year

A trivial update from last night:
January 13 - There is now an option to "Disable cyber combat (green on black)" in the combat tab of the options screen if you have accessibility needs or lack terminal nostalgia.
 
Yeah. That's a result of a chat I had with cannonfire40, who raised the issue in /dev.

My KoLmafia settings came 4 days earlier - and allowed me to actually play the new content, as opposed to being literally unable to read it. :)
 
Could have a vise command to destroy more than one at a time, eg vise 11 cyburger
That's how I'm doing it. This is essentially coded - except I disabled the actual call to choice.php so I could debug the interaction between the command and the request class.

From the PR:

Code:
> vise

[count] <item> [, <another>]... - use your hashing vise to smash schematics into bits.

> vise fish

'fish' matches no schematics

> vise digit

'digit' matches 22 schematics

> vise rom

'rom' matches 3 schematics

> vise 2 beer, 2 burger

(hashable quantity of dedigitizer schematic: cybeer is limited to 1 by availability in inventory)
Hashing dedigitizer schematic: cybeer
Hashing complete.
Hashing dedigitizer schematic: cyburger
Hashing dedigitizer schematic: cyburger
Hashing complete.

I think you'll like it. I need to write some more tests before I release it.

 
Did my first tests with OVERCLOCK (10).

- There is nothing in the html of the fight result saying this was a free fight. No FREEFREEFREE
- Nevertheless, the fight was free.
- I went through the turn-10 "HALF-WAY" noncombat- and it took no turn, as always.
- I took another fight and it took a turn.
The KoL bug fir that still exists.

FREEFREEFREE would be nice, but we can work around its absence,
 
The "vise" command to interact with the hashing vise is complete and released in r28289.

Code:
> vise 2 beer, 2 burger
(when I only had 1 beer schematic in inventory) logs in the session log like this:

Code:
use 1 hashing vise
vise dedigitizer schematic: cybeer
You acquire 0 (5)
You acquire 1 (11)
vise dedigitizer schematic: cyburger
You acquire 0 (15)
You acquire an item: 1
vise dedigitizer schematic: cyburger
You acquire an item: 0
You acquire 1 (15)

As it happens, that is exactly how it would have logged had you used the vise in the Relay Browser; hashing a schematic logs as if it were a 'vise' command.
 
I see that there are a number of skills that can only be used in the Cyber Realm.
They all have a "RAM Cost" - as opposed to MP or blue mana or HP or whatever other skill costs we have.

Code:
7542    Throw Cyber Rock
RAM Cost: 0

7543    Brute Force Hammer
RAM Cost: 3
brute force hammer equipped

7544    Inject Malware
RAM Cost: 1
malware injector equipped

7545    Encrypted Shuriken
RAM Cost: 2
encrypted shuriken equipped

7546    Refresh HP
RAM Cost: 1
wired underwear equipped

7547    Launch Logic Grenade
RAM Cost: 0
logic grenade in inventory

7548    Deploy Glitched Malware
RAM Cost: 0
glitched malware in inventory

7554    Thrust your geofencing rapier
RAM Cost: 7
geofencing rapier equipped?

You start with 3 RAM. There is stuff which will increase it.

Code:
Item    cybervisor    RAM: +3
Item    datastick    RAM: +1
Effect    Cyber Memory Boost    RAM: +3

That is a modifier we support.

- Does available RAM reset each turn? (I assume so)
- If you use a skill which costs RAM, does that decrease your available RAM until end of fight? (I assume so.)
- Can you use a RAM skill against a hacker? (I don't know, although, why would you? Normal combat works fine for them.)
- Do we care enough to support this: Track RAM in combat, add/remove combat skills based on available RAM, items, and equipment?

I'm not sure I personally care about this; with the tanktop and a Mu (Prismatic Damage +1) and throwing cyber rocks, combat against processes is completely trivial. But it's not my call to tell other people how to play.
 
- Does available RAM reset each turn? (I assume so)
- If you use a skill which costs RAM, does that decrease your available RAM until end of fight? (I assume so.)
- Can you use a RAM skill against a hacker? (I don't know, although, why would you? Normal combat works fine for them.)
- Do we care enough to support this: Track RAM in combat, add/remove combat skills based on available RAM, items, and equipment?
In order:

- Yes
- Yes
- No
- It might be nice to track available RAM in combat. Someone will, probably, be interested in scripting it eventually.
 
r28292 added counting _cyberFreeFights if you have OVERCLOCK(10) - before CDM added FREEFREEFREE
r28298 adjusted that, after CDM added FREEFREEFREE
29298 also adds support for all the CyberRealm combat skills.

One - Throw Cyber Rock uses no RAM and requires no equipment or items, and is always available in a Cyber Zone
Two - Launch Logic Bomb and Deploy Glitched Malware - use no RAM, but consume an item from inventory
Five - Brute Force Hammer, Inject Malware, Encrypted Shuriken, Refresh HP, Thrust your geofencing rapier - use available RAM and require a specific piece of equipment to be worn.

We now track the current value of RAM.
If you are not in combat, it is 3 + the current value of the "RAM" modifer, based on two possible equipment pieces and one status effect. Thus: from 3 - 10.
If you are in combat not in a Cyber Zone, it is irrelevant.
If you are in combat in a Cyber Zone, it is the initial value you started the fight with (3 + modifier), deducted, as appropriate, by skill usage.

ASH function my_ram() returns the value, for use in consult scripts.

Additionally, available_combat_skill($skill) will return true or false, as appropriate, if you can currently use the skill.

If you are not in combat, always false; you don't really have Cyber Skills unless you are in combat in a Cyber Zone.
If you are in a Cyber Zone fighting a hacker, false, since KoL doesn't make it available for you.
If you are in a Cyber Zone fighting a process, true or false depending on whether you have the appropriate item in inventory or equipment equipped, and whether you have enough RAM left to cast the skill. Again, this is consistent with what KoL displays for you.

If your script wants to cast skills with item or equipment dependencies, it is up to you to suit up appropriately first. (Nothing new there; same is true for EVERY item-granted skill. Use the Force, for example.)

Your consult script can use my_ram() and/or combat_skill_available() to choose actions.

This seems sufficient, to me. Different thoughts? Let's hear 'em.
 
Known things remaining:

1) The Half-Way choice has 4 different Encounters for each of the 5 Elements.
I've only seen 3, for "hot". I'll add that, when I see it or it appears on the Wiki.
r28302

2) If OVERCLOCK is fixed to no longer waste a free turn on a HalfWay choice - which is already free - adjust for that.

3) If CDM implements my suggestion - a "fun" message to indicate OVERCLOCK(10) made a turn free and/or has just expired - that will allow us to distinguish free turns from that source, as opposed to any other source you might be able to make happen in a CyberZone, if any.
Although, chances are, OVERCLOCK would still decrement. See #2.

4) The monsters scale differently depending on which zone they are in.
Additionally, although processes scale Atk and Def, they have fixed (modulo triangular distribution) for HP - also depending on zone.

I'll continue collecting data, although I'm essentially done with this new content - once I get the tattoo tomorrow - and will ascend in a few days to continue my yearly cycle of Standard ascensions.

Monster spading - and figuring out how to express it in monsters.txt - will continue only in aftercore, for me.
Others may be interested in stepping up. :)

I think it's time to return to my "shop.php" and ShopRow project, for allowing concoctions that make the same thing with different recipes
 
monster data:

Code:
Zone 1:

Hacker: scale: 3
Process: scale: 1
defense monster: HP: 45-60
normal monster: HP: 30-40

Zone 2:

Hacker: scale: 6
Process: scale: 4
defense monster: HP: 120-135
normal monster: HP: 75-90

Zone 3:

Hacker: scale: 9
Process: scale: 9
defense monster: HP: 300-375
normal monster: HP: 210-250
 
To be clear, I think that is the only thing we are missing for this content.
If you have something else, please speak up!
Thanks.
 
Ive noticed when auto-adventuring (aa cyber; outfit cyber , then setting auto adventure to 19 in cyber realm zone 1), mafia thinks that the zone has closed prematurely.
It will state the zone is no longer available when there are exactly 2 combats and the final NC left to go.
I can finish off the zone by adventuring in the relay browser.
(I know that there will not actually be 19 adventures to spend in zone 1, as I have the OVERCLOCK skill permed and garbo is now using those freefights. But that wouldn't explain why it is losing track of when the zone closes...)

Curious if this is a just me situation? I can attach a session log snippit tomorrow or Sat if helpful.
 
With Overclocked, the first 10 adventures are free.

Until/unless KoL fixes its bug, the (already free) half-way NC will use one of those.
After that, the next adventure - the first after the NC - will be the first to use a turn. The next 9 - including the final NC - will also use a turn.

My experience is that adventuring for 10 in zone 1 (with overclocked) will finish the zone with no extra turns spent.

Who is “losing track”? How are you “auto adventuring” for 19 turns? My experience is that if you use the GUI to adventure, it will actually try for 19 turns and, when it gets “you have already hacked this”, it will stop.

How are you adventuring? What script?
 
No script used when encountering the "area not available" abort.
Like I said, just setting auto adventure to 19 in the GUI.
Overshooting available adventures on purpose, expecting the abort to happen after the zone is finished, but it hits early, as mentioned.

I know that garbo is using up the free overclock advs hours earlier in the day. But I have no idea if its doing something that is leaving Mafia confused about when the zone will close.
 
OK. Here is the check for canAdventure() in a cyber zone:

Code:
    if (this.zone.equals("Server Room")) {
      if (Preferences.getBoolean("crAlways") || Preferences.getBoolean("_crToday")) {
        String property =
            switch (this.adventureNumber) {
              case AdventurePool.CYBER_ZONE_1 -> "_cyberZone1Turns";
              case AdventurePool.CYBER_ZONE_2 -> "_cyberZone2Turns";
              case AdventurePool.CYBER_ZONE_3 -> "_cyberZone3Turns";
              default -> null;
            };
        if (property != null) {
          return Preferences.getInteger(property) < 20;
        }
      }
      return false;
    }

Which is to say, it depends on the appropriate property - _cyberZone1Turns, _cyberZone2Turns, or _cyberZone3Turns - being less than 20.

My experience is that we accurately count adventures in the zone.

I conclude that garbo is doing ... something ... that is leaving the property higher than it should be.

Next time you have the chance, after you do your garbo thing, do "prefref _cyber" and see what those properties are set to.
 
cool, just finished up with a garbo session, and here is the result:


Name Value Default Scope

_cyberFreeFights

10

0
user

_cyberTrashCollected

true

false
user

_cyberZone1Defense

corruption quarantine
user

_cyberZone1Hacker

greenhat hacker
user

_cyberZone1Owner

Guinea Electrical
user

_cyberZone1Turns

10

0
user

_cyberZone2Defense

corruption quarantine
user

_cyberZone2Hacker

purplehat hacker
user

_cyberZone2Owner

Bill-River Writing Corp
user

_cyberZone2Turns

0

0
user

_cyberZone3Defense

parental controls
user

_cyberZone3Hacker

redhat hacker
user

_cyberZone3Owner

Tezuka Corpo-Export
user

_cyberZone3Turns

0

0
user
 
OK, that all looks good.

You SHOULD be able to auto-adventure via the GUI in zone 1 for 10 and it will stop without aborting and _cyberZone1Turns will be 20.

I don't use garbo, but I will try manually adventuring in zone 1 until I get the NC and will then adventure via the GUI and see how it behaves.
 
Back
Top