Bug #223
closedPlatinum Slivers don't seem to work at Oracle
0%
Description
If you could take a look at this one, I'd greatly appreciate it. Lost two platinum slivers this way so far.
You can't go that way.
drop duster
You drop the Kaoustic knuckle duster.
drop sliver
You drop a platinum sliver.
touch oracle
As you touch the water of the oracle, the sliver melts, coating the platinum sliver with a fine
layer of platinum!
An error has occurred. Please use the 'bug' command to report it.
You touch the surface of the great oracle, but nothing happens.
You feel around for something.
1> l
You look around.
The grotto of the great oracle [e]
A great spring sits directly in the center of this tremendous grotto. From its warm surface a
heavy mist is born, which flows gently eastward. From beneath its peaceful waters a strong light
grows and emerges. The great oracle is certainly an amazing creation, more beautiful than
anything in existance.
There is nothing but the silence of peace.
The Kaoustic knuckle duster is here.
Attendant of the oracle
Last Error (might not be relevant to the report):
*Bad argument 1 to EFUN call_other()
Expected: object, string, array, Got: int(0).
Object: /domains/Ocean/falls/room/ogrotto at line 279
#0: '<fake>' at /secure/save/players/g/glade (/<driver>) at /(fake):0
#1: 'cmdAll' at /secure/save/players/g/glade (/lib/command.c) at line 88
#2: 'do_touch_wrd' at /verbs/items/touch at line 71
#3: 'eventTouch' at /domains/Ocean/falls/room/ogrotto (/lib/touch.c) at line 81
#4: 'GetTouch' at /domains/Ocean/falls/room/ogrotto (/lib/touch.c) at line 67
#5: '<fake>' at /domains/Ocean/falls/room/ogrotto (/<driver>) at /(fake):0
#6: 'touchOracle' at /domains/Ocean/falls/room/ogrotto at line 118
#7: 'PlatinumPlatedWeapon' at /domains/Ocean/falls/room/ogrotto at line 279
Updated by ion 16 days ago
I reproduced this with platinum and electrum, so it isn't specific to the metal.
I noticed that the array of weapons are based on the user's inventory if I'm reading the code right, rather than what weapons have been dropped on the floor.
I dropped a weapon on the floor and had an unwielded weapon in my hand of the same type. When touching the oracle in that scenario it worked.
Updated by ion 16 days ago
ion wrote in #note-1:
I reproduced this with platinum and electrum, so it isn't specific to the metal.
I noticed that the array of weapons are based on the user's inventory if I'm reading the code right, rather than what weapons have been dropped on the floor.
I dropped a weapon on the floor and had an unwielded weapon in my hand of the same type. When touching the oracle in that scenario it worked.
No that's not it. I tried again with platinum and a weapon with my inventory empty and it worked. There's something else going on. It seems inconsistent.
Updated by Hilapdatus 16 days ago
ยท Edited
As you touch the water of the oracle, the sliver melts, coating the platinum sliver with a fine layer of platinum!
The issue here is that the Oracle selects a random weapon from the rooms inventory, EVERY object is a weapon in Dreamverse, and the random weapon selected was the platinum sliver.
In the code, the modified weapon is cloned, the metal used for the gilding is dest'd, and then the original weapon is dest'd. In this case, the platinum sliver is both the metal and the weapon and the code tries to dest it twice which generates the error.
I modified the code which identifies all weapons in the room so that it'll filter out and ignore all "default" weapons with a WeaponClass of 1.
Updated by Hilapdatus 16 days ago
- Status changed from New to Closed