Minifly's quest showcase

8 posts / 0 new
Last post
minifly's picture
minifly
Quest Developer
Joined:
2022-12-11 22:16
Last seen:
1 month 6 days ago

Posting my progress so far. The writing is pretty much done, the scripts are still WIP.

 

Table doc with journal, dialogue, and dialogue results script

https://docs.google.com/spreadsheets/d/1tid2bYxcfokqJOgzpCgqAC7vUDNPRdig...

 

Text doc with general infos and NPC script (at the end).

https://docs.google.com/document/d/1V2fwrFtLgxwUkvx50-KsfYGgcWsOZMpraIjv...

 

Pitch

The questgiver, Dunmer trader Fari Niernis, wants Imperial noble Hyrmiel Farragian gone from Darvonis. Farragian arrived some weeks ago, claiming to be on a mission from the Imperial Legion to secure the roads and facilitate trade. He has been butchering so much of the surrounding wildlife that hunters, and trade in Darvonis as a whole, begins to suffer. Niernis thinks Farragian is an impostor, and offers the PC to get rid of the fool for some cash. She suggests to lead him on a dangerous cave crawl to scare him off.

 

Upon talking to Farragian, it becomes evident the man is so full of himself he doesn’t (want to) see the harm he causes to the population he thinks he serves. Farragian also has a not-so-hidden interest in taxidermy. He sends some of his kills to Old Ebonheart to have them stuffed, and sent to his family’s estate in Colovia [I might try to find an appropriate trader in OE to fill that role and give some dialogue once the quest is over]. PC convinces Farragian to go to the cave by telling him there are rare creatures to hunt, that would make a nice prize for his collection, in addition to make the people safer, of course!

 

1. If PC kills Farragian after having talked to Niernis about it, she is pissed and gives a smaller gold reward.

2. If PC goes on a cave crawl with Farragian, he panics once he has spent some time in the cave (killing enough Venomous Parastylus or going under a certain health threshold), and wants to go home, offering PC his enchanted crossbow. Niernis is thrilled, and offers bigger gold reward and increased disposition with every Darvonis NPC.

3. If PC goes to Old Eboheart inquiring to guards about Legion impostors, he will get directed to captain Maurissha, who will promptly jail Farragian. Niernis is thrilled, and offers the same reward as 2.

minifly's picture
minifly
Quest Developer
Joined:
2022-12-11 22:16
Last seen:
1 month 6 days ago

I've implemented everything in the CS, and I have a number of issues, mainly related to - you guessed it - scripting. I copied my whole NPC script in spoilers below. I'd be grateful if someone could take a look at it and explain to me what I did wrong, especially regarding the following points:

 

I'm running into a first series of troubles when the PC first talks with the quest NPC I've created (TR_m3_q_Farragian, with TR_m3_ScNPC_Farragian script attached), and triggers a series of error messages when opening the dialogue window - which I can safely ignore:

- first one is "Script error: EXPRESSION in TR_m3_ScNPC_Farragian";

- second one is "Left eval";

- third one is "==> CompileAndRun problem was found in Greetings, "Greeting 5", "[text of the greeting displayed at that very moment in the dialogue window, with result scripts working correctly]".

 

The script below has two commands moving the quest NPCs I created. One "position" and one "positioncell" at the very end, that are both very bugged:

- "position" disables the npc on the spot while in dialogue, and running "placeatpc" doesn't bring it back (which prevented me to test the other parts of the script);

- the "positioncell" ifblock doesn't run at all: no npc movement, no removitems.

 

Here's the NPC scipt in spoilers (sorry the forum doesn't seem to display the indents) and in the following googledoc: https://docs.google.com/document/d/1KW2hmZ26wr8c7Khf4uApDzhszRSOfTV2KoCb...

Spoiler: Highlight to view

BEGIN TR_m3_ScNPC_Farragian

;involved in Darvonis misc TR_m3_Dar_Farragian

 

Short NoLore

Short T_local_NPC

Short T_local_NoLore

short TR_Map

short doOnce

short control

short controlQ

float GameHourCheck

 

if ( TR_Map != 3 )

     set TR_Map to 3

endif

 

;OnDeath Journal updates

 

