@@ -251,19 +251,21 @@ void roll_matrix_init(struct matrix_icon *icon)
251251 int init_dice = 1 ;
252252 if (icon->decker && icon->decker ->ch )
253253 {
254- // Matrix pg 18 & 24, available bonuses are response increase, reality filter, and hot asist
255- init_dice += GET_INIT_DICE (icon->decker ->ch ) + icon->decker ->response + (icon->decker ->reality ? 1 : 0 ) + (icon->decker ->asist [0 ] ? 1 : 0 );
256-
257254 if (icon->type == ICON_LIVING_PERSONA ) {
258- init_dice = MIN (5 , init_dice + GET_ECHO (icon->decker ->ch , ECHO_OVERCLOCK ));
255+ // Matrix pg 138 & 145, 4 dice with a possible +1 from overclock
256+ init_dice = 4 + (GET_ECHO (icon->decker ->ch , ECHO_OVERCLOCK ) ? 1 : 0 );
257+ // This is the living persona's matrix reaction, not response increase
258+ icon->initiative = icon->decker ->response ;
259+ } else {
260+ // Matrix pg 18 & 24, available bonuses are response increase, reality filter, and hot asist
261+ init_dice += icon->decker ->response + (icon->decker ->reality ? 1 : 0 ) + (icon->decker ->asist [0 ] ? 1 : 0 );
262+ icon->initiative = GET_REA (icon->decker ->ch ) + (icon->decker ->response * 2 ) + (icon->decker ->reality ? 2 : 0 ) + (icon->decker ->asist [0 ] ? 2 : 0 );
259263 }
260264
261265 // Apply Matrix 'trode net cap (max init dice 2d6)
262266 if (GET_EQ (icon->decker ->ch , WEAR_HEAD ) && IS_OBJ_STAT (GET_EQ (icon->decker ->ch , WEAR_HEAD ), ITEM_EXTRA_TRODE_NET )) {
263267 init_dice = MIN (init_dice, 2 );
264268 }
265-
266- icon->initiative = GET_REA (icon->decker ->ch ) + (icon->decker ->response * 2 ) + (icon->decker ->reality ? 2 : 0 ) + (icon->decker ->asist [0 ] ? 2 : 0 );
267269 } else
268270 {
269271 icon->initiative = icon->ic .rating ;
@@ -564,12 +566,12 @@ bool do_damage_persona(struct matrix_icon *targ, int dmg)
564566{
565567 if (targ->type == ICON_LIVING_PERSONA ) {
566568 // It's an otaku! They get to suffer MENTAL DAMAGE!
567- // targ->condition seems to be 1-10 scale, while ch mental wounds seems to be 1-100. Multiply by ten.
568-
569569 // damage() returns TRUE if the target has been deleted from memory, so when this function returns true, we must bail out of everything immediately.
570570 if (damage (targ->decker ->ch , targ->decker ->ch , dmg, TYPE_BLACKIC , MENTAL ))
571571 return TRUE ;
572572
573+ // targ->condition is 0-10 scale, while ch mental wounds is 0-100.
574+ targ->condition = GET_MENTAL (targ->decker ->ch ) / 10 ;
573575 return FALSE ;
574576 }
575577 targ->condition -= dmg;
@@ -1474,9 +1476,11 @@ ACMD(do_matrix_score)
14741476 " Masking:^B%3d^n Sensors:^B%3d^n\r\n "
14751477 " ^cDeck Status:^n\r\n "
14761478 " Hardening:^g%3d^n MPCP:^g%3d^n\r\n "
1477- " IO Speed:^g%4d^n Response Increase :^g%3d^n\r\n " ,
1479+ " IO Speed:^g%4d^n %s :^g%3d^n\r\n " ,
14781480 DECKER ->bod , DECKER ->evasion , DECKER ->masking , DECKER ->sensor ,
1479- DECKER ->hardening , DECKER ->mpcp , DECKER ->deck ? GET_CYBERDECK_IO_RATING (DECKER ->deck ) : 0 , DECKER ->response );
1481+ DECKER ->hardening , DECKER ->mpcp , DECKER ->deck ? GET_CYBERDECK_IO_RATING (DECKER ->deck ) : 0 ,
1482+ (ch->persona ->type == ICON_LIVING_PERSONA ) ? " Matrix Reaction" : " Response Increase" ,
1483+ DECKER ->response );
14801484 }
14811485
14821486 if (HAS_HITCHER_JACK (DECKER ->deck )) {
@@ -2925,7 +2929,9 @@ ACMD(do_decrypt)
29252929
29262930 // If there's nothing to decrypt, there's nothing to succeed at.
29272931 if (!matrix[PERSONA ->in_host ].stats [mode][MTX_STAT_ENCRYPTED ]) {
2928- send_to_icon (PERSONA , " The %s subsystem doesn't seem to be encrypted.\r\n " , mtx_subsystem_names[mode]);
2932+ send_to_icon (PERSONA , " The local %s subsystem doesn't seem to be encrypted.\r\n " , mtx_subsystem_names[mode]);
2933+ if (PRF_FLAGGED (ch, PRF_SEE_TIPS ) && (mode == ACIFS_ACCESS ))
2934+ send_to_icon (PERSONA , " [OOC: To decrypt a remote host's SAN, try ^WDECRYPT <HOST>^n.]\r\n " );
29292935 return ;
29302936 }
29312937
0 commit comments