void RunHotspotInteraction (int hotspothere, int mood) { int passon=-1,cdata=-1; if (mood==MODE_TALK) passon=4; else if (mood==MODE_WALK) passon=0; else if (mood==MODE_LOOK) passon=1; else if (mood==MODE_HAND) passon=2; else if (mood==MODE_PICKUP) passon=7; else if (mood==MODE_CUSTOM1) passon = 8; else if (mood==MODE_CUSTOM2) passon = 9; else if (mood==MODE_USE) { passon=3; cdata=playerchar->activeinv; play.usedinv=cdata; } if ((game.options[OPT_WALKONLOOK]==0) & (mood==MODE_LOOK)) ; else if (play.auto_use_walkto_points == 0) ; else if ((mood!=MODE_WALK) && (play.check_interaction_only == 0)) MoveCharacterToHotspot(game.playercharacter,hotspothere); // can't use the setevent functions because this ProcessClick is only // executed once in a eventlist char *oldbasename = evblockbasename; int oldblocknum = evblocknum; evblockbasename="hotspot%d"; evblocknum=hotspothere; if (thisroom.hotspotScripts != NULL) { if (passon>=0) run_interaction_script(thisroom.hotspotScripts[hotspothere], passon, 5, (passon == 3)); run_interaction_script(thisroom.hotspotScripts[hotspothere], 5); // any click on hotspot } else { if (passon>=0) { if (run_interaction_event(&croom->intrHotspot[hotspothere],passon, 5, (passon == 3))) { evblockbasename = oldbasename; evblocknum = oldblocknum; return; } } // run the 'any click on hs' event run_interaction_event(&croom->intrHotspot[hotspothere],5); } evblockbasename = oldbasename; evblocknum = oldblocknum; }
void RunCharacterInteraction (int cc, int mood) { if (!is_valid_character(cc)) quit("!RunCharacterInteraction: invalid character"); int passon=-1,cdata=-1; if (mood==MODE_LOOK) passon=0; else if (mood==MODE_HAND) passon=1; else if (mood==MODE_TALK) passon=2; else if (mood==MODE_USE) { passon=3; cdata=playerchar->activeinv; play.usedinv=cdata; } else if (mood==MODE_PICKUP) passon = 5; else if (mood==MODE_CUSTOM1) passon = 6; else if (mood==MODE_CUSTOM2) passon = 7; evblockbasename="character%d"; evblocknum=cc; if (game.charScripts != NULL) { if (passon>=0) run_interaction_script(game.charScripts[cc], passon, 4, (passon == 3)); run_interaction_script(game.charScripts[cc], 4); // any click on char } }