if ( OnDeath == 1 )

     if ( GetJournalIndex TR_m3_Dar_Farragian == 5 )

     Journal TR_m3_Dar_Farragian 6

     elseif ( GetJournalIndex TR_m3_Dar_Farragian >= 10 )

     Journal TR_m3_Dar_Farragian 60

    endif

endif

 

;moving Farragian to Maesabun cave

 

if ( doOnce == 0 )

     if ( GetJournalIndex TR_m3_Dar_Farragian != 20 )

     return

     elseif ( CellChanged )

     if ( GetInterior )

     Position 141228.391,160024.359,182.757,5400

     set doOnce to -1

     return

     endif

     else

     set GameHourCheck to ( ( GameHour - GameHourCheck ) * 30 / TimeScale )

     if ( GameHourCheck < 0 )

     set GameHourCheck to ( -1 * GameHourCheck )

     endif

     if ( GameHourCheck < 0.01 )

     if ( GetDistance, player < 6500 )

     return

     endif

     endif

     Position 141228.391,160024.359,182.757,5400

     set doOnce to -1

    endif

     endif

set GameHourCheck to GameHour

 

;forcegreet inside Maesabun cave

 

if ( GetJournalIndex TR_m3_Dar_Farragian != 20 )

    return

elseif ( GetPCCell TR_SS06_Cave_01 == 1 )

     if ( GetDistance Player <= 1024 )

     if ( GetLOS Player == 1 )

     if ( GetHealthGetRatio 0.3 )

     ForceGreeting

     return

     elseif ( TR_m3_q_ParaVn_Darmisc->OnDeath )

     if ( GetDeadCount TR_m3_q_ParaVn_Darmisc >= 3 )

     ForceGreeting

     endif

     endif

     endif

     endif

endif

 

;forcegreet outside Maesabun cave

 

if ( GetJournalIndex TR_m3_Dar_Farragian != 30 )

     return

elseif ( GetJournalIndex TR_m3_Dar_Farragian == 30 )

     if ( CellChanged )

     if ( GetDistance Player <= 1024 )

     if ( GetLOS Player == 1 )

     ForceGreeting

     endif

     endif

     endif

endif

 

;disabling Farragian after cave crawl

 

if ( GetJournalIndex TR_m3_Dar_Farragian != 35 )

     return

elseif ( GetDisabled )

     return

elseif ( CellChanged )

     if ( GetInterior )

     Disable

     return

     else

     set GameHourCheck to ( ( GameHour - GameHourCheck ) * 30 / TimeScale )

     if ( GameHourCheck < 0 )

     set GameHourCheck to ( -1 * GameHourCheck )

     endif

     if ( GameHourCheck < 0.01 )

     if ( GetDistance, player < 6500 )

     return

     endif

     endif

     Disable

     endif

endif

set GameHourCheck to GameHour

 

;jailing Farragian after ratting on him

 

if ( doOnce <= 0 )

     if ( GetJournalIndex TR_m3_Dar_Farragian != 40 )

     return

     else

     PositionCell 50.581,8489.313,1237.667,5400, "Ebon Tower, Legion: Dungeons"

     AiWander 0 0 0 0 0 0 0 0 0 0 0 0

     removeitem silver_helm 1

     removeitem silver_cuirass 1

     removeitem T_Imp_Silver_PauldronL_01 1

     removeitem T_Imp_Silver_PauldronR_01 1

     removeitem T_Imp_Silver_Greaves_01 1

     removeitem T_Imp_Silver_Boots_01 1

     removeitem T_Imp_Silver_BracerL_01 1

     removeitem T_Imp_Silver_BracerR_01 1

     removeitem "silver claymore" 1

     removeitem TR_m3_q_PoachersCrossbow 1

     removeitem "steel bolt" 50

     removeitem "silver bolt" 30

     set doOnce to 1

     endif

endif

 

End

AttachmentSizeDate
Binary Data TR_SS06_Cave_01_V2.ESP24.61 KB2023-11-21 22:01
Binary Data Minilfy_Quest_Showcase.ESP54.4 KB2023-11-21 22:01
minifly's picture
minifly
Quest Developer
Joined:
2022-12-11 22:16
Last seen:
1 month 6 days ago

EDIT 06/12:

Cleaned dependencies with Wrye Mash. Or tried to, at least. Also uploaded the version of Sundered Scar I worked with, if that's any help.

 

EDIT 28/11:

