May be this variant with grouping will do the thing?
df = df.assign(grp=df[0].str.contains(r"\++").cumsum())
res = df.groupby("grp").apply(lambda x: x.iloc[-3,2]
if "truck" in x[1].values
else None,
include_groups=False).dropna()