Heart of Ahriman hack (trunk only)
From a four year old news posting: hero was levitating via #invoke
on the Heart of Ahriman, then dropping that artifact yielded:
You drop a gray stone named The Heart of Ahriman.
You float gently to the floor.
A gray stone named The Heart of Ahriman hits the floor.
That might be strictly correct, assuming that both hero and stone fall at
the same speed; if the stone was dropped from perhaps waist height then
the hero's feet would touch first. But it looks strange, like a cartoon
where something hangs in midair until someone notices that it should fall.
Removing the artifact from inventory causes the #invoke property to
toggle off. Unfortunately it has to be done here before the object can
be placed at its destination. Modifying message order seemed unviable;
this fix fiddles with the Levitation property in order to defer hero's
descent until after object handling is finished. Now same setup gives:
You drop a gray stone named The Heart of Ahriman.
A gray stone named The Heart of Ahriman hits the floor.
You float gently to the floor.
You see here a gray stone named The Heart of Ahriman.
This commit is contained in:
@@ -78,6 +78,7 @@ E int FDECL(disp_artifact_discoveries, (winid));
|
||||
E boolean FDECL(artifact_hit, (struct monst *,struct monst *,
|
||||
struct obj *,int *,int));
|
||||
E int NDECL(doinvoke);
|
||||
E boolean FDECL(finesse_ahriman, (struct obj *));
|
||||
E void FDECL(arti_speak, (struct obj *));
|
||||
E boolean FDECL(artifact_light, (struct obj *));
|
||||
E long FDECL(spec_m2, (struct obj *));
|
||||
|
||||
Reference in New Issue
Block a user