Uploaded version 1.2 with typo fix, an attempt to implement correct filters for latest rumors (see bottom of the spreadsheet) and AIWander fix to keep an indoors-NPC still.

 

EDIT 27/11:

Uploaded version 1.1 to implement FlinSunset's corrections to Journal and scripts (modifications outlined in yellow in the google docs).

+ minor edits (creature placement, NPC hair)

 

My showcase is ready for review.

Dialogue & results scripts spreadsheet:

https://docs.google.com/spreadsheets/d/1tid2bYxcfokqJOgzpCgqAC7vUDNPRdig...

Objects and locations recap, IDs, non-dialogue scripts:

https://docs.google.com/document/d/1V2fwrFtLgxwUkvx50-KsfYGgcWsOZMpraIjv...

Quest starts by talking to Fari Niernis in the Darvonis ash market (TR_Darvonis_1). "Optional" quest start if the player talks to Hyrmiel Farragian in the Innside Out (TR_Darvonis_12), at which point Darvonis residents will point PC to Fari Niernis.

In the CS, everything should be quickly found using "show modified only", except Greetings 1 and 5 that are near the bottom of the list.

The area where the quest happens is still indev: Darvonis is not NPCed, exteriors are unfinished, and I think the version of the cave I have is the old one, rather than the refitted one with sulfur pools. This prevents me to present a quest ready for implementation, but I do hope it can satisfy the showcase requirements still.

To circumvent this:

- I placed the questgiver in the int semi-randomly (not in front of her shop) and I created two dummy NPCs in Darvonis - one Dunmer and one not - to test for "latest rumors";

- I placed venomous parastylus a bit stacked at the entrance of the cave, for easier testing (the cave quickly has a plateform over lava that is hard to get through with a companion);

- it is not possible to follow quest directions in dialogue to the cave: there are no roadsigns yet, and the track to the cave is interrupted halfway at the border between SS04 (Darvonis) and SS05.

 

AttachmentSizeDate
Binary Data TR_SS06_Cave_01_V2.ESP24.61 KB2023-11-24 23:28
Binary Data TR_Sundered_Scar_v0006.esp4.75 MB2023-12-06 14:39
Binary Data Minilfy_Quest_Showcase_v1.2_cleaned.ESP50.25 KB2023-12-06 14:39
pralec's picture
pralec
Senior DeveloperWriting ReviewerExterior DeveloperQuest Reviewer
Joined:
2022-04-18 15:48
Last seen:
9 hours 28 min ago

Really nice work on this showcase! It's clear you've put a lot of effort in, including filling in dialogue for the world and characters around the central figures. That's always appreciated, and helps to make the world feel more real and connected. Your writing is very good, with an excellent sense of rhythm to keep it interesting. There are just some grammatical and phrasing issues which I've noted below. Your scripting is functional too, which is great, but it needs some work on its goals in order to be more resilient to the actions of the player.

Detailed dialogue notes:

  • quite in a predicament -> in quite a predicament
  • with this outlander slaughtering the wildlife -> what with this outlander slaughtering the wildlife
  • Hello %PCRace! -> Hello, %PCRace!
  • Hyrmiel Farragian's the name -> Hyrmiel Farragian's his name
  • A gallivanting fool -> The gallivanting fool
  • He has been slaughtering -> He's been slaughtering
  • "to make the roads safer" he says -> "to make the roads safer," he says
  • to make ends meet... -> to make ends meet.
  • Hunting is a key part of our business -> this feels rather low stake and awkardly phrased. Hunting isn't just about business either, it's about survival.
  • he is boasting -> he's boasting
  • in his shiny armor -> about his latest "victory".
  • I'm a skooma dealer from the streets of Senchal -> should probably be a more local-to-Morrowind reference. Like "I'm the Indoril of the House of Keys"
  • The Legion should be -> The Imperial dogs should be
  • why are we paying those taxes for -> what are we paying those taxes for (but in a place like Darvonis, where Imperial influence is less felt, I think the residents can go even harder agains the Empire than "I don't like taxes". Like "why are we supposed to bow and scrape before them like they're somehow superior?")
  • No one else does really. -> No one else does.
  • If Hyrmiel Farragian isn't out of here soon, there will be nothing else for us to hunt! -> If somebody doesn't do something about Hyrmiel Farragian soon, there'll be nothing left for us to hunt!
  • He's getting on your nerves too, I see. Well %PCRace, do you want to make Darvonis a better place? -> Well, %PCRace, do you want to make Darvonis a better place?
  • Surely, a knight as noble as Hyrmiel Farragian could not stay idle in front of such a threat -> Surely a knight as noble as Hyrmiel Farragian could not stay idle before such a threat.
  • Seriously though, the place -> Seriously, though, the place
  • maybe it will frighten him enough to leave us be -> maybe it will frighten him enough to send him packing.
  • Just try to get neither of you killed -> Just try not to get him killed.
  • Outlanders dying tend to bring the wrong kind of Imperial attention -> Dead outlanders will just land us with more Imperial blowhards interfering with our business.
  • my ears are full of his insufferable bloating -> my ears are full of his insufferable boasting
  • personal kink for exotic taxidermy, admittedly... -> penchant for exotic taxidermy, admittedly.
  • parastylus myself; even -> parastylus myself, even
  • You piqued my curiosity -> You have piqued my curiosity
  • And I certainly can not -> And I certainly can't/shan't
  • as long as -> so long as
  • when you will be ready -> when you are ready
  • When we will be facing the untold dangers -> When we are facing the untold dangers
  • strength the Colovian Legion -> strength the Imperial Legion
  • Are we in Peryite's dreaded pits?! In Dagon's wretched gut?!! Between Namira's stinking toes?!!! -> Are we in Peryite's dreaded pits!? In Dagon's wretched gut!? Between Namira's stinking toes!?
  • I cannot take it anymore, %PCName... -> I can't take it anymore, %PCName.
  • sulfur pools?! -> sulfur pools!?
  • I long for the verdant hills of my homeland... -> How I long for the verdant hills of my homeland.
  • Take it with the Imperial Legion in Old Ebonheart -> Take it up with the Imperial Legion in Old Ebonheart
  • Take it with Captain Maurissha -> Take it up with Captain Maurissha
  • A few guards from the Legion came in Darvonis not long ago -> A few guards from the Legion visited Darvonis not long ago
  • I rather elected to join the Imperial Legion... And here I am! -> I instead elected to join the Imperial Legion... and here I am!
  • The guy just wanted to hunt, send the trophies to his family’s estate in Colovia, -> The guy just wanted to hunt. He sent all the trophies to his family’s estate in Colovia,
  • Dreadful place... And the smell! -> Dreadful place. And the smell!
  • I wonder... What kind of beast one would expect to find in theses caves? -> I wonder... What kind of beast would one expect to find in theses caves?
  • Let us move forward. -> Let's get on with it.
  • I am swore to protect these humble folk -> I am sworn to protect these humble folk
  • a bit of accounting... And hunting, of course -> a bit of accounting. And hunting, of course
  • where they were... Maybe next year -> where they were. Maybe next year

Other notes

  • The Hyrmiel Farragian topic should give you directions on where to find him in Darvonis after you've accepted the quest.
  • Should probably set Hyrmiel's flee value to 100
  • Farragian should either be closer to the dungeon entrance, or should give directions to it when you meet with him.
  • The global which activates Farragian's forcegreeting should probably be >= 3, rather than == 3
  • Dialogue entries are ordered wrong. Later entries should be at the top of the list.
  • The mover in captain Maurissha's dialogue isn't going to work, since it's checking if the PC is in Darvonis, and they will not be in Darvonis when speaking to captain Maurissha. Also you've got a = instead of a ==. Nevertheless, this is the right place to do the moving, rather than in a script on Farragian
  • You're using NoLore wrong on the Latest Rumor. It should be "Not Local T_Local_NoLore == 0".
  • I wonder if Hyrmiel's dialogue could be altered a little bit even before going into Maesabun to indicate that he's scared?
  • All the dialogue which is not filtered to a specific NPC needs the Not Local T_Local_NoLore filter
  • What's your plan for if the player has already killed all the Parastylus in Maesabun? Or if the player races ahead of Farragian and kills all the Parastylus where he can't see the player? That would lead to the global not being incremented, and the player basically getting stuck unless they beat Farragian half to death inside Maesabun themselves. Or they would have to take Farragian with them to Old Ebonheart, which also has its own problems. I think once Farragian has moved to the proximity of Maesabun, you should make it so he won't follow the player outside a certain radius of the cave. You can do that using an activator that you place outside the cave. Take a look at how it was done for the Sword of Taldeus quest in the Firewatch Imperial Cult questline. You should also make it so the global increments regardless of whether Farragian can see the player in Maesabun.
  • Don't have the journal update for the player meeting Farragian, or for the player hearing about him from Fari Niernis. It should update for the first time when the player agrees to help Fari.
minifly's picture
minifly
Quest Developer
Joined:
2022-12-11 22:16
Last seen:
1 month 6 days ago

EDIT 11/01: uploaded v 2.2 with dialogue tweaks, mainly rumor filtering.

 

Here is v2 of my quest showcase and the updated documents. For easier reviewing, here’s the key to spot the changes since review:

- yellow outline for changes in the scripting doc;

- yellow cells for new lines of dialogue in the dialogue doc.

Next are a few comments for when I took liberties from the reviewer’s advice or for easier tracking of scripting changes.

Scripting doc: https://docs.google.com/document/d/1V2fwrFtLgxwUkvx50-KsfYGgcWsOZMpraIjv...

Dialogue doc: https://docs.google.com/spreadsheets/d/1tid2bYxcfokqJOgzpCgqAC7vUDNPRdig...

 

Remaining issues:

- I think my latest rumors aren’t working: can I please have a course on rumor filtering?

- talking to Farragian before talking to Niernis somehow makes the “Hyrmiel Farragian” topic available when talking to Niernis, when it should only be available once clicking the “slaughtering the wildlife” topic. Clicking the former before clicking the latter starts the dialogue sequence that might start the quest, without the background provided by the “slaughtering the wildlife” topic.

 

Writing correction notes:

  • I'm a skooma dealer from the streets of Senchal -> should probably be a more local-to-Morrowind reference. Like "I'm the Indoril of the House of Keys"

=> went with “I’m Indoril Nerevar reborn”.

  • in a place like Darvonis, where Imperial influence is less felt, I think the residents can go even harder agains the Empire than "I don't like taxes". Like "why are we supposed to bow and scrape before them like they're somehow superior?"

=> went with “What good are those armies of dumb troopers and dull pen-pushers if they can’t enforce their own law upon their own people?”

  • The guy just wanted to hunt, send the trophies to his family’s estate in Colovia, -> The guy just wanted to hunt. He sent all the trophies to his family’s estate in Colovia,

=> cut the sentence differently: “The guy just wanted to hunt and send all the trophies to his family’s estate in Colovia. He practically starved the whole town as a result.”

  • Set Hyrmiel's flee value to 100 and alter his dialogue to make him more scared.

=> I’ve added dialogue in the tavern and before the cave foreshadowing Hyrmiel flipping out, but I don’t want him to be a complete wimp. He’s supposed to be a good hunter that has been successfully killing creatures in the wilds around Darvonis for some weeks now. He’s not half the fighter he pretends to be, and he’s being burnt out by the harsh living conditions in Sundered Scar: the little cave trek PC lures him in is the straw that breaks the camel’s back.

=> That’s something I changed from quest design when I started to write his character. If Farragian is such a weakling, how come his hunting is so effective it disrupts the local wildlife and economy? That’s why I toned down the cowardliness & ramped up the “self-interest covered in self-righteousness” and aversion to discomfort to motivate his actions.

 

Scripting correction notes:

  • The mover in captain Maurissha's dialogue isn't going to work, since it's checking if the PC is in Darvonis, and they will not be in Darvonis when speaking to captain Maurissha.

=> Maurissha's dialogue now starts a global script like the one moving Farragian from the tavern to the cave.

  • What's your plan for if the player has already killed all the Parastylus in Maesabun?

=> I disabled the parastylus through the unique creature's local script, and enabled them through the global script that moves Farragian to the entrance of the cave.

  • Or if the player races ahead of Farragian and kills all the Parastylus where he can't see the player?

=> edited the killcount and forcegreeting conditions in the creature’s local script.

  • I think once Farragian has moved to the proximity of Maesabun, you should make it so he won't follow the player outside a certain radius of the cave.

=> Ripped the FW IC quest as you advised, and modified it slightly (when I copied it outright, the radius limit worked only once).

  • The journal should update for the first time when the player agrees to help Fari

=> I used the extra journal entries to have the questgiver change their greeting and dialogue if the player first refuses the quest. I’m using “talk to pc” dialogue function for the greeting, and a global variable for the quest offer (topic “Hyrmiel Farragian”).

  • Full name in Farragian’s ID.

=> I didn’t change it, since 1. it doesn’t fit the character limit; 2. the “_q_” part is enough to make him unique; 3. I’m lazy.

AttachmentSizeDate
Binary Data Minilfy_Quest_Showcase_v2.1_cleaned.ESP53.08 KB2024-01-05 16:21
Binary Data Minilfy_Quest_Showcase_v2.2_cleaned.ESP52.45 KB2024-01-11 22:55
pralec's picture
pralec
Senior DeveloperWriting ReviewerExterior DeveloperQuest Reviewer
Joined:
2022-04-18 15:48
Last seen:
9 hours 28 min ago

Thank you for the massive changes. You've done really well to develop on your scripts. Unfortunately the script to check the distance of Farragian to the cave, and have him walk back, isn't working -- at least on the Vanilla engine. After the forcegreeting, he just stands there, which then breaks the quest because when I try to get him to follow again he automatically forecegreets and stops following. I think it might be because the pathfinding around the cave is super-broken, maybe because of the sulfur activator. But also he doesn't even try to start walking towards the cave entrance, so there might be something else going on here. More testing is needed.

However I think another alternative would be to change the scripted solution so instead of controlling his follow distance, you just make him not start following until you're both inside Maesabun, and after you greet him outside Maesabun he will positioncell into Maesabun once the player enters the location. You've already demonstrated a clear understanding of positioning scripts, and this one is only slightly more complicated, so it shouldn't be too hard to make it work. I think this would be a more elegant solution than the previous one I gave you.

Make this change and if nothing else breaks I reckon you'll have passed the showcase.

minifly's picture
minifly
Quest Developer
Joined:
2022-12-11 22:16
Last seen:
1 month 6 days ago

Here is v3!

I deleted the "activator" solution, and instead used a global script triggered by Farragian's greeting in front of the cave. Copying it here because I won't update my design docs:

BEGIN TR_m3_Dar_Farragian_mover3

If ( GetPCCell "Maesabun, Obalus Burial" == 1 )

TR_m3_q_Farragian->PositionCell 4142 1638 11087 90 "Maesabun, Obalus Burial"

TR_m3_q_Farragian->AIFollow player 0 0 0 0

Stopscript TR_m3_Dar_Farragian_mover3

Endif

END

 

Now, I guess the player could go out of the cave before triggering the next stage of the quest and have Farragian follow him around everywhere: should I cover for this too? I have an idea but it would involve the above script to add another journal entry, and then add the following ifblock to the NPC script:

if ( GetJournalIndex TR_m3_Dar_Farragian == 22 )

if ( Getinterior == 1 )

return

elseif

Forcegreeting

endif

endif

With AIWander in the Forcegreeting's dialogue result.

 

Other questions I asked myself during my showcase but didn't really impede my progress:

- I wasn't sure where to put my greetings or my "common topics" (my trade, latest rumors, background): between the relevant placeholders, but at the top or at the bottom? And is there a way to quickly find the dialogue placeholders (BEGIN M3 DARVONIS for example)? Because they're a bit of a pain to look for.

- is the documentation provided (google docs, script comments in NPC local script) any use to a reviewer, or is it too much/useless?

AttachmentSizeDate
Binary Data Minilfy_Quest_Showcase_v3_cleaned.ESP51.88 KB2024-01-13 18:12
pralec's picture
pralec
Senior DeveloperWriting ReviewerExterior DeveloperQuest Reviewer
Joined:
2022-04-18 15:48
Last seen:
9 hours 28 min ago

That's a good point. Potentially you could edit the exit door so when it gets activated Farragian stops following you while he's inside.

At this point however I think you've more than demonstrated a capacity for scripting, writing, and dialogue ordering to pass your showcase.

On the subject of topics, generally it's best to put your unique dialogue higher in the list between the placeholders. If you want to find a placeholder, you can use Edit > Find Text to search for it and then double-click on the entry in the Find Text window to jump to it in the dialogue window.

With the ability to show only edited records, CSSE makes your esp a good enough database for understanding everything you're doing. I personally don't use google docs to track my work. I don't find them especially useful as a reviewer